authorgravatar for alex@alexrp.comAlex Rønne Petersen <alex@alexrp.com> 2024-10-31 09:50:14+01:00
committergravatar for alex@alexrp.comAlex Rønne Petersen <alex@alexrp.com> 2025-05-14 05:43:54+02:00
log4bf17f0a78f0ff2732a881ca08430fb38ef13891
tree0797db5a529d209c38ef78f04ebc496024845b80
parent59f92bff69adb8e3e22bb3a8b4d75658dafcb626
signaturebadge-check Signed by SSH key SHA256:7B/LJ7bpR1eX8aCXSr4mtd5M45VMPKcx9zY8e95b5QM

Air: Always return true for inline assembly in mustLower().

AstGen requires inline assembly to either have outputs or be marked volatile, so there doesn't appear to be any point in doing these checks.

1 files changed, 1 insertions(+), 8 deletions(-)

src/Air.zig+1-8
......@@ -1656,6 +1656,7 @@ pub fn mustLower(air: Air, inst: Air.Inst.Index, ip: *const InternPool) bool {
16561656 const data = air.instructions.items(.data)[@intFromEnum(inst)];
16571657 return switch (air.instructions.items(.tag)[@intFromEnum(inst)]) {
16581658 .arg,
1659 .assembly,
16591660 .block,
16601661 .loop,
16611662 .repeat,
......@@ -1861,14 +1862,6 @@ pub fn mustLower(air: Air, inst: Air.Inst.Index, ip: *const InternPool) bool {
18611862 .work_group_id,
18621863 => false,
18631864
1864 .assembly => {
1865 const extra = air.extraData(Air.Asm, data.ty_pl.payload);
1866 const is_volatile = @as(u1, @truncate(extra.data.flags >> 31)) != 0;
1867 return is_volatile or if (extra.data.outputs_len == 1)
1868 @as(Air.Inst.Ref, @enumFromInt(air.extra[extra.end])) != .none
1869 else
1870 extra.data.outputs_len > 1;
1871 },
18721865 .load => air.typeOf(data.ty_op.operand, ip).isVolatilePtrIp(ip),
18731866 .slice_elem_val, .ptr_elem_val => air.typeOf(data.bin_op.lhs, ip).isVolatilePtrIp(ip),
18741867 .atomic_load => switch (data.atomic_load.order) {