| ... | ... | @@ -1673,6 +1673,7 @@ pub fn mustLower(air: Air, inst: Air.Inst.Index, ip: *const InternPool) bool { |
| 1673 | 1673 | const data = air.instructions.items(.data)[@intFromEnum(inst)]; |
| 1674 | 1674 | return switch (air.instructions.items(.tag)[@intFromEnum(inst)]) { |
| 1675 | 1675 | .arg, |
| 1676 | .assembly, |
| 1676 | 1677 | .block, |
| 1677 | 1678 | .loop, |
| 1678 | 1679 | .repeat, |
| ... | ... | @@ -1879,14 +1880,6 @@ pub fn mustLower(air: Air, inst: Air.Inst.Index, ip: *const InternPool) bool { |
| 1879 | 1880 | .work_group_id, |
| 1880 | 1881 | => false, |
| 1881 | 1882 | |
| 1882 | | .assembly => { |
| 1883 | | const extra = air.extraData(Air.Asm, data.ty_pl.payload); |
| 1884 | | const is_volatile = @as(u1, @truncate(extra.data.flags >> 31)) != 0; |
| 1885 | | return is_volatile or if (extra.data.outputs_len == 1) |
| 1886 | | @as(Air.Inst.Ref, @enumFromInt(air.extra[extra.end])) != .none |
| 1887 | | else |
| 1888 | | extra.data.outputs_len > 1; |
| 1889 | | }, |
| 1890 | 1883 | .load => air.typeOf(data.ty_op.operand, ip).isVolatilePtrIp(ip), |
| 1891 | 1884 | .slice_elem_val, .ptr_elem_val => air.typeOf(data.bin_op.lhs, ip).isVolatilePtrIp(ip), |
| 1892 | 1885 | .atomic_load => switch (data.atomic_load.order) { |