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-12 17:07:49+02:00
log47aaaec6ea32754ad9d7f9f25e874d63439aead8
tree86d1843d92af3d389de7ce26341430469ba7e7e4
parent4c36a403a895bd3e7dc7b4dd308f2b82a3dab60a
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
......@@ -1673,6 +1673,7 @@ pub fn mustLower(air: Air, inst: Air.Inst.Index, ip: *const InternPool) bool {
16731673 const data = air.instructions.items(.data)[@intFromEnum(inst)];
16741674 return switch (air.instructions.items(.tag)[@intFromEnum(inst)]) {
16751675 .arg,
1676 .assembly,
16761677 .block,
16771678 .loop,
16781679 .repeat,
......@@ -1879,14 +1880,6 @@ pub fn mustLower(air: Air, inst: Air.Inst.Index, ip: *const InternPool) bool {
18791880 .work_group_id,
18801881 => false,
18811882
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 },
18901883 .load => air.typeOf(data.ty_op.operand, ip).isVolatilePtrIp(ip),
18911884 .slice_elem_val, .ptr_elem_val => air.typeOf(data.bin_op.lhs, ip).isVolatilePtrIp(ip),
18921885 .atomic_load => switch (data.atomic_load.order) {