authorgravatar for jacobly@ziglang.orgJacob Young <jacobly@ziglang.org> 2025-06-07 23:30:17-04:00
committergravatar for mlugg@mlugg.co.ukMatthew Lugg <mlugg@mlugg.co.uk> 2025-06-12 13:55:41+01:00
logba53b140288b4518de38a8174ab7ad402607b8d4
tree148c54c0493aaa3b44cbdf0b7dca924507bd7c74
parentc95b1bf2d3c3ae7595e15ad521952b77d5063801
signaturelock-open Commit is signed but in an unrecognized format.

x86_64: remove linker references from codegen


16 files changed, 2663 insertions(+), 2580 deletions(-)

lib/std/heap/debug_allocator.zig+2-2
......@@ -212,8 +212,8 @@ pub fn DebugAllocator(comptime config: Config) type {
212212 DummyMutex{};
213213
214214 const DummyMutex = struct {
215 inline fn lock(_: *DummyMutex) void {}
216 inline fn unlock(_: *DummyMutex) void {}
215 inline fn lock(_: DummyMutex) void {}
216 inline fn unlock(_: DummyMutex) void {}
217217 };
218218
219219 const stack_n = config.stack_trace_frames;
src/arch/riscv64/CodeGen.zig+1-3
......@@ -3603,9 +3603,7 @@ fn airRuntimeNavPtr(func: *Func, inst: Air.Inst.Index) !void {
36033603 const tlv_sym_index = if (func.bin_file.cast(.elf)) |elf_file| sym: {
36043604 const zo = elf_file.zigObjectPtr().?;
36053605 if (nav.getExtern(ip)) |e| {
3606 const sym = try elf_file.getGlobalSymbol(nav.name.toSlice(ip), e.lib_name.toSlice(ip));
3607 zo.symbol(sym).flags.is_extern_ptr = true;
3608 break :sym sym;
3606 break :sym try elf_file.getGlobalSymbol(nav.name.toSlice(ip), e.lib_name.toSlice(ip));
36093607 }
36103608 break :sym try zo.getOrCreateMetadataForNav(zcu, ty_nav.nav);
36113609 } else return func.fail("TODO runtime_nav_ptr on {}", .{func.bin_file.tag});
src/arch/riscv64/Emit.zig+2-2
......@@ -50,8 +50,8 @@ pub fn emitMir(emit: *Emit) Error!void {
5050 const atom_ptr = zo.symbol(symbol.atom_index).atom(elf_file).?;
5151 const sym = zo.symbol(symbol.sym_index);
5252
53 if (sym.flags.is_extern_ptr and emit.lower.pic) {
54 return emit.fail("emit GOT relocation for symbol '{s}'", .{sym.name(elf_file)});
53 if (emit.lower.pic) {
54 return emit.fail("know when to emit GOT relocation for symbol '{s}'", .{sym.name(elf_file)});
5555 }
5656
5757 const hi_r_type: u32 = @intFromEnum(std.elf.R_RISCV.HI20);
src/arch/x86_64/CodeGen.zig+1714-1925
......@@ -124,9 +124,11 @@ gpa: Allocator,
124124pt: Zcu.PerThread,
125125air: Air,
126126liveness: Air.Liveness,
127bin_file: *link.File,
128127target: *const std.Target,
129owner: Owner,
128owner: union(enum) {
129 nav_index: InternPool.Nav.Index,
130 lazy_sym: link.File.LazySymbol,
131},
130132inline_func: InternPool.Index,
131133mod: *Module,
132134args: []MCValue,
......@@ -150,8 +152,14 @@ eflags_inst: ?Air.Inst.Index = null,
150152mir_instructions: std.MultiArrayList(Mir.Inst) = .empty,
151153/// MIR extra data
152154mir_extra: std.ArrayListUnmanaged(u32) = .empty,
153mir_local_name_bytes: std.ArrayListUnmanaged(u8) = .empty,
154mir_local_types: std.ArrayListUnmanaged(InternPool.Index) = .empty,
155mir_string_bytes: std.ArrayListUnmanaged(u8) = .empty,
156mir_strings: std.HashMapUnmanaged(
157 u32,
158 void,
159 std.hash_map.StringIndexContext,
160 std.hash_map.default_max_load_percentage,
161) = .empty,
162mir_locals: std.ArrayListUnmanaged(Mir.Local) = .empty,
155163mir_table: std.ArrayListUnmanaged(Mir.Inst.Index) = .empty,
156164
157165/// The value is an offset into the `Function` `code` from the beginning.
......@@ -194,41 +202,6 @@ loop_switches: std.AutoHashMapUnmanaged(Air.Inst.Index, struct {
194202next_temp_index: Temp.Index = @enumFromInt(0),
195203temp_type: [Temp.Index.max]Type = undefined,
196204
197const Owner = union(enum) {
198 nav_index: InternPool.Nav.Index,
199 lazy_sym: link.File.LazySymbol,
200
201 fn getSymbolIndex(owner: Owner, ctx: *CodeGen) !u32 {
202 const pt = ctx.pt;
203 switch (owner) {
204 .nav_index => |nav_index| if (ctx.bin_file.cast(.elf)) |elf_file| {
205 return elf_file.zigObjectPtr().?.getOrCreateMetadataForNav(pt.zcu, nav_index);
206 } else if (ctx.bin_file.cast(.macho)) |macho_file| {
207 return macho_file.getZigObject().?.getOrCreateMetadataForNav(macho_file, nav_index);
208 } else if (ctx.bin_file.cast(.coff)) |coff_file| {
209 const atom = try coff_file.getOrCreateAtomForNav(nav_index);
210 return coff_file.getAtom(atom).getSymbolIndex().?;
211 } else if (ctx.bin_file.cast(.plan9)) |p9_file| {
212 return p9_file.seeNav(pt, nav_index);
213 } else unreachable,
214 .lazy_sym => |lazy_sym| if (ctx.bin_file.cast(.elf)) |elf_file| {
215 return elf_file.zigObjectPtr().?.getOrCreateMetadataForLazySymbol(elf_file, pt, lazy_sym) catch |err|
216 ctx.fail("{s} creating lazy symbol", .{@errorName(err)});
217 } else if (ctx.bin_file.cast(.macho)) |macho_file| {
218 return macho_file.getZigObject().?.getOrCreateMetadataForLazySymbol(macho_file, pt, lazy_sym) catch |err|
219 ctx.fail("{s} creating lazy symbol", .{@errorName(err)});
220 } else if (ctx.bin_file.cast(.coff)) |coff_file| {
221 const atom = coff_file.getOrCreateAtomForLazySymbol(pt, lazy_sym) catch |err|
222 return ctx.fail("{s} creating lazy symbol", .{@errorName(err)});
223 return coff_file.getAtom(atom).getSymbolIndex().?;
224 } else if (ctx.bin_file.cast(.plan9)) |p9_file| {
225 return p9_file.getOrCreateAtomForLazySymbol(pt, lazy_sym) catch |err|
226 return ctx.fail("{s} creating lazy symbol", .{@errorName(err)});
227 } else unreachable,
228 }
229 }
230};
231
232205const MaskInfo = packed struct {
233206 kind: enum(u1) { sign, all },
234207 inverted: bool = false,
......@@ -269,37 +242,22 @@ pub const MCValue = union(enum) {
269242 /// The value is in memory at a hard-coded address.
270243 /// If the type is a pointer, it means the pointer address is stored at this memory location.
271244 memory: u64,
272 /// The value is in memory at an address not-yet-allocated by the linker.
273 /// This traditionally corresponds to a relocation emitted in a relocatable object file.
274 load_symbol: bits.SymbolOffset,
275 /// The address of the memory location not-yet-allocated by the linker.
276 lea_symbol: bits.SymbolOffset,
277 /// The value is in memory at an address not-yet-allocated by the linker.
278 /// This must use a non-got pc-relative relocation.
279 load_pcrel: bits.SymbolOffset,
280 /// The address of the memory location not-yet-allocated by the linker.
281 /// This must use a non-got pc-relative relocation.
282 lea_pcrel: bits.SymbolOffset,
283245 /// The value is in memory at a constant offset from the address in a register.
284246 indirect: bits.RegisterOffset,
285 /// The value is in memory.
286 /// Payload is a symbol index.
287 load_direct: u32,
288 /// The value is a pointer to a value in memory.
289 /// Payload is a symbol index.
290 lea_direct: u32,
291 /// The value is in memory referenced indirectly via GOT.
292 /// Payload is a symbol index.
293 load_got: u32,
294 /// The value is a pointer to a value referenced indirectly via GOT.
295 /// Payload is a symbol index.
296 lea_got: u32,
297247 /// The value stored at an offset from a frame index
298248 /// Payload is a frame address.
299249 load_frame: bits.FrameAddr,
300250 /// The address of an offset from a frame index
301251 /// Payload is a frame address.
302252 lea_frame: bits.FrameAddr,
253 load_nav: InternPool.Nav.Index,
254 lea_nav: InternPool.Nav.Index,
255 load_uav: InternPool.Key.Ptr.BaseAddr.Uav,
256 lea_uav: InternPool.Key.Ptr.BaseAddr.Uav,
257 load_lazy_sym: link.File.LazySymbol,
258 lea_lazy_sym: link.File.LazySymbol,
259 load_extern_func: Mir.NullTerminatedString,
260 lea_extern_func: Mir.NullTerminatedString,
303261 /// Supports integer_per_element abi
304262 elementwise_args: packed struct { regs: u3, frame_off: i29, frame_index: FrameIndex },
305263 /// This indicates that we have already allocated a frame index for this instruction,
......@@ -319,11 +277,14 @@ pub const MCValue = union(enum) {
319277 .register_mask,
320278 .eflags,
321279 .register_overflow,
322 .lea_symbol,
323 .lea_pcrel,
324 .lea_direct,
325 .lea_got,
326280 .lea_frame,
281 .lea_nav,
282 .load_uav,
283 .lea_uav,
284 .load_lazy_sym,
285 .lea_lazy_sym,
286 .lea_extern_func,
287 .load_extern_func,
327288 .elementwise_args,
328289 .reserved_frame,
329290 .air_ref,
......@@ -333,11 +294,8 @@ pub const MCValue = union(enum) {
333294 .register_triple,
334295 .register_quadruple,
335296 .memory,
336 .load_symbol,
337 .load_pcrel,
338 .load_got,
339 .load_direct,
340297 .indirect,
298 .load_nav,
341299 => true,
342300 .load_frame => |frame_addr| !frame_addr.index.isNamed(),
343301 };
......@@ -353,7 +311,14 @@ pub const MCValue = union(enum) {
353311
354312 fn isMemory(mcv: MCValue) bool {
355313 return switch (mcv) {
356 .memory, .indirect, .load_frame, .load_symbol => true,
314 .memory,
315 .indirect,
316 .load_frame,
317 .load_nav,
318 .load_uav,
319 .load_lazy_sym,
320 .load_extern_func,
321 => true,
357322 else => false,
358323 };
359324 }
......@@ -423,7 +388,7 @@ pub const MCValue = union(enum) {
423388
424389 fn address(mcv: MCValue) MCValue {
425390 return switch (mcv) {
426 .none,
391 .none => .none,
427392 .unreach,
428393 .dead,
429394 .undef,
......@@ -436,11 +401,11 @@ pub const MCValue = union(enum) {
436401 .register_offset,
437402 .register_overflow,
438403 .register_mask,
439 .lea_symbol,
440 .lea_pcrel,
441 .lea_direct,
442 .lea_got,
443404 .lea_frame,
405 .lea_nav,
406 .lea_uav,
407 .lea_lazy_sym,
408 .lea_extern_func,
444409 .elementwise_args,
445410 .reserved_frame,
446411 .air_ref,
......@@ -450,17 +415,17 @@ pub const MCValue = union(enum) {
450415 0 => .{ .register = reg_off.reg },
451416 else => .{ .register_offset = reg_off },
452417 },
453 .load_direct => |sym_index| .{ .lea_direct = sym_index },
454 .load_got => |sym_index| .{ .lea_got = sym_index },
455418 .load_frame => |frame_addr| .{ .lea_frame = frame_addr },
456 .load_symbol => |sym_off| .{ .lea_symbol = sym_off },
457 .load_pcrel => |sym_off| .{ .lea_pcrel = sym_off },
419 .load_nav => |nav| .{ .lea_nav = nav },
420 .load_uav => |uav| .{ .lea_uav = uav },
421 .load_lazy_sym => |lazy_sym| .{ .lea_lazy_sym = lazy_sym },
422 .load_extern_func => |extern_func| .{ .lea_extern_func = extern_func },
458423 };
459424 }
460425
461426 fn deref(mcv: MCValue) MCValue {
462427 return switch (mcv) {
463 .none,
428 .none => .none,
464429 .unreach,
465430 .dead,
466431 .undef,
......@@ -472,11 +437,11 @@ pub const MCValue = union(enum) {
472437 .register_mask,
473438 .memory,
474439 .indirect,
475 .load_direct,
476 .load_got,
477440 .load_frame,
478 .load_symbol,
479 .load_pcrel,
441 .load_nav,
442 .load_uav,
443 .load_lazy_sym,
444 .load_extern_func,
480445 .elementwise_args,
481446 .reserved_frame,
482447 .air_ref,
......@@ -484,17 +449,17 @@ pub const MCValue = union(enum) {
484449 .immediate => |addr| .{ .memory = addr },
485450 .register => |reg| .{ .indirect = .{ .reg = reg } },
486451 .register_offset => |reg_off| .{ .indirect = reg_off },
487 .lea_direct => |sym_index| .{ .load_direct = sym_index },
488 .lea_got => |sym_index| .{ .load_got = sym_index },
489452 .lea_frame => |frame_addr| .{ .load_frame = frame_addr },
490 .lea_symbol => |sym_index| .{ .load_symbol = sym_index },
491 .lea_pcrel => |sym_index| .{ .load_pcrel = sym_index },
453 .lea_nav => |nav| .{ .load_nav = nav },
454 .lea_uav => |uav| .{ .load_uav = uav },
455 .lea_lazy_sym => |lazy_sym| .{ .load_lazy_sym = lazy_sym },
456 .lea_extern_func => |extern_func| .{ .load_extern_func = extern_func },
492457 };
493458 }
494459
495460 fn offset(mcv: MCValue, off: i32) MCValue {
496461 return switch (mcv) {
497 .none,
462 .none => .none,
498463 .unreach,
499464 .dead,
500465 .undef,
......@@ -510,15 +475,15 @@ pub const MCValue = union(enum) {
510475 .register_mask,
511476 .memory,
512477 .indirect,
513 .load_direct,
514 .lea_direct,
515 .load_got,
516 .lea_got,
517478 .load_frame,
518 .load_symbol,
519 .lea_symbol,
520 .load_pcrel,
521 .lea_pcrel,
479 .load_nav,
480 .lea_nav,
481 .load_uav,
482 .lea_uav,
483 .load_lazy_sym,
484 .lea_lazy_sym,
485 .load_extern_func,
486 .lea_extern_func,
522487 => switch (off) {
523488 0 => mcv,
524489 else => unreachable, // not offsettable
......@@ -536,7 +501,7 @@ pub const MCValue = union(enum) {
536501
537502 fn mem(mcv: MCValue, function: *CodeGen, mod_rm: Memory.Mod.Rm) !Memory {
538503 return switch (mcv) {
539 .none,
504 .none => .{ .mod = .{ .rm = mod_rm } },
540505 .unreach,
541506 .dead,
542507 .undef,
......@@ -549,15 +514,13 @@ pub const MCValue = union(enum) {
549514 .register_offset,
550515 .register_overflow,
551516 .register_mask,
552 .load_direct,
553 .lea_direct,
554 .load_got,
555 .lea_got,
556517 .lea_frame,
557518 .elementwise_args,
558519 .reserved_frame,
559 .lea_symbol,
560 .lea_pcrel,
520 .lea_nav,
521 .lea_uav,
522 .lea_lazy_sym,
523 .lea_extern_func,
561524 => unreachable,
562525 .memory => |addr| if (std.math.cast(i32, @as(i64, @bitCast(addr)))) |small_addr| .{
563526 .base = .{ .reg = .ds },
......@@ -586,30 +549,10 @@ pub const MCValue = union(enum) {
586549 .disp = frame_addr.off + mod_rm.disp,
587550 } },
588551 },
589 .load_symbol => |sym_off| {
590 assert(sym_off.off == 0);
591 return .{
592 .base = .{ .reloc = sym_off.sym_index },
593 .mod = .{ .rm = .{
594 .size = mod_rm.size,
595 .index = mod_rm.index,
596 .scale = mod_rm.scale,
597 .disp = sym_off.off + mod_rm.disp,
598 } },
599 };
600 },
601 .load_pcrel => |sym_off| {
602 assert(sym_off.off == 0);
603 return .{
604 .base = .{ .pcrel = sym_off.sym_index },
605 .mod = .{ .rm = .{
606 .size = mod_rm.size,
607 .index = mod_rm.index,
608 .scale = mod_rm.scale,
609 .disp = sym_off.off + mod_rm.disp,
610 } },
611 };
612 },
552 .load_nav => |nav| .{ .base = .{ .nav = nav }, .mod = .{ .rm = mod_rm } },
553 .load_uav => |uav| .{ .base = .{ .uav = uav }, .mod = .{ .rm = mod_rm } },
554 .load_lazy_sym => |lazy_sym| .{ .base = .{ .lazy_sym = lazy_sym }, .mod = .{ .rm = mod_rm } },
555 .load_extern_func => |extern_func| .{ .base = .{ .extern_func = extern_func }, .mod = .{ .rm = mod_rm } },
613556 .air_ref => |ref| (try function.resolveInst(ref)).mem(function, mod_rm),
614557 };
615558 }
......@@ -643,20 +586,20 @@ pub const MCValue = union(enum) {
643586 @as(u8, if (pl.info.inverted) '!' else ' '),
644587 @tagName(pl.reg),
645588 }),
646 .load_symbol => |pl| try writer.print("[sym:{} + 0x{x}]", .{ pl.sym_index, pl.off }),
647 .lea_symbol => |pl| try writer.print("sym:{} + 0x{x}", .{ pl.sym_index, pl.off }),
648 .load_pcrel => |pl| try writer.print("[sym@pcrel:{} + 0x{x}]", .{ pl.sym_index, pl.off }),
649 .lea_pcrel => |pl| try writer.print("sym@pcrel:{} + 0x{x}", .{ pl.sym_index, pl.off }),
650589 .indirect => |pl| try writer.print("[{s} + 0x{x}]", .{ @tagName(pl.reg), pl.off }),
651 .load_direct => |pl| try writer.print("[direct:{d}]", .{pl}),
652 .lea_direct => |pl| try writer.print("direct:{d}", .{pl}),
653 .load_got => |pl| try writer.print("[got:{d}]", .{pl}),
654 .lea_got => |pl| try writer.print("got:{d}", .{pl}),
655590 .load_frame => |pl| try writer.print("[{} + 0x{x}]", .{ pl.index, pl.off }),
591 .lea_frame => |pl| try writer.print("{} + 0x{x}", .{ pl.index, pl.off }),
592 .load_nav => |pl| try writer.print("[nav:{d}]", .{@intFromEnum(pl)}),
593 .lea_nav => |pl| try writer.print("nav:{d}", .{@intFromEnum(pl)}),
594 .load_uav => |pl| try writer.print("[uav:{d}]", .{@intFromEnum(pl.val)}),
595 .lea_uav => |pl| try writer.print("uav:{d}", .{@intFromEnum(pl.val)}),
596 .load_lazy_sym => |pl| try writer.print("[lazy:{s}:{d}]", .{ @tagName(pl.kind), @intFromEnum(pl.ty) }),
597 .lea_lazy_sym => |pl| try writer.print("lazy:{s}:{d}", .{ @tagName(pl.kind), @intFromEnum(pl.ty) }),
598 .load_extern_func => |pl| try writer.print("[extern:{d}]", .{@intFromEnum(pl)}),
599 .lea_extern_func => |pl| try writer.print("extern:{d}", .{@intFromEnum(pl)}),
656600 .elementwise_args => |pl| try writer.print("elementwise:{d}:[{} + 0x{x}]", .{
657601 pl.regs, pl.frame_index, pl.frame_off,
658602 }),
659 .lea_frame => |pl| try writer.print("{} + 0x{x}", .{ pl.index, pl.off }),
660603 .reserved_frame => |pl| try writer.print("(dead:{})", .{pl}),
661604 .air_ref => |pl| try writer.print("(air:0x{x})", .{@intFromEnum(pl)}),
662605 }
......@@ -676,16 +619,16 @@ const InstTracking = struct {
676619 .undef,
677620 .immediate,
678621 .memory,
679 .load_direct,
680 .lea_direct,
681 .load_got,
682 .lea_got,
683622 .load_frame,
684623 .lea_frame,
685 .load_symbol,
686 .lea_symbol,
687 .load_pcrel,
688 .lea_pcrel,
624 .load_nav,
625 .lea_nav,
626 .load_uav,
627 .lea_uav,
628 .load_lazy_sym,
629 .lea_lazy_sym,
630 .load_extern_func,
631 .lea_extern_func,
689632 => result,
690633 .dead,
691634 .elementwise_args,
......@@ -779,15 +722,15 @@ const InstTracking = struct {
779722 .undef,
780723 .immediate,
781724 .memory,
782 .load_direct,
783 .lea_direct,
784 .load_got,
785 .lea_got,
786725 .lea_frame,
787 .load_symbol,
788 .lea_symbol,
789 .load_pcrel,
790 .lea_pcrel,
726 .load_nav,
727 .lea_nav,
728 .load_uav,
729 .lea_uav,
730 .load_lazy_sym,
731 .lea_lazy_sym,
732 .load_extern_func,
733 .lea_extern_func,
791734 => assert(std.meta.eql(self.long, target.long)),
792735 .dead,
793736 .eflags,
......@@ -975,6 +918,7 @@ pub fn generate(
975918 air: *const Air,
976919 liveness: *const Air.Liveness,
977920) codegen.CodeGenError!Mir {
921 _ = bin_file;
978922 const zcu = pt.zcu;
979923 const gpa = zcu.gpa;
980924 const ip = &zcu.intern_pool;
......@@ -991,7 +935,6 @@ pub fn generate(
991935 .liveness = liveness.*,
992936 .target = &mod.resolved_target.result,
993937 .mod = mod,
994 .bin_file = bin_file,
995938 .owner = .{ .nav_index = func.owner_nav },
996939 .inline_func = func_index,
997940 .args = undefined, // populated after `resolveCallingConventionValues`
......@@ -1013,8 +956,9 @@ pub fn generate(
1013956 function.inst_tracking.deinit(gpa);
1014957 function.epilogue_relocs.deinit(gpa);
1015958 function.mir_instructions.deinit(gpa);
1016 function.mir_local_name_bytes.deinit(gpa);
1017 function.mir_local_types.deinit(gpa);
959 function.mir_string_bytes.deinit(gpa);
960 function.mir_strings.deinit(gpa);
961 function.mir_locals.deinit(gpa);
1018962 function.mir_extra.deinit(gpa);
1019963 function.mir_table.deinit(gpa);
1020964 }
......@@ -1101,27 +1045,27 @@ pub fn generate(
11011045 var mir: Mir = .{
11021046 .instructions = .empty,
11031047 .extra = &.{},
1104 .local_name_bytes = &.{},
1105 .local_types = &.{},
1048 .string_bytes = &.{},
1049 .locals = &.{},
11061050 .table = &.{},
11071051 .frame_locs = .empty,
11081052 };
11091053 errdefer mir.deinit(gpa);
11101054 mir.instructions = function.mir_instructions.toOwnedSlice();
11111055 mir.extra = try function.mir_extra.toOwnedSlice(gpa);
1112 mir.local_name_bytes = try function.mir_local_name_bytes.toOwnedSlice(gpa);
1113 mir.local_types = try function.mir_local_types.toOwnedSlice(gpa);
1056 mir.string_bytes = try function.mir_string_bytes.toOwnedSlice(gpa);
1057 mir.locals = try function.mir_locals.toOwnedSlice(gpa);
11141058 mir.table = try function.mir_table.toOwnedSlice(gpa);
11151059 mir.frame_locs = function.frame_locs.toOwnedSlice();
11161060 return mir;
11171061}
11181062
1119pub fn toTmpMir(cg: *CodeGen) Mir {
1063pub fn getTmpMir(cg: *CodeGen) Mir {
11201064 return .{
11211065 .instructions = cg.mir_instructions.slice(),
11221066 .extra = cg.mir_extra.items,
1123 .local_name_bytes = cg.mir_local_name_bytes.items,
1124 .local_types = cg.mir_local_types.items,
1067 .string_bytes = cg.mir_string_bytes.items,
1068 .locals = cg.mir_locals.items,
11251069 .table = cg.mir_table.items,
11261070 .frame_locs = cg.frame_locs.slice(),
11271071 };
......@@ -1135,10 +1079,9 @@ pub fn generateLazy(
11351079 code: *std.ArrayListUnmanaged(u8),
11361080 debug_output: link.File.DebugInfoOutput,
11371081) codegen.CodeGenError!void {
1138 const comp = bin_file.comp;
1139 const gpa = comp.gpa;
1082 const gpa = pt.zcu.gpa;
11401083 // This function is for generating global code, so we use the root module.
1141 const mod = comp.root_mod;
1084 const mod = pt.zcu.comp.root_mod;
11421085 var function: CodeGen = .{
11431086 .gpa = gpa,
11441087 .pt = pt,
......@@ -1146,7 +1089,6 @@ pub fn generateLazy(
11461089 .liveness = undefined,
11471090 .target = &mod.resolved_target.result,
11481091 .mod = mod,
1149 .bin_file = bin_file,
11501092 .owner = .{ .lazy_sym = lazy_sym },
11511093 .inline_func = undefined,
11521094 .args = undefined,
......@@ -1159,8 +1101,9 @@ pub fn generateLazy(
11591101 defer {
11601102 function.inst_tracking.deinit(gpa);
11611103 function.mir_instructions.deinit(gpa);
1162 function.mir_local_name_bytes.deinit(gpa);
1163 function.mir_local_types.deinit(gpa);
1104 function.mir_string_bytes.deinit(gpa);
1105 function.mir_strings.deinit(gpa);
1106 function.mir_locals.deinit(gpa);
11641107 function.mir_extra.deinit(gpa);
11651108 function.mir_table.deinit(gpa);
11661109 }
......@@ -1176,33 +1119,7 @@ pub fn generateLazy(
11761119 else => |e| return e,
11771120 };
11781121
1179 var emit: Emit = .{
1180 .lower = .{
1181 .bin_file = bin_file,
1182 .target = function.target,
1183 .allocator = gpa,
1184 .mir = function.toTmpMir(),
1185 .cc = .auto,
1186 .src_loc = src_loc,
1187 .output_mode = comp.config.output_mode,
1188 .link_mode = comp.config.link_mode,
1189 .pic = mod.pic,
1190 },
1191 .atom_index = function.owner.getSymbolIndex(&function) catch |err| switch (err) {
1192 error.CodegenFail => return error.CodegenFail,
1193 else => |e| return e,
1194 },
1195 .debug_output = debug_output,
1196 .code = code,
1197 .prev_di_loc = undefined, // no debug info yet
1198 .prev_di_pc = undefined, // no debug info yet
1199 };
1200 emit.emitMir() catch |err| switch (err) {
1201 error.LowerFail, error.EmitFail => return function.failMsg(emit.lower.err_msg.?),
1202 error.InvalidInstruction => return function.fail("failed to find a viable x86 instruction (Zig compiler bug)", .{}),
1203 error.CannotEncode => return function.fail("failed to encode x86 instruction (Zig compiler bug)", .{}),
1204 else => |e| return function.fail("failed to emit MIR: {s}", .{@errorName(e)}),
1205 };
1122 try function.getTmpMir().emitLazy(bin_file, pt, src_loc, lazy_sym, code, debug_output);
12061123}
12071124
12081125const FormatNavData = struct {
......@@ -1250,17 +1167,12 @@ fn formatWipMir(
12501167 _: std.fmt.FormatOptions,
12511168 writer: anytype,
12521169) @TypeOf(writer).Error!void {
1253 const comp = data.self.bin_file.comp;
12541170 var lower: Lower = .{
1255 .bin_file = data.self.bin_file,
12561171 .target = data.self.target,
12571172 .allocator = data.self.gpa,
1258 .mir = data.self.toTmpMir(),
1173 .mir = data.self.getTmpMir(),
12591174 .cc = .auto,
12601175 .src_loc = data.self.src_loc,
1261 .output_mode = comp.config.output_mode,
1262 .link_mode = comp.config.link_mode,
1263 .pic = data.self.mod.pic,
12641176 };
12651177 var first = true;
12661178 for ((lower.lowerMir(data.inst) catch |err| switch (err) {
......@@ -1317,13 +1229,6 @@ fn formatWipMir(
13171229 .pseudo_dbg_arg_i_64, .pseudo_dbg_var_i_64 => try writer.print(" {d}", .{
13181230 mir_inst.data.i64,
13191231 }),
1320 .pseudo_dbg_arg_reloc, .pseudo_dbg_var_reloc => {
1321 const mem_op: encoder.Instruction.Operand = .{ .mem = .initSib(.qword, .{
1322 .base = .{ .reloc = mir_inst.data.reloc.sym_index },
1323 .disp = mir_inst.data.reloc.off,
1324 }) };
1325 try writer.print(" {}", .{mem_op.fmt(.m)});
1326 },
13271232 .pseudo_dbg_arg_ro, .pseudo_dbg_var_ro => {
13281233 const mem_op: encoder.Instruction.Operand = .{ .mem = .initSib(.qword, .{
13291234 .base = .{ .reg = mir_inst.data.ro.reg },
......@@ -1399,6 +1304,22 @@ fn addExtraAssumeCapacity(self: *CodeGen, extra: anytype) u32 {
13991304 return result;
14001305}
14011306
1307fn addString(cg: *CodeGen, string: []const u8) Allocator.Error!Mir.NullTerminatedString {
1308 try cg.mir_string_bytes.ensureUnusedCapacity(cg.gpa, string.len + 1);
1309 try cg.mir_strings.ensureUnusedCapacityContext(cg.gpa, 1, .{ .bytes = &cg.mir_string_bytes });
1310
1311 const mir_string_gop = cg.mir_strings.getOrPutAssumeCapacityAdapted(
1312 string,
1313 std.hash_map.StringIndexAdapter{ .bytes = &cg.mir_string_bytes },
1314 );
1315 if (!mir_string_gop.found_existing) {
1316 mir_string_gop.key_ptr.* = @intCast(cg.mir_string_bytes.items.len);
1317 cg.mir_string_bytes.appendSliceAssumeCapacity(string);
1318 cg.mir_string_bytes.appendAssumeCapacity(0);
1319 }
1320 return @enumFromInt(mir_string_gop.key_ptr.*);
1321}
1322
14021323fn asmOps(self: *CodeGen, tag: Mir.Inst.FixedTag, ops: [4]Operand) !void {
14031324 return switch (ops[0]) {
14041325 .none => self.asmOpOnly(tag),
......@@ -1714,21 +1635,36 @@ fn asmImmediate(self: *CodeGen, tag: Mir.Inst.FixedTag, imm: Immediate) !void {
17141635 .ops = switch (imm) {
17151636 .signed => .i_s,
17161637 .unsigned => .i_u,
1717 .reloc => .rel,
1638 .nav => .nav,
1639 .uav => .uav,
1640 .lazy_sym => .lazy_sym,
1641 .extern_func => .extern_func,
17181642 },
17191643 .data = switch (imm) {
1720 .reloc => |sym_off| reloc: {
1721 assert(tag[0] == ._);
1722 break :reloc .{ .reloc = sym_off };
1723 },
17241644 .signed, .unsigned => .{ .i = .{
17251645 .fixes = tag[0],
17261646 .i = switch (imm) {
17271647 .signed => |s| @bitCast(s),
17281648 .unsigned => |u| @intCast(u),
1729 .reloc => unreachable,
1649 .nav, .uav, .lazy_sym, .extern_func => unreachable,
17301650 },
17311651 } },
1652 .nav => |nav| switch (tag[0]) {
1653 ._ => .{ .nav = nav },
1654 else => unreachable,
1655 },
1656 .uav => |uav| switch (tag[0]) {
1657 ._ => .{ .uav = uav },
1658 else => unreachable,
1659 },
1660 .lazy_sym => |lazy_sym| switch (tag[0]) {
1661 ._ => .{ .lazy_sym = lazy_sym },
1662 else => unreachable,
1663 },
1664 .extern_func => |extern_func| switch (tag[0]) {
1665 ._ => .{ .extern_func = extern_func },
1666 else => unreachable,
1667 },
17321668 },
17331669 });
17341670}
......@@ -1743,7 +1679,7 @@ fn asmImmediateRegister(self: *CodeGen, tag: Mir.Inst.FixedTag, imm: Immediate,
17431679 .i = @as(u8, switch (imm) {
17441680 .signed => |s| @bitCast(@as(i8, @intCast(s))),
17451681 .unsigned => |u| @intCast(u),
1746 .reloc => unreachable,
1682 .nav, .uav, .lazy_sym, .extern_func => unreachable,
17471683 }),
17481684 } },
17491685 });
......@@ -1758,12 +1694,12 @@ fn asmImmediateImmediate(self: *CodeGen, tag: Mir.Inst.FixedTag, imm1: Immediate
17581694 .i1 = switch (imm1) {
17591695 .signed => |s| @bitCast(@as(i16, @intCast(s))),
17601696 .unsigned => |u| @intCast(u),
1761 .reloc => unreachable,
1697 .nav, .uav, .lazy_sym, .extern_func => unreachable,
17621698 },
17631699 .i2 = switch (imm2) {
17641700 .signed => |s| @bitCast(@as(i8, @intCast(s))),
17651701 .unsigned => |u| @intCast(u),
1766 .reloc => unreachable,
1702 .nav, .uav, .lazy_sym, .extern_func => unreachable,
17671703 },
17681704 } },
17691705 });
......@@ -1788,7 +1724,7 @@ fn asmRegisterImmediate(self: *CodeGen, tag: Mir.Inst.FixedTag, reg: Register, i
17881724 .{ .ri_u, small }
17891725 else
17901726 .{ .ri_64, try self.addExtra(Mir.Imm64.encode(imm.unsigned)) },
1791 .reloc => unreachable,
1727 .nav, .uav, .lazy_sym, .extern_func => unreachable,
17921728 };
17931729 _ = try self.addInst(.{
17941730 .tag = tag[1],
......@@ -1860,7 +1796,7 @@ fn asmRegisterRegisterRegisterImmediate(
18601796 .i = switch (imm) {
18611797 .signed => |s| @bitCast(@as(i8, @intCast(s))),
18621798 .unsigned => |u| @intCast(u),
1863 .reloc => unreachable,
1799 .nav, .uav, .lazy_sym, .extern_func => unreachable,
18641800 },
18651801 } },
18661802 });
......@@ -1878,7 +1814,7 @@ fn asmRegisterRegisterImmediate(
18781814 .ops = switch (imm) {
18791815 .signed => .rri_s,
18801816 .unsigned => .rri_u,
1881 .reloc => unreachable,
1817 .nav, .uav, .lazy_sym, .extern_func => unreachable,
18821818 },
18831819 .data = .{ .rri = .{
18841820 .fixes = tag[0],
......@@ -1887,7 +1823,7 @@ fn asmRegisterRegisterImmediate(
18871823 .i = switch (imm) {
18881824 .signed => |s| @bitCast(s),
18891825 .unsigned => |u| @intCast(u),
1890 .reloc => unreachable,
1826 .nav, .uav, .lazy_sym, .extern_func => unreachable,
18911827 },
18921828 } },
18931829 });
......@@ -1985,7 +1921,7 @@ fn asmRegisterMemoryImmediate(
19851921 if (switch (imm) {
19861922 .signed => |s| if (std.math.cast(i16, s)) |x| @as(u16, @bitCast(x)) else null,
19871923 .unsigned => |u| std.math.cast(u16, u),
1988 .reloc => unreachable,
1924 .nav, .uav, .lazy_sym, .extern_func => unreachable,
19891925 }) |small_imm| {
19901926 _ = try self.addInst(.{
19911927 .tag = tag[1],
......@@ -2001,7 +1937,7 @@ fn asmRegisterMemoryImmediate(
20011937 const payload = try self.addExtra(Mir.Imm32{ .imm = switch (imm) {
20021938 .signed => |s| @bitCast(s),
20031939 .unsigned => |u| @as(u32, @intCast(u)),
2004 .reloc => unreachable,
1940 .nav, .uav, .lazy_sym, .extern_func => unreachable,
20051941 } });
20061942 assert(payload + 1 == try self.addExtra(Mir.Memory.encode(m)));
20071943 _ = try self.addInst(.{
......@@ -2009,7 +1945,7 @@ fn asmRegisterMemoryImmediate(
20091945 .ops = switch (imm) {
20101946 .signed => .rmi_s,
20111947 .unsigned => .rmi_u,
2012 .reloc => unreachable,
1948 .nav, .uav, .lazy_sym, .extern_func => unreachable,
20131949 },
20141950 .data = .{ .rx = .{
20151951 .fixes = tag[0],
......@@ -2057,7 +1993,7 @@ fn asmMemoryImmediate(self: *CodeGen, tag: Mir.Inst.FixedTag, m: Memory, imm: Im
20571993 const payload = try self.addExtra(Mir.Imm32{ .imm = switch (imm) {
20581994 .signed => |s| @bitCast(s),
20591995 .unsigned => |u| @intCast(u),
2060 .reloc => unreachable,
1996 .nav, .uav, .lazy_sym, .extern_func => unreachable,
20611997 } });
20621998 assert(payload + 1 == try self.addExtra(Mir.Memory.encode(m)));
20631999 _ = try self.addInst(.{
......@@ -2065,7 +2001,7 @@ fn asmMemoryImmediate(self: *CodeGen, tag: Mir.Inst.FixedTag, m: Memory, imm: Im
20652001 .ops = switch (imm) {
20662002 .signed => .mi_s,
20672003 .unsigned => .mi_u,
2068 .reloc => unreachable,
2004 .nav, .uav, .lazy_sym, .extern_func => unreachable,
20692005 },
20702006 .data = .{ .x = .{
20712007 .fixes = tag[0],
......@@ -2347,16 +2283,18 @@ fn genMainBody(
23472283 var air_arg_index: usize = 0;
23482284 const fn_info = zcu.typeToFunc(cg.fn_type).?;
23492285 var fn_param_index: usize = 0;
2350 try cg.mir_local_types.ensureTotalCapacity(cg.gpa, fn_info.param_types.len);
23512286 var zir_param_index: usize = 0;
23522287 for (zir.getParamBody(func_zir_inst)) |zir_param_inst| {
2353 const name = zir.nullTerminatedString(zir.getParamName(zir_param_inst) orelse continue);
2288 const name = switch (zir.getParamName(zir_param_inst) orelse break) {
2289 .empty => .none,
2290 else => |zir_name| try cg.addString(zir.nullTerminatedString(zir_name)),
2291 };
23542292 defer zir_param_index += 1;
2355 try cg.mir_local_name_bytes.appendSlice(cg.gpa, name[0 .. name.len + 1]);
23562293
23572294 if (comptime_args.len > 0) switch (comptime_args.get(ip)[zir_param_index]) {
23582295 .none => {},
23592296 else => |comptime_arg| {
2297 try cg.mir_locals.append(cg.gpa, .{ .name = name, .type = ip.typeOf(comptime_arg) });
23602298 _ = try cg.addInst(.{
23612299 .tag = .pseudo,
23622300 .ops = .pseudo_dbg_arg_val,
......@@ -2366,9 +2304,9 @@ fn genMainBody(
23662304 },
23672305 };
23682306
2369 const arg_ty: Type = .fromInterned(fn_info.param_types.get(ip)[fn_param_index]);
2307 const arg_ty = fn_info.param_types.get(ip)[fn_param_index];
2308 try cg.mir_locals.append(cg.gpa, .{ .name = name, .type = arg_ty });
23702309 fn_param_index += 1;
2371 cg.mir_local_types.appendAssumeCapacity(arg_ty.toIntern());
23722310
23732311 if (air_arg_index == air_args_body.len) {
23742312 try cg.asmPseudo(.pseudo_dbg_arg_none);
......@@ -2381,7 +2319,11 @@ fn genMainBody(
23812319 continue;
23822320 }
23832321 air_arg_index += 1;
2384 try cg.genLocalDebugInfo(.arg, arg_ty, cg.getResolvedInstValue(air_arg_inst).short);
2322 try cg.genLocalDebugInfo(
2323 .arg,
2324 .fromInterned(arg_ty),
2325 cg.getResolvedInstValue(air_arg_inst).short,
2326 );
23852327 }
23862328 if (fn_info.is_var_args) try cg.asmPseudo(.pseudo_dbg_var_args_none);
23872329 }
......@@ -3453,7 +3395,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
34533395 },
34543396 .call_frame = .{ .alignment = .@"16" },
34553397 .extra_temps = .{
3456 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addhf3" } } },
3398 .{ .type = .usize, .kind = .{ .extern_func = "__addhf3" } },
34573399 .unused,
34583400 .unused,
34593401 .unused,
......@@ -3585,7 +3527,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
35853527 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
35863528 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
35873529 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
3588 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addhf3" } } },
3530 .{ .type = .usize, .kind = .{ .extern_func = "__addhf3" } },
35893531 .unused,
35903532 .unused,
35913533 .unused,
......@@ -3621,7 +3563,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
36213563 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
36223564 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
36233565 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
3624 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addhf3" } } },
3566 .{ .type = .usize, .kind = .{ .extern_func = "__addhf3" } },
36253567 .unused,
36263568 .unused,
36273569 .unused,
......@@ -3658,7 +3600,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
36583600 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
36593601 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
36603602 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
3661 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addhf3" } } },
3603 .{ .type = .usize, .kind = .{ .extern_func = "__addhf3" } },
36623604 .{ .type = .f16, .kind = .{ .reg = .ax } },
36633605 .unused,
36643606 .unused,
......@@ -3698,7 +3640,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
36983640 .{ .type = .f32, .kind = .mem },
36993641 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
37003642 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
3701 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addhf3" } } },
3643 .{ .type = .usize, .kind = .{ .extern_func = "__addhf3" } },
37023644 .unused,
37033645 .unused,
37043646 .unused,
......@@ -4183,7 +4125,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
41834125 },
41844126 .call_frame = .{ .alignment = .@"16" },
41854127 .extra_temps = .{
4186 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addtf3" } } },
4128 .{ .type = .usize, .kind = .{ .extern_func = "__addtf3" } },
41874129 .unused,
41884130 .unused,
41894131 .unused,
......@@ -4215,7 +4157,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
42154157 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
42164158 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
42174159 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
4218 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addtf3" } } },
4160 .{ .type = .usize, .kind = .{ .extern_func = "__addtf3" } },
42194161 .unused,
42204162 .unused,
42214163 .unused,
......@@ -4250,7 +4192,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
42504192 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
42514193 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
42524194 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
4253 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addtf3" } } },
4195 .{ .type = .usize, .kind = .{ .extern_func = "__addtf3" } },
42544196 .unused,
42554197 .unused,
42564198 .unused,
......@@ -4285,7 +4227,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
42854227 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
42864228 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
42874229 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
4288 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addtf3" } } },
4230 .{ .type = .usize, .kind = .{ .extern_func = "__addtf3" } },
42894231 .unused,
42904232 .unused,
42914233 .unused,
......@@ -13885,7 +13827,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1388513827 },
1388613828 .call_frame = .{ .alignment = .@"16" },
1388713829 .extra_temps = .{
13888 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__subhf3" } } },
13830 .{ .type = .usize, .kind = .{ .extern_func = "__subhf3" } },
1388913831 .unused,
1389013832 .unused,
1389113833 .unused,
......@@ -14017,7 +13959,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1401713959 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
1401813960 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
1401913961 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
14020 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__subhf3" } } },
13962 .{ .type = .usize, .kind = .{ .extern_func = "__subhf3" } },
1402113963 .unused,
1402213964 .unused,
1402313965 .unused,
......@@ -14053,7 +13995,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1405313995 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
1405413996 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
1405513997 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
14056 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__subhf3" } } },
13998 .{ .type = .usize, .kind = .{ .extern_func = "__subhf3" } },
1405713999 .unused,
1405814000 .unused,
1405914001 .unused,
......@@ -14090,7 +14032,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1409014032 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
1409114033 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
1409214034 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
14093 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__subhf3" } } },
14035 .{ .type = .usize, .kind = .{ .extern_func = "__subhf3" } },
1409414036 .{ .type = .f16, .kind = .{ .reg = .ax } },
1409514037 .unused,
1409614038 .unused,
......@@ -14130,7 +14072,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1413014072 .{ .type = .f32, .kind = .mem },
1413114073 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
1413214074 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
14133 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__subhf3" } } },
14075 .{ .type = .usize, .kind = .{ .extern_func = "__subhf3" } },
1413414076 .unused,
1413514077 .unused,
1413614078 .unused,
......@@ -14632,7 +14574,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1463214574 },
1463314575 .call_frame = .{ .alignment = .@"16" },
1463414576 .extra_temps = .{
14635 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__subtf3" } } },
14577 .{ .type = .usize, .kind = .{ .extern_func = "__subtf3" } },
1463614578 .unused,
1463714579 .unused,
1463814580 .unused,
......@@ -14664,7 +14606,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1466414606 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
1466514607 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
1466614608 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
14667 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__subtf3" } } },
14609 .{ .type = .usize, .kind = .{ .extern_func = "__subtf3" } },
1466814610 .unused,
1466914611 .unused,
1467014612 .unused,
......@@ -14699,7 +14641,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1469914641 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
1470014642 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
1470114643 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
14702 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__subtf3" } } },
14644 .{ .type = .usize, .kind = .{ .extern_func = "__subtf3" } },
1470314645 .unused,
1470414646 .unused,
1470514647 .unused,
......@@ -14734,7 +14676,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1473414676 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
1473514677 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
1473614678 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
14737 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__subtf3" } } },
14679 .{ .type = .usize, .kind = .{ .extern_func = "__subtf3" } },
1473814680 .unused,
1473914681 .unused,
1474014682 .unused,
......@@ -23415,7 +23357,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2341523357 },
2341623358 .call_frame = .{ .alignment = .@"16" },
2341723359 .extra_temps = .{
23418 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__mulhf3" } } },
23360 .{ .type = .usize, .kind = .{ .extern_func = "__mulhf3" } },
2341923361 .unused,
2342023362 .unused,
2342123363 .unused,
......@@ -23547,7 +23489,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2354723489 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
2354823490 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
2354923491 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
23550 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__mulhf3" } } },
23492 .{ .type = .usize, .kind = .{ .extern_func = "__mulhf3" } },
2355123493 .unused,
2355223494 .unused,
2355323495 .unused,
......@@ -23583,7 +23525,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2358323525 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
2358423526 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
2358523527 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
23586 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__mulhf3" } } },
23528 .{ .type = .usize, .kind = .{ .extern_func = "__mulhf3" } },
2358723529 .unused,
2358823530 .unused,
2358923531 .unused,
......@@ -23620,7 +23562,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2362023562 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
2362123563 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
2362223564 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
23623 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__mulhf3" } } },
23565 .{ .type = .usize, .kind = .{ .extern_func = "__mulhf3" } },
2362423566 .{ .type = .f16, .kind = .{ .reg = .ax } },
2362523567 .unused,
2362623568 .unused,
......@@ -23660,7 +23602,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2366023602 .{ .type = .f32, .kind = .mem },
2366123603 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
2366223604 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
23663 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__mulhf3" } } },
23605 .{ .type = .usize, .kind = .{ .extern_func = "__mulhf3" } },
2366423606 .unused,
2366523607 .unused,
2366623608 .unused,
......@@ -24145,7 +24087,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2414524087 },
2414624088 .call_frame = .{ .alignment = .@"16" },
2414724089 .extra_temps = .{
24148 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__multf3" } } },
24090 .{ .type = .usize, .kind = .{ .extern_func = "__multf3" } },
2414924091 .unused,
2415024092 .unused,
2415124093 .unused,
......@@ -24177,7 +24119,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2417724119 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
2417824120 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
2417924121 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
24180 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__multf3" } } },
24122 .{ .type = .usize, .kind = .{ .extern_func = "__multf3" } },
2418124123 .unused,
2418224124 .unused,
2418324125 .unused,
......@@ -24212,7 +24154,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2421224154 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
2421324155 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
2421424156 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
24215 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__multf3" } } },
24157 .{ .type = .usize, .kind = .{ .extern_func = "__multf3" } },
2421624158 .unused,
2421724159 .unused,
2421824160 .unused,
......@@ -24247,7 +24189,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2424724189 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
2424824190 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
2424924191 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
24250 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__multf3" } } },
24192 .{ .type = .usize, .kind = .{ .extern_func = "__multf3" } },
2425124193 .unused,
2425224194 .unused,
2425324195 .unused,
......@@ -26107,7 +26049,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2610726049 },
2610826050 .call_frame = .{ .alignment = .@"16" },
2610926051 .extra_temps = .{
26110 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__mulhf3" } } },
26052 .{ .type = .usize, .kind = .{ .extern_func = "__mulhf3" } },
2611126053 .unused,
2611226054 .unused,
2611326055 .unused,
......@@ -26239,7 +26181,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2623926181 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
2624026182 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
2624126183 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
26242 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__mulhf3" } } },
26184 .{ .type = .usize, .kind = .{ .extern_func = "__mulhf3" } },
2624326185 .unused,
2624426186 .unused,
2624526187 .unused,
......@@ -26275,7 +26217,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2627526217 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
2627626218 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
2627726219 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
26278 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__mulhf3" } } },
26220 .{ .type = .usize, .kind = .{ .extern_func = "__mulhf3" } },
2627926221 .unused,
2628026222 .unused,
2628126223 .unused,
......@@ -26312,7 +26254,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2631226254 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
2631326255 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
2631426256 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
26315 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__mulhf3" } } },
26257 .{ .type = .usize, .kind = .{ .extern_func = "__mulhf3" } },
2631626258 .{ .type = .f16, .kind = .{ .reg = .ax } },
2631726259 .unused,
2631826260 .unused,
......@@ -26352,7 +26294,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2635226294 .{ .type = .f32, .kind = .mem },
2635326295 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
2635426296 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
26355 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__mulhf3" } } },
26297 .{ .type = .usize, .kind = .{ .extern_func = "__mulhf3" } },
2635626298 .unused,
2635726299 .unused,
2635826300 .unused,
......@@ -26837,7 +26779,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2683726779 },
2683826780 .call_frame = .{ .alignment = .@"16" },
2683926781 .extra_temps = .{
26840 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__multf3" } } },
26782 .{ .type = .usize, .kind = .{ .extern_func = "__multf3" } },
2684126783 .unused,
2684226784 .unused,
2684326785 .unused,
......@@ -26869,7 +26811,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2686926811 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
2687026812 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
2687126813 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
26872 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__multf3" } } },
26814 .{ .type = .usize, .kind = .{ .extern_func = "__multf3" } },
2687326815 .unused,
2687426816 .unused,
2687526817 .unused,
......@@ -26904,7 +26846,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2690426846 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
2690526847 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
2690626848 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
26907 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__multf3" } } },
26849 .{ .type = .usize, .kind = .{ .extern_func = "__multf3" } },
2690826850 .unused,
2690926851 .unused,
2691026852 .unused,
......@@ -26939,7 +26881,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2693926881 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
2694026882 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
2694126883 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
26942 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__multf3" } } },
26884 .{ .type = .usize, .kind = .{ .extern_func = "__multf3" } },
2694326885 .unused,
2694426886 .unused,
2694526887 .unused,
......@@ -32247,7 +32189,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3224732189 },
3224832190 .call_frame = .{ .alignment = .@"16" },
3224932191 .extra_temps = .{
32250 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divhf3" } } },
32192 .{ .type = .usize, .kind = .{ .extern_func = "__divhf3" } },
3225132193 .unused,
3225232194 .unused,
3225332195 .unused,
......@@ -32379,7 +32321,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3237932321 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
3238032322 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
3238132323 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
32382 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divhf3" } } },
32324 .{ .type = .usize, .kind = .{ .extern_func = "__divhf3" } },
3238332325 .unused,
3238432326 .unused,
3238532327 .unused,
......@@ -32415,7 +32357,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3241532357 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
3241632358 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
3241732359 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
32418 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divhf3" } } },
32360 .{ .type = .usize, .kind = .{ .extern_func = "__divhf3" } },
3241932361 .unused,
3242032362 .unused,
3242132363 .unused,
......@@ -32452,7 +32394,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3245232394 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
3245332395 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
3245432396 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
32455 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divhf3" } } },
32397 .{ .type = .usize, .kind = .{ .extern_func = "__divhf3" } },
3245632398 .{ .type = .f16, .kind = .{ .reg = .ax } },
3245732399 .unused,
3245832400 .unused,
......@@ -32492,7 +32434,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3249232434 .{ .type = .f32, .kind = .mem },
3249332435 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
3249432436 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
32495 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divhf3" } } },
32437 .{ .type = .usize, .kind = .{ .extern_func = "__divhf3" } },
3249632438 .unused,
3249732439 .unused,
3249832440 .unused,
......@@ -32995,7 +32937,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3299532937 },
3299632938 .call_frame = .{ .alignment = .@"16" },
3299732939 .extra_temps = .{
32998 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divtf3" } } },
32940 .{ .type = .usize, .kind = .{ .extern_func = "__divtf3" } },
3299932941 .unused,
3300032942 .unused,
3300132943 .unused,
......@@ -33027,7 +32969,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3302732969 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
3302832970 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
3302932971 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
33030 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divtf3" } } },
32972 .{ .type = .usize, .kind = .{ .extern_func = "__divtf3" } },
3303132973 .unused,
3303232974 .unused,
3303332975 .unused,
......@@ -33062,7 +33004,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3306233004 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
3306333005 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
3306433006 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
33065 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divtf3" } } },
33007 .{ .type = .usize, .kind = .{ .extern_func = "__divtf3" } },
3306633008 .unused,
3306733009 .unused,
3306833010 .unused,
......@@ -33097,7 +33039,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3309733039 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
3309833040 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
3309933041 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
33100 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divtf3" } } },
33042 .{ .type = .usize, .kind = .{ .extern_func = "__divtf3" } },
3310133043 .unused,
3310233044 .unused,
3310333045 .unused,
......@@ -33181,8 +33123,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3318133123 },
3318233124 .call_frame = .{ .alignment = .@"16" },
3318333125 .extra_temps = .{
33184 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divhf3" } } },
33185 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunch" } } },
33126 .{ .type = .usize, .kind = .{ .extern_func = "__divhf3" } },
33127 .{ .type = .usize, .kind = .{ .extern_func = "__trunch" } },
3318633128 .unused,
3318733129 .unused,
3318833130 .unused,
......@@ -33323,8 +33265,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3332333265 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
3332433266 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
3332533267 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
33326 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divhf3" } } },
33327 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunch" } } },
33268 .{ .type = .usize, .kind = .{ .extern_func = "__divhf3" } },
33269 .{ .type = .usize, .kind = .{ .extern_func = "__trunch" } },
3332833270 .unused,
3332933271 .unused,
3333033272 .unused,
......@@ -33360,8 +33302,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3336033302 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
3336133303 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
3336233304 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
33363 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divhf3" } } },
33364 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunch" } } },
33305 .{ .type = .usize, .kind = .{ .extern_func = "__divhf3" } },
33306 .{ .type = .usize, .kind = .{ .extern_func = "__trunch" } },
3336533307 .unused,
3336633308 .unused,
3336733309 .unused,
......@@ -33398,8 +33340,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3339833340 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
3339933341 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
3340033342 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
33401 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divhf3" } } },
33402 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunch" } } },
33343 .{ .type = .usize, .kind = .{ .extern_func = "__divhf3" } },
33344 .{ .type = .usize, .kind = .{ .extern_func = "__trunch" } },
3340333345 .{ .type = .f16, .kind = .{ .reg = .ax } },
3340433346 .unused,
3340533347 .unused,
......@@ -33439,8 +33381,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3343933381 .{ .type = .f32, .kind = .mem },
3344033382 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
3344133383 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
33442 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divhf3" } } },
33443 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunch" } } },
33384 .{ .type = .usize, .kind = .{ .extern_func = "__divhf3" } },
33385 .{ .type = .usize, .kind = .{ .extern_func = "__trunch" } },
3344433386 .unused,
3344533387 .unused,
3344633388 .unused,
......@@ -33508,7 +33450,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3350833450 },
3350933451 .call_frame = .{ .alignment = .@"16" },
3351033452 .extra_temps = .{
33511 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "truncf" } } },
33453 .{ .type = .usize, .kind = .{ .extern_func = "truncf" } },
3351233454 .unused,
3351333455 .unused,
3351433456 .unused,
......@@ -33572,7 +33514,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3357233514 .extra_temps = .{
3357333515 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
3357433516 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
33575 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "truncf" } } },
33517 .{ .type = .usize, .kind = .{ .extern_func = "truncf" } },
3357633518 .unused,
3357733519 .unused,
3357833520 .unused,
......@@ -33721,7 +33663,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3372133663 },
3372233664 .call_frame = .{ .alignment = .@"16" },
3372333665 .extra_temps = .{
33724 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "trunc" } } },
33666 .{ .type = .usize, .kind = .{ .extern_func = "trunc" } },
3372533667 .unused,
3372633668 .unused,
3372733669 .unused,
......@@ -33751,8 +33693,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3375133693 },
3375233694 .call_frame = .{ .alignment = .@"16" },
3375333695 .extra_temps = .{
33754 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divdf3" } } },
33755 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "trunc" } } },
33696 .{ .type = .usize, .kind = .{ .extern_func = "__divdf3" } },
33697 .{ .type = .usize, .kind = .{ .extern_func = "trunc" } },
3375633698 .unused,
3375733699 .unused,
3375833700 .unused,
......@@ -33899,7 +33841,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3389933841 .extra_temps = .{
3390033842 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
3390133843 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
33902 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "trunc" } } },
33844 .{ .type = .usize, .kind = .{ .extern_func = "trunc" } },
3390333845 .unused,
3390433846 .unused,
3390533847 .unused,
......@@ -33935,8 +33877,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3393533877 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
3393633878 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
3393733879 .{ .type = .f64, .kind = .{ .reg = .xmm1 } },
33938 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divdf3" } } },
33939 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "trunc" } } },
33880 .{ .type = .usize, .kind = .{ .extern_func = "__divdf3" } },
33881 .{ .type = .usize, .kind = .{ .extern_func = "trunc" } },
3394033882 .unused,
3394133883 .unused,
3394233884 .unused,
......@@ -33973,7 +33915,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3397333915 .{ .type = .f80, .kind = .{ .reg = .st6 } },
3397433916 .{ .type = .f80, .kind = .{ .reg = .st7 } },
3397533917 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
33976 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__truncx" } } },
33918 .{ .type = .usize, .kind = .{ .extern_func = "__truncx" } },
3397733919 .unused,
3397833920 .unused,
3397933921 .unused,
......@@ -34007,7 +33949,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3400733949 .{ .type = .f80, .kind = .{ .reg = .st6 } },
3400833950 .{ .type = .f80, .kind = .{ .reg = .st7 } },
3400933951 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
34010 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__truncx" } } },
33952 .{ .type = .usize, .kind = .{ .extern_func = "__truncx" } },
3401133953 .unused,
3401233954 .unused,
3401333955 .unused,
......@@ -34041,8 +33983,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3404133983 },
3404233984 .call_frame = .{ .alignment = .@"16" },
3404333985 .extra_temps = .{
34044 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divtf3" } } },
34045 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "truncq" } } },
33986 .{ .type = .usize, .kind = .{ .extern_func = "__divtf3" } },
33987 .{ .type = .usize, .kind = .{ .extern_func = "truncq" } },
3404633988 .unused,
3404733989 .unused,
3404833990 .unused,
......@@ -34074,8 +34016,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3407434016 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
3407534017 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
3407634018 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
34077 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divtf3" } } },
34078 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "truncq" } } },
34019 .{ .type = .usize, .kind = .{ .extern_func = "__divtf3" } },
34020 .{ .type = .usize, .kind = .{ .extern_func = "truncq" } },
3407934021 .unused,
3408034022 .unused,
3408134023 .unused,
......@@ -34110,8 +34052,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3411034052 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
3411134053 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
3411234054 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
34113 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divtf3" } } },
34114 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "truncq" } } },
34055 .{ .type = .usize, .kind = .{ .extern_func = "__divtf3" } },
34056 .{ .type = .usize, .kind = .{ .extern_func = "truncq" } },
3411534057 .unused,
3411634058 .unused,
3411734059 .unused,
......@@ -34146,8 +34088,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3414634088 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
3414734089 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
3414834090 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
34149 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divtf3" } } },
34150 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "truncq" } } },
34091 .{ .type = .usize, .kind = .{ .extern_func = "__divtf3" } },
34092 .{ .type = .usize, .kind = .{ .extern_func = "truncq" } },
3415134093 .unused,
3415234094 .unused,
3415334095 .unused,
......@@ -34237,12 +34179,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3423734179 },
3423834180 .call_frame = .{ .alignment = .@"16" },
3423934181 .extra_temps = .{
34240 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divhf3" } } },
34241 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
34182 .{ .type = .usize, .kind = .{ .extern_func = "__divhf3" } },
34183 .{ .type = .usize, .kind = .{ .extern_func = switch (direction) {
3424234184 else => unreachable,
3424334185 .zero => "__trunch",
3424434186 .down => "__floorh",
34245 } } } },
34187 } } },
3424634188 .unused,
3424734189 .unused,
3424834190 .unused,
......@@ -34377,12 +34319,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3437734319 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
3437834320 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
3437934321 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
34380 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divhf3" } } },
34381 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
34322 .{ .type = .usize, .kind = .{ .extern_func = "__divhf3" } },
34323 .{ .type = .usize, .kind = .{ .extern_func = switch (direction) {
3438234324 else => unreachable,
3438334325 .zero => "__trunch",
3438434326 .down => "__floorh",
34385 } } } },
34327 } } },
3438634328 .unused,
3438734329 .unused,
3438834330 .unused,
......@@ -34418,12 +34360,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3441834360 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
3441934361 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
3442034362 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
34421 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divhf3" } } },
34422 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
34363 .{ .type = .usize, .kind = .{ .extern_func = "__divhf3" } },
34364 .{ .type = .usize, .kind = .{ .extern_func = switch (direction) {
3442334365 else => unreachable,
3442434366 .zero => "__trunch",
3442534367 .down => "__floorh",
34426 } } } },
34368 } } },
3442734369 .unused,
3442834370 .unused,
3442934371 .unused,
......@@ -34460,12 +34402,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3446034402 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
3446134403 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
3446234404 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
34463 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divhf3" } } },
34464 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
34405 .{ .type = .usize, .kind = .{ .extern_func = "__divhf3" } },
34406 .{ .type = .usize, .kind = .{ .extern_func = switch (direction) {
3446534407 else => unreachable,
3446634408 .zero => "__trunch",
3446734409 .down => "__floorh",
34468 } } } },
34410 } } },
3446934411 .{ .type = .f16, .kind = .{ .reg = .ax } },
3447034412 .unused,
3447134413 .unused,
......@@ -34505,12 +34447,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3450534447 .{ .type = .f32, .kind = .mem },
3450634448 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
3450734449 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
34508 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divhf3" } } },
34509 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
34450 .{ .type = .usize, .kind = .{ .extern_func = "__divhf3" } },
34451 .{ .type = .usize, .kind = .{ .extern_func = switch (direction) {
3451034452 else => unreachable,
3451134453 .zero => "__trunch",
3451234454 .down => "__floorh",
34513 } } } },
34455 } } },
3451434456 .unused,
3451534457 .unused,
3451634458 .unused,
......@@ -34578,11 +34520,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3457834520 },
3457934521 .call_frame = .{ .alignment = .@"16" },
3458034522 .extra_temps = .{
34581 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
34523 .{ .type = .usize, .kind = .{ .extern_func = switch (direction) {
3458234524 else => unreachable,
3458334525 .zero => "truncf",
3458434526 .down => "floorf",
34585 } } } },
34527 } } },
3458634528 .unused,
3458734529 .unused,
3458834530 .unused,
......@@ -34646,11 +34588,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3464634588 .extra_temps = .{
3464734589 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
3464834590 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
34649 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
34591 .{ .type = .usize, .kind = .{ .extern_func = switch (direction) {
3465034592 else => unreachable,
3465134593 .zero => "truncf",
3465234594 .down => "floorf",
34653 } } } },
34595 } } },
3465434596 .unused,
3465534597 .unused,
3465634598 .unused,
......@@ -34799,11 +34741,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3479934741 },
3480034742 .call_frame = .{ .alignment = .@"16" },
3480134743 .extra_temps = .{
34802 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
34744 .{ .type = .usize, .kind = .{ .extern_func = switch (direction) {
3480334745 else => unreachable,
3480434746 .zero => "trunc",
3480534747 .down => "floor",
34806 } } } },
34748 } } },
3480734749 .unused,
3480834750 .unused,
3480934751 .unused,
......@@ -34833,12 +34775,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3483334775 },
3483434776 .call_frame = .{ .alignment = .@"16" },
3483534777 .extra_temps = .{
34836 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divdf3" } } },
34837 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
34778 .{ .type = .usize, .kind = .{ .extern_func = "__divdf3" } },
34779 .{ .type = .usize, .kind = .{ .extern_func = switch (direction) {
3483834780 else => unreachable,
3483934781 .zero => "trunc",
3484034782 .down => "floor",
34841 } } } },
34783 } } },
3484234784 .unused,
3484334785 .unused,
3484434786 .unused,
......@@ -34985,11 +34927,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3498534927 .extra_temps = .{
3498634928 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
3498734929 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
34988 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
34930 .{ .type = .usize, .kind = .{ .extern_func = switch (direction) {
3498934931 else => unreachable,
3499034932 .zero => "trunc",
3499134933 .down => "floor",
34992 } } } },
34934 } } },
3499334935 .unused,
3499434936 .unused,
3499534937 .unused,
......@@ -35025,12 +34967,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3502534967 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
3502634968 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
3502734969 .{ .type = .f64, .kind = .{ .reg = .xmm1 } },
35028 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divdf3" } } },
35029 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
34970 .{ .type = .usize, .kind = .{ .extern_func = "__divdf3" } },
34971 .{ .type = .usize, .kind = .{ .extern_func = switch (direction) {
3503034972 else => unreachable,
3503134973 .zero => "trunc",
3503234974 .down => "floor",
35033 } } } },
34975 } } },
3503434976 .unused,
3503534977 .unused,
3503634978 .unused,
......@@ -35067,11 +35009,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3506735009 .{ .type = .f80, .kind = .{ .reg = .st6 } },
3506835010 .{ .type = .f80, .kind = .{ .reg = .st7 } },
3506935011 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
35070 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
35012 .{ .type = .usize, .kind = .{ .extern_func = switch (direction) {
3507135013 else => unreachable,
3507235014 .zero => "__truncx",
3507335015 .down => "__floorx",
35074 } } } },
35016 } } },
3507535017 .unused,
3507635018 .unused,
3507735019 .unused,
......@@ -35103,11 +35045,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3510335045 .extra_temps = .{
3510435046 .{ .type = .f80, .kind = .{ .reg = .st7 } },
3510535047 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
35106 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
35048 .{ .type = .usize, .kind = .{ .extern_func = switch (direction) {
3510735049 else => unreachable,
3510835050 .zero => "__truncx",
3510935051 .down => "__floorx",
35110 } } } },
35052 } } },
3511135053 .unused,
3511235054 .unused,
3511335055 .unused,
......@@ -35140,11 +35082,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3514035082 .extra_temps = .{
3514135083 .{ .type = .f80, .kind = .{ .reg = .st7 } },
3514235084 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
35143 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
35085 .{ .type = .usize, .kind = .{ .extern_func = switch (direction) {
3514435086 else => unreachable,
3514535087 .zero => "__truncx",
3514635088 .down => "__floorx",
35147 } } } },
35089 } } },
3514835090 .unused,
3514935091 .unused,
3515035092 .unused,
......@@ -35178,11 +35120,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3517835120 .{ .type = .f80, .kind = .{ .reg = .st6 } },
3517935121 .{ .type = .f80, .kind = .{ .reg = .st7 } },
3518035122 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
35181 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
35123 .{ .type = .usize, .kind = .{ .extern_func = switch (direction) {
3518235124 else => unreachable,
3518335125 .zero => "__truncx",
3518435126 .down => "__floorx",
35185 } } } },
35127 } } },
3518635128 .unused,
3518735129 .unused,
3518835130 .unused,
......@@ -35216,12 +35158,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3521635158 },
3521735159 .call_frame = .{ .alignment = .@"16" },
3521835160 .extra_temps = .{
35219 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divtf3" } } },
35220 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
35161 .{ .type = .usize, .kind = .{ .extern_func = "__divtf3" } },
35162 .{ .type = .usize, .kind = .{ .extern_func = switch (direction) {
3522135163 else => unreachable,
3522235164 .zero => "truncq",
3522335165 .down => "floorq",
35224 } } } },
35166 } } },
3522535167 .unused,
3522635168 .unused,
3522735169 .unused,
......@@ -35253,12 +35195,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3525335195 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
3525435196 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
3525535197 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
35256 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divtf3" } } },
35257 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
35198 .{ .type = .usize, .kind = .{ .extern_func = "__divtf3" } },
35199 .{ .type = .usize, .kind = .{ .extern_func = switch (direction) {
3525835200 else => unreachable,
3525935201 .zero => "truncq",
3526035202 .down => "floorq",
35261 } } } },
35203 } } },
3526235204 .unused,
3526335205 .unused,
3526435206 .unused,
......@@ -35293,12 +35235,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3529335235 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
3529435236 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
3529535237 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
35296 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divtf3" } } },
35297 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
35238 .{ .type = .usize, .kind = .{ .extern_func = "__divtf3" } },
35239 .{ .type = .usize, .kind = .{ .extern_func = switch (direction) {
3529835240 else => unreachable,
3529935241 .zero => "truncq",
3530035242 .down => "floorq",
35301 } } } },
35243 } } },
3530235244 .unused,
3530335245 .unused,
3530435246 .unused,
......@@ -35333,12 +35275,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3533335275 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
3533435276 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
3533535277 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
35336 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divtf3" } } },
35337 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
35278 .{ .type = .usize, .kind = .{ .extern_func = "__divtf3" } },
35279 .{ .type = .usize, .kind = .{ .extern_func = switch (direction) {
3533835280 else => unreachable,
3533935281 .zero => "truncq",
3534035282 .down => "floorq",
35341 } } } },
35283 } } },
3534235284 .unused,
3534335285 .unused,
3534435286 .unused,
......@@ -35525,9 +35467,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3552535467 .extra_temps = .{
3552635468 .{ .type = .i128, .kind = .{ .param_gpr_pair = .{ .cc = .ccc, .at = 0 } } },
3552735469 .{ .type = .i64, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 3 } } },
35528 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__modti3" } } },
35470 .{ .type = .usize, .kind = .{ .extern_func = "__modti3" } },
3552935471 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
35530 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divti3" } } },
35472 .{ .type = .usize, .kind = .{ .extern_func = "__divti3" } },
3553135473 .unused,
3553235474 .unused,
3553335475 .unused,
......@@ -35576,9 +35518,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3557635518 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 2 } } },
3557735519 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 3 } } },
3557835520 .{ .type = .i32, .kind = .{ .rc = .general_purpose } },
35579 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divei4" } } },
35521 .{ .type = .usize, .kind = .{ .extern_func = "__divei4" } },
3558035522 .{ .kind = .{ .mem_of_type = .dst0 } },
35581 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__modei4" } } },
35523 .{ .type = .usize, .kind = .{ .extern_func = "__modei4" } },
3558235524 .unused,
3558335525 .unused,
3558435526 .unused,
......@@ -35657,8 +35599,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3565735599 },
3565835600 .call_frame = .{ .alignment = .@"16" },
3565935601 .extra_temps = .{
35660 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divhf3" } } },
35661 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floorh" } } },
35602 .{ .type = .usize, .kind = .{ .extern_func = "__divhf3" } },
35603 .{ .type = .usize, .kind = .{ .extern_func = "__floorh" } },
3566235604 .unused,
3566335605 .unused,
3566435606 .unused,
......@@ -35799,8 +35741,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3579935741 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
3580035742 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
3580135743 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
35802 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divhf3" } } },
35803 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floorh" } } },
35744 .{ .type = .usize, .kind = .{ .extern_func = "__divhf3" } },
35745 .{ .type = .usize, .kind = .{ .extern_func = "__floorh" } },
3580435746 .unused,
3580535747 .unused,
3580635748 .unused,
......@@ -35836,8 +35778,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3583635778 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
3583735779 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
3583835780 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
35839 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divhf3" } } },
35840 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floorh" } } },
35781 .{ .type = .usize, .kind = .{ .extern_func = "__divhf3" } },
35782 .{ .type = .usize, .kind = .{ .extern_func = "__floorh" } },
3584135783 .unused,
3584235784 .unused,
3584335785 .unused,
......@@ -35874,8 +35816,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3587435816 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
3587535817 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
3587635818 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
35877 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divhf3" } } },
35878 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floorh" } } },
35819 .{ .type = .usize, .kind = .{ .extern_func = "__divhf3" } },
35820 .{ .type = .usize, .kind = .{ .extern_func = "__floorh" } },
3587935821 .{ .type = .f16, .kind = .{ .reg = .ax } },
3588035822 .unused,
3588135823 .unused,
......@@ -35915,8 +35857,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3591535857 .{ .type = .f32, .kind = .mem },
3591635858 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
3591735859 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
35918 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divhf3" } } },
35919 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floorh" } } },
35860 .{ .type = .usize, .kind = .{ .extern_func = "__divhf3" } },
35861 .{ .type = .usize, .kind = .{ .extern_func = "__floorh" } },
3592035862 .unused,
3592135863 .unused,
3592235864 .unused,
......@@ -35984,7 +35926,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3598435926 },
3598535927 .call_frame = .{ .alignment = .@"16" },
3598635928 .extra_temps = .{
35987 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "floorf" } } },
35929 .{ .type = .usize, .kind = .{ .extern_func = "floorf" } },
3598835930 .unused,
3598935931 .unused,
3599035932 .unused,
......@@ -36048,7 +35990,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3604835990 .extra_temps = .{
3604935991 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
3605035992 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
36051 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "floorf" } } },
35993 .{ .type = .usize, .kind = .{ .extern_func = "floorf" } },
3605235994 .unused,
3605335995 .unused,
3605435996 .unused,
......@@ -36197,7 +36139,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3619736139 },
3619836140 .call_frame = .{ .alignment = .@"16" },
3619936141 .extra_temps = .{
36200 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "floor" } } },
36142 .{ .type = .usize, .kind = .{ .extern_func = "floor" } },
3620136143 .unused,
3620236144 .unused,
3620336145 .unused,
......@@ -36227,8 +36169,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3622736169 },
3622836170 .call_frame = .{ .alignment = .@"16" },
3622936171 .extra_temps = .{
36230 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divdf3" } } },
36231 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "floor" } } },
36172 .{ .type = .usize, .kind = .{ .extern_func = "__divdf3" } },
36173 .{ .type = .usize, .kind = .{ .extern_func = "floor" } },
3623236174 .unused,
3623336175 .unused,
3623436176 .unused,
......@@ -36375,7 +36317,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3637536317 .extra_temps = .{
3637636318 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
3637736319 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
36378 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "floor" } } },
36320 .{ .type = .usize, .kind = .{ .extern_func = "floor" } },
3637936321 .unused,
3638036322 .unused,
3638136323 .unused,
......@@ -36411,8 +36353,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3641136353 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
3641236354 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
3641336355 .{ .type = .f64, .kind = .{ .reg = .xmm1 } },
36414 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divdf3" } } },
36415 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "floor" } } },
36356 .{ .type = .usize, .kind = .{ .extern_func = "__divdf3" } },
36357 .{ .type = .usize, .kind = .{ .extern_func = "floor" } },
3641636358 .unused,
3641736359 .unused,
3641836360 .unused,
......@@ -36449,7 +36391,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3644936391 .{ .type = .f80, .kind = .{ .reg = .st6 } },
3645036392 .{ .type = .f80, .kind = .{ .reg = .st7 } },
3645136393 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
36452 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floorx" } } },
36394 .{ .type = .usize, .kind = .{ .extern_func = "__floorx" } },
3645336395 .unused,
3645436396 .unused,
3645536397 .unused,
......@@ -36483,7 +36425,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3648336425 .{ .type = .f80, .kind = .{ .reg = .st6 } },
3648436426 .{ .type = .f80, .kind = .{ .reg = .st7 } },
3648536427 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
36486 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floorx" } } },
36428 .{ .type = .usize, .kind = .{ .extern_func = "__floorx" } },
3648736429 .unused,
3648836430 .unused,
3648936431 .unused,
......@@ -36517,8 +36459,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3651736459 },
3651836460 .call_frame = .{ .alignment = .@"16" },
3651936461 .extra_temps = .{
36520 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divtf3" } } },
36521 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "floorq" } } },
36462 .{ .type = .usize, .kind = .{ .extern_func = "__divtf3" } },
36463 .{ .type = .usize, .kind = .{ .extern_func = "floorq" } },
3652236464 .unused,
3652336465 .unused,
3652436466 .unused,
......@@ -36550,8 +36492,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3655036492 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
3655136493 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
3655236494 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
36553 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divtf3" } } },
36554 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "floorq" } } },
36495 .{ .type = .usize, .kind = .{ .extern_func = "__divtf3" } },
36496 .{ .type = .usize, .kind = .{ .extern_func = "floorq" } },
3655536497 .unused,
3655636498 .unused,
3655736499 .unused,
......@@ -36586,8 +36528,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3658636528 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
3658736529 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
3658836530 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
36589 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divtf3" } } },
36590 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "floorq" } } },
36531 .{ .type = .usize, .kind = .{ .extern_func = "__divtf3" } },
36532 .{ .type = .usize, .kind = .{ .extern_func = "floorq" } },
3659136533 .unused,
3659236534 .unused,
3659336535 .unused,
......@@ -36622,8 +36564,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3662236564 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
3662336565 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
3662436566 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
36625 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divtf3" } } },
36626 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "floorq" } } },
36567 .{ .type = .usize, .kind = .{ .extern_func = "__divtf3" } },
36568 .{ .type = .usize, .kind = .{ .extern_func = "floorq" } },
3662736569 .unused,
3662836570 .unused,
3662936571 .unused,
......@@ -36779,7 +36721,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3677936721 },
3678036722 .call_frame = .{ .alignment = .@"16" },
3678136723 .extra_temps = .{
36782 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__modti3" } } },
36724 .{ .type = .usize, .kind = .{ .extern_func = "__modti3" } },
3678336725 .unused,
3678436726 .unused,
3678536727 .unused,
......@@ -36808,7 +36750,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3680836750 },
3680936751 .call_frame = .{ .alignment = .@"16" },
3681036752 .extra_temps = .{
36811 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__umodti3" } } },
36753 .{ .type = .usize, .kind = .{ .extern_func = "__umodti3" } },
3681236754 .unused,
3681336755 .unused,
3681436756 .unused,
......@@ -36841,7 +36783,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3684136783 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 1 } } },
3684236784 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 2 } } },
3684336785 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 3 } } },
36844 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__modei4" } } },
36786 .{ .type = .usize, .kind = .{ .extern_func = "__modei4" } },
3684536787 .unused,
3684636788 .unused,
3684736789 .unused,
......@@ -36874,7 +36816,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3687436816 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 1 } } },
3687536817 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 2 } } },
3687636818 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 3 } } },
36877 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__umodei4" } } },
36819 .{ .type = .usize, .kind = .{ .extern_func = "__umodei4" } },
3687836820 .unused,
3687936821 .unused,
3688036822 .unused,
......@@ -37238,7 +37180,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3723837180 .{ .type = .i64, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 1 } } },
3723937181 .{ .type = .u64, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 2 } } },
3724037182 .{ .type = .i64, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 3 } } },
37241 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__modti3" } } },
37183 .{ .type = .usize, .kind = .{ .extern_func = "__modti3" } },
3724237184 .{ .type = .u64, .kind = .{ .ret_gpr = .{ .cc = .ccc, .at = 0 } } },
3724337185 .unused,
3724437186 .unused,
......@@ -37276,7 +37218,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3727637218 .{ .type = .u64, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 1 } } },
3727737219 .{ .type = .u64, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 2 } } },
3727837220 .{ .type = .u64, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 3 } } },
37279 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__umodti3" } } },
37221 .{ .type = .usize, .kind = .{ .extern_func = "__umodti3" } },
3728037222 .{ .type = .u64, .kind = .{ .ret_gpr = .{ .cc = .ccc, .at = 0 } } },
3728137223 .unused,
3728237224 .unused,
......@@ -37314,7 +37256,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3731437256 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 1 } } },
3731537257 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 2 } } },
3731637258 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 3 } } },
37317 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__modei4" } } },
37259 .{ .type = .usize, .kind = .{ .extern_func = "__modei4" } },
3731837260 .unused,
3731937261 .unused,
3732037262 .unused,
......@@ -37350,7 +37292,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3735037292 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 1 } } },
3735137293 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 2 } } },
3735237294 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 3 } } },
37353 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__umodei4" } } },
37295 .{ .type = .usize, .kind = .{ .extern_func = "__umodei4" } },
3735437296 .unused,
3735537297 .unused,
3735637298 .unused,
......@@ -37381,7 +37323,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3738137323 },
3738237324 .call_frame = .{ .alignment = .@"16" },
3738337325 .extra_temps = .{
37384 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodh" } } },
37326 .{ .type = .usize, .kind = .{ .extern_func = "__fmodh" } },
3738537327 .unused,
3738637328 .unused,
3738737329 .unused,
......@@ -37413,7 +37355,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3741337355 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
3741437356 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
3741537357 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
37416 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodh" } } },
37358 .{ .type = .usize, .kind = .{ .extern_func = "__fmodh" } },
3741737359 .unused,
3741837360 .unused,
3741937361 .unused,
......@@ -37449,7 +37391,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3744937391 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
3745037392 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
3745137393 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
37452 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodh" } } },
37394 .{ .type = .usize, .kind = .{ .extern_func = "__fmodh" } },
3745337395 .unused,
3745437396 .unused,
3745537397 .unused,
......@@ -37486,7 +37428,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3748637428 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
3748737429 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
3748837430 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
37489 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodh" } } },
37431 .{ .type = .usize, .kind = .{ .extern_func = "__fmodh" } },
3749037432 .{ .type = .f16, .kind = .{ .reg = .ax } },
3749137433 .unused,
3749237434 .unused,
......@@ -37526,7 +37468,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3752637468 .{ .type = .f32, .kind = .mem },
3752737469 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
3752837470 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
37529 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodh" } } },
37471 .{ .type = .usize, .kind = .{ .extern_func = "__fmodh" } },
3753037472 .unused,
3753137473 .unused,
3753237474 .unused,
......@@ -37562,7 +37504,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3756237504 },
3756337505 .call_frame = .{ .alignment = .@"16" },
3756437506 .extra_temps = .{
37565 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmodf" } } },
37507 .{ .type = .usize, .kind = .{ .extern_func = "fmodf" } },
3756637508 .unused,
3756737509 .unused,
3756837510 .unused,
......@@ -37594,7 +37536,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3759437536 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
3759537537 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
3759637538 .{ .type = .f32, .kind = .{ .reg = .xmm1 } },
37597 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmodf" } } },
37539 .{ .type = .usize, .kind = .{ .extern_func = "fmodf" } },
3759837540 .unused,
3759937541 .unused,
3760037542 .unused,
......@@ -37629,7 +37571,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3762937571 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
3763037572 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
3763137573 .{ .type = .f32, .kind = .{ .reg = .xmm1 } },
37632 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmodf" } } },
37574 .{ .type = .usize, .kind = .{ .extern_func = "fmodf" } },
3763337575 .unused,
3763437576 .unused,
3763537577 .unused,
......@@ -37661,7 +37603,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3766137603 },
3766237604 .call_frame = .{ .alignment = .@"16" },
3766337605 .extra_temps = .{
37664 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmod" } } },
37606 .{ .type = .usize, .kind = .{ .extern_func = "fmod" } },
3766537607 .unused,
3766637608 .unused,
3766737609 .unused,
......@@ -37693,7 +37635,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3769337635 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
3769437636 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
3769537637 .{ .type = .f64, .kind = .{ .reg = .xmm1 } },
37696 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmod" } } },
37638 .{ .type = .usize, .kind = .{ .extern_func = "fmod" } },
3769737639 .unused,
3769837640 .unused,
3769937641 .unused,
......@@ -37728,7 +37670,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3772837670 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
3772937671 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
3773037672 .{ .type = .f64, .kind = .{ .reg = .xmm1 } },
37731 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmod" } } },
37673 .{ .type = .usize, .kind = .{ .extern_func = "fmod" } },
3773237674 .unused,
3773337675 .unused,
3773437676 .unused,
......@@ -37763,7 +37705,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3776337705 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
3776437706 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
3776537707 .{ .type = .f64, .kind = .{ .reg = .xmm1 } },
37766 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmod" } } },
37708 .{ .type = .usize, .kind = .{ .extern_func = "fmod" } },
3776737709 .unused,
3776837710 .unused,
3776937711 .unused,
......@@ -37799,7 +37741,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3779937741 .extra_temps = .{
3780037742 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
3780137743 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
37802 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodx" } } },
37744 .{ .type = .usize, .kind = .{ .extern_func = "__fmodx" } },
3780337745 .unused,
3780437746 .unused,
3780537747 .unused,
......@@ -37832,7 +37774,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3783237774 .extra_temps = .{
3783337775 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
3783437776 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
37835 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodx" } } },
37777 .{ .type = .usize, .kind = .{ .extern_func = "__fmodx" } },
3783637778 .unused,
3783737779 .unused,
3783837780 .unused,
......@@ -37865,7 +37807,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3786537807 .extra_temps = .{
3786637808 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
3786737809 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
37868 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodx" } } },
37810 .{ .type = .usize, .kind = .{ .extern_func = "__fmodx" } },
3786937811 .unused,
3787037812 .unused,
3787137813 .unused,
......@@ -37899,7 +37841,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3789937841 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
3790037842 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
3790137843 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
37902 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodx" } } },
37844 .{ .type = .usize, .kind = .{ .extern_func = "__fmodx" } },
3790337845 .unused,
3790437846 .unused,
3790537847 .unused,
......@@ -37937,7 +37879,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3793737879 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
3793837880 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
3793937881 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
37940 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodx" } } },
37882 .{ .type = .usize, .kind = .{ .extern_func = "__fmodx" } },
3794137883 .unused,
3794237884 .unused,
3794337885 .unused,
......@@ -37975,7 +37917,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3797537917 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
3797637918 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
3797737919 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
37978 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodx" } } },
37920 .{ .type = .usize, .kind = .{ .extern_func = "__fmodx" } },
3797937921 .unused,
3798037922 .unused,
3798137923 .unused,
......@@ -38010,7 +37952,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3801037952 },
3801137953 .call_frame = .{ .alignment = .@"16" },
3801237954 .extra_temps = .{
38013 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmodq" } } },
37955 .{ .type = .usize, .kind = .{ .extern_func = "fmodq" } },
3801437956 .unused,
3801537957 .unused,
3801637958 .unused,
......@@ -38042,7 +37984,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3804237984 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
3804337985 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
3804437986 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
38045 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmodq" } } },
37987 .{ .type = .usize, .kind = .{ .extern_func = "fmodq" } },
3804637988 .unused,
3804737989 .unused,
3804837990 .unused,
......@@ -38077,7 +38019,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3807738019 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
3807838020 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
3807938021 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
38080 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmodq" } } },
38022 .{ .type = .usize, .kind = .{ .extern_func = "fmodq" } },
3808138023 .unused,
3808238024 .unused,
3808338025 .unused,
......@@ -38112,7 +38054,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3811238054 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
3811338055 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
3811438056 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
38115 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmodq" } } },
38057 .{ .type = .usize, .kind = .{ .extern_func = "fmodq" } },
3811638058 .unused,
3811738059 .unused,
3811838060 .unused,
......@@ -38447,7 +38389,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3844738389 .call_frame = .{ .alignment = .@"16" },
3844838390 .extra_temps = .{
3844938391 .{ .type = .i64, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 3 } } },
38450 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__modti3" } } },
38392 .{ .type = .usize, .kind = .{ .extern_func = "__modti3" } },
3845138393 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
3845238394 .unused,
3845338395 .unused,
......@@ -38486,7 +38428,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3848638428 .call_frame = .{ .alignment = .@"16" },
3848738429 .extra_temps = .{
3848838430 .{ .type = .i64, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 3 } } },
38489 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__modti3" } } },
38431 .{ .type = .usize, .kind = .{ .extern_func = "__modti3" } },
3849038432 .unused,
3849138433 .unused,
3849238434 .unused,
......@@ -38526,7 +38468,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3852638468 },
3852738469 .call_frame = .{ .alignment = .@"16" },
3852838470 .extra_temps = .{
38529 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__umodti3" } } },
38471 .{ .type = .usize, .kind = .{ .extern_func = "__umodti3" } },
3853038472 .unused,
3853138473 .unused,
3853238474 .unused,
......@@ -38560,7 +38502,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3856038502 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 2 } } },
3856138503 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 3 } } },
3856238504 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
38563 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__modei4" } } },
38505 .{ .type = .usize, .kind = .{ .extern_func = "__modei4" } },
3856438506 .unused,
3856538507 .unused,
3856638508 .unused,
......@@ -38617,7 +38559,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3861738559 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 1 } } },
3861838560 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 2 } } },
3861938561 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 3 } } },
38620 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__umodei4" } } },
38562 .{ .type = .usize, .kind = .{ .extern_func = "__umodei4" } },
3862138563 .unused,
3862238564 .unused,
3862338565 .unused,
......@@ -38647,7 +38589,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3864738589 .call_frame = .{ .alignment = .@"16" },
3864838590 .extra_temps = .{
3864938591 .{ .type = .f16, .kind = .{ .rc = .general_purpose } },
38650 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodh" } } },
38592 .{ .type = .usize, .kind = .{ .extern_func = "__fmodh" } },
3865138593 .{ .type = .f16, .kind = .{ .reg = .dx } },
3865238594 .{ .type = .f16, .kind = .{ .reg = .ax } },
3865338595 .unused,
......@@ -38688,7 +38630,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3868838630 .call_frame = .{ .alignment = .@"16" },
3868938631 .extra_temps = .{
3869038632 .{ .type = .f16, .kind = .{ .rc = .general_purpose } },
38691 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodh" } } },
38633 .{ .type = .usize, .kind = .{ .extern_func = "__fmodh" } },
3869238634 .{ .type = .f16, .kind = .{ .reg = .dx } },
3869338635 .{ .type = .f16, .kind = .{ .reg = .ax } },
3869438636 .unused,
......@@ -38729,10 +38671,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3872938671 .call_frame = .{ .alignment = .@"16" },
3873038672 .extra_temps = .{
3873138673 .{ .type = .f16, .kind = .{ .rc = .general_purpose } },
38732 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodh" } } },
38674 .{ .type = .usize, .kind = .{ .extern_func = "__fmodh" } },
3873338675 .{ .type = .f16, .kind = .{ .reg = .dx } },
3873438676 .{ .type = .f16, .kind = .{ .reg = .ax } },
38735 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addhf3" } } },
38677 .{ .type = .usize, .kind = .{ .extern_func = "__addhf3" } },
3873638678 .unused,
3873738679 .unused,
3873838680 .unused,
......@@ -38767,10 +38709,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3876738709 .call_frame = .{ .alignment = .@"16" },
3876838710 .extra_temps = .{
3876938711 .{ .type = .f16, .kind = .{ .rc = .general_purpose } },
38770 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodh" } } },
38712 .{ .type = .usize, .kind = .{ .extern_func = "__fmodh" } },
3877138713 .{ .type = .f16, .kind = .{ .reg = .dx } },
3877238714 .{ .type = .f16, .kind = .{ .reg = .ax } },
38773 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addhf3" } } },
38715 .{ .type = .usize, .kind = .{ .extern_func = "__addhf3" } },
3877438716 .unused,
3877538717 .unused,
3877638718 .unused,
......@@ -38805,10 +38747,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3880538747 .call_frame = .{ .alignment = .@"16" },
3880638748 .extra_temps = .{
3880738749 .{ .type = .f16, .kind = .{ .rc = .general_purpose } },
38808 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodh" } } },
38750 .{ .type = .usize, .kind = .{ .extern_func = "__fmodh" } },
3880938751 .{ .type = .f16, .kind = .{ .reg = .dx } },
3881038752 .{ .type = .f16, .kind = .{ .reg = .ax } },
38811 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addhf3" } } },
38753 .{ .type = .usize, .kind = .{ .extern_func = "__addhf3" } },
3881238754 .unused,
3881338755 .unused,
3881438756 .unused,
......@@ -38843,10 +38785,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3884338785 .call_frame = .{ .alignment = .@"16" },
3884438786 .extra_temps = .{
3884538787 .{ .type = .f16, .kind = .{ .rc = .general_purpose } },
38846 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodh" } } },
38788 .{ .type = .usize, .kind = .{ .extern_func = "__fmodh" } },
3884738789 .{ .type = .f16, .kind = .{ .reg = .dx } },
3884838790 .{ .type = .f16, .kind = .{ .reg = .ax } },
38849 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addhf3" } } },
38791 .{ .type = .usize, .kind = .{ .extern_func = "__addhf3" } },
3885038792 .unused,
3885138793 .unused,
3885238794 .unused,
......@@ -38881,10 +38823,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3888138823 .call_frame = .{ .alignment = .@"16" },
3888238824 .extra_temps = .{
3888338825 .{ .type = .f32, .kind = .mem },
38884 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodh" } } },
38826 .{ .type = .usize, .kind = .{ .extern_func = "__fmodh" } },
3888538827 .{ .type = .f32, .kind = .mem },
3888638828 .{ .type = .f16, .kind = .{ .reg = .ax } },
38887 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addhf3" } } },
38829 .{ .type = .usize, .kind = .{ .extern_func = "__addhf3" } },
3888838830 .unused,
3888938831 .unused,
3889038832 .unused,
......@@ -38919,10 +38861,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3891938861 .call_frame = .{ .alignment = .@"16" },
3892038862 .extra_temps = .{
3892138863 .{ .type = .f32, .kind = .mem },
38922 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodh" } } },
38864 .{ .type = .usize, .kind = .{ .extern_func = "__fmodh" } },
3892338865 .{ .type = .f32, .kind = .mem },
3892438866 .{ .type = .f16, .kind = .{ .reg = .ax } },
38925 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addhf3" } } },
38867 .{ .type = .usize, .kind = .{ .extern_func = "__addhf3" } },
3892638868 .unused,
3892738869 .unused,
3892838870 .unused,
......@@ -38960,7 +38902,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3896038902 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
3896138903 .{ .type = .f16, .kind = .{ .rc = .general_purpose } },
3896238904 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
38963 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodh" } } },
38905 .{ .type = .usize, .kind = .{ .extern_func = "__fmodh" } },
3896438906 .{ .type = .f16, .kind = .{ .reg = .dx } },
3896538907 .{ .type = .f16, .kind = .{ .reg = .ax } },
3896638908 .unused,
......@@ -39008,7 +38950,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3900838950 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
3900938951 .{ .type = .f16, .kind = .{ .rc = .general_purpose } },
3901038952 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
39011 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodh" } } },
38953 .{ .type = .usize, .kind = .{ .extern_func = "__fmodh" } },
3901238954 .{ .type = .f16, .kind = .{ .reg = .dx } },
3901338955 .{ .type = .f16, .kind = .{ .reg = .ax } },
3901438956 .unused,
......@@ -39056,10 +38998,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3905638998 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
3905738999 .{ .type = .f16, .kind = .{ .rc = .general_purpose } },
3905839000 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
39059 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodh" } } },
39001 .{ .type = .usize, .kind = .{ .extern_func = "__fmodh" } },
3906039002 .{ .type = .f16, .kind = .{ .reg = .dx } },
3906139003 .{ .type = .f16, .kind = .{ .reg = .ax } },
39062 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addhf3" } } },
39004 .{ .type = .usize, .kind = .{ .extern_func = "__addhf3" } },
3906339005 .unused,
3906439006 .unused,
3906539007 .unused,
......@@ -39101,10 +39043,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3910139043 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
3910239044 .{ .type = .f16, .kind = .{ .rc = .general_purpose } },
3910339045 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
39104 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodh" } } },
39046 .{ .type = .usize, .kind = .{ .extern_func = "__fmodh" } },
3910539047 .{ .type = .f16, .kind = .{ .reg = .dx } },
3910639048 .{ .type = .f16, .kind = .{ .reg = .ax } },
39107 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addhf3" } } },
39049 .{ .type = .usize, .kind = .{ .extern_func = "__addhf3" } },
3910839050 .unused,
3910939051 .unused,
3911039052 .unused,
......@@ -39146,10 +39088,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3914639088 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
3914739089 .{ .type = .f16, .kind = .{ .rc = .general_purpose } },
3914839090 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
39149 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodh" } } },
39091 .{ .type = .usize, .kind = .{ .extern_func = "__fmodh" } },
3915039092 .{ .type = .f16, .kind = .{ .reg = .dx } },
3915139093 .{ .type = .f16, .kind = .{ .reg = .ax } },
39152 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addhf3" } } },
39094 .{ .type = .usize, .kind = .{ .extern_func = "__addhf3" } },
3915339095 .unused,
3915439096 .unused,
3915539097 .unused,
......@@ -39191,10 +39133,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3919139133 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
3919239134 .{ .type = .f16, .kind = .{ .rc = .general_purpose } },
3919339135 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
39194 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodh" } } },
39136 .{ .type = .usize, .kind = .{ .extern_func = "__fmodh" } },
3919539137 .{ .type = .f16, .kind = .{ .reg = .dx } },
3919639138 .{ .type = .f16, .kind = .{ .reg = .ax } },
39197 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addhf3" } } },
39139 .{ .type = .usize, .kind = .{ .extern_func = "__addhf3" } },
3919839140 .unused,
3919939141 .unused,
3920039142 .unused,
......@@ -39236,10 +39178,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3923639178 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
3923739179 .{ .type = .f16, .kind = .{ .rc = .general_purpose } },
3923839180 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
39239 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodh" } } },
39181 .{ .type = .usize, .kind = .{ .extern_func = "__fmodh" } },
3924039182 .{ .type = .f16, .kind = .{ .reg = .dx } },
3924139183 .{ .type = .f16, .kind = .{ .reg = .ax } },
39242 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addhf3" } } },
39184 .{ .type = .usize, .kind = .{ .extern_func = "__addhf3" } },
3924339185 .unused,
3924439186 .unused,
3924539187 .unused,
......@@ -39282,10 +39224,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3928239224 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
3928339225 .{ .type = .f16, .kind = .{ .rc = .general_purpose } },
3928439226 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
39285 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodh" } } },
39227 .{ .type = .usize, .kind = .{ .extern_func = "__fmodh" } },
3928639228 .{ .type = .f16, .kind = .{ .reg = .dx } },
3928739229 .{ .type = .f16, .kind = .{ .reg = .ax } },
39288 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addhf3" } } },
39230 .{ .type = .usize, .kind = .{ .extern_func = "__addhf3" } },
3928939231 .unused,
3929039232 .unused,
3929139233 .unused,
......@@ -39329,9 +39271,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3932939271 .{ .type = .f32, .kind = .mem },
3933039272 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
3933139273 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
39332 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodh" } } },
39274 .{ .type = .usize, .kind = .{ .extern_func = "__fmodh" } },
3933339275 .{ .type = .f32, .kind = .mem },
39334 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addhf3" } } },
39276 .{ .type = .usize, .kind = .{ .extern_func = "__addhf3" } },
3933539277 .unused,
3933639278 .unused,
3933739279 .unused,
......@@ -39378,9 +39320,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3937839320 .{ .type = .f32, .kind = .mem },
3937939321 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
3938039322 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
39381 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodh" } } },
39323 .{ .type = .usize, .kind = .{ .extern_func = "__fmodh" } },
3938239324 .{ .type = .f32, .kind = .mem },
39383 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addhf3" } } },
39325 .{ .type = .usize, .kind = .{ .extern_func = "__addhf3" } },
3938439326 .unused,
3938539327 .unused,
3938639328 .unused,
......@@ -39423,7 +39365,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3942339365 .call_frame = .{ .alignment = .@"16" },
3942439366 .extra_temps = .{
3942539367 .{ .type = .f32, .kind = .{ .rc = .general_purpose } },
39426 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmodf" } } },
39368 .{ .type = .usize, .kind = .{ .extern_func = "fmodf" } },
3942739369 .{ .type = .f32, .kind = .{ .reg = .edx } },
3942839370 .{ .type = .f32, .kind = .{ .reg = .eax } },
3942939371 .unused,
......@@ -39461,7 +39403,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3946139403 .call_frame = .{ .alignment = .@"16" },
3946239404 .extra_temps = .{
3946339405 .{ .type = .f32, .kind = .{ .rc = .general_purpose } },
39464 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmodf" } } },
39406 .{ .type = .usize, .kind = .{ .extern_func = "fmodf" } },
3946539407 .{ .type = .f32, .kind = .{ .reg = .edx } },
3946639408 .{ .type = .f32, .kind = .{ .reg = .eax } },
3946739409 .unused,
......@@ -39499,7 +39441,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3949939441 .call_frame = .{ .alignment = .@"16" },
3950039442 .extra_temps = .{
3950139443 .{ .type = .f32, .kind = .mem },
39502 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmodf" } } },
39444 .{ .type = .usize, .kind = .{ .extern_func = "fmodf" } },
3950339445 .{ .type = .f32, .kind = .mem },
3950439446 .{ .type = .f32, .kind = .{ .reg = .eax } },
3950539447 .unused,
......@@ -39539,7 +39481,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3953939481 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
3954039482 .{ .type = .f32, .kind = .{ .reg = .xmm1 } },
3954139483 .{ .type = .f32, .kind = .{ .rc = .general_purpose } },
39542 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmodf" } } },
39484 .{ .type = .usize, .kind = .{ .extern_func = "fmodf" } },
3954339485 .{ .type = .f32, .kind = .{ .reg = .edx } },
3954439486 .{ .type = .f32, .kind = .{ .reg = .eax } },
3954539487 .unused,
......@@ -39583,7 +39525,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3958339525 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
3958439526 .{ .type = .f32, .kind = .{ .reg = .xmm1 } },
3958539527 .{ .type = .f32, .kind = .{ .rc = .general_purpose } },
39586 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmodf" } } },
39528 .{ .type = .usize, .kind = .{ .extern_func = "fmodf" } },
3958739529 .{ .type = .f32, .kind = .{ .reg = .edx } },
3958839530 .{ .type = .f32, .kind = .{ .reg = .eax } },
3958939531 .unused,
......@@ -39626,7 +39568,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3962639568 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
3962739569 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
3962839570 .{ .type = .f32, .kind = .{ .reg = .xmm1 } },
39629 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmodf" } } },
39571 .{ .type = .usize, .kind = .{ .extern_func = "fmodf" } },
3963039572 .{ .type = .f32, .kind = .mem },
3963139573 .{ .type = .f32, .kind = .{ .reg = .eax } },
3963239574 .unused,
......@@ -39666,7 +39608,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3966639608 .call_frame = .{ .alignment = .@"16" },
3966739609 .extra_temps = .{
3966839610 .{ .type = .f64, .kind = .{ .rc = .general_purpose } },
39669 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmod" } } },
39611 .{ .type = .usize, .kind = .{ .extern_func = "fmod" } },
3967039612 .{ .type = .f64, .kind = .{ .reg = .rcx } },
3967139613 .{ .type = .f64, .kind = .{ .reg = .rdx } },
3967239614 .{ .type = .f64, .kind = .{ .reg = .rax } },
......@@ -39705,7 +39647,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3970539647 .call_frame = .{ .alignment = .@"16" },
3970639648 .extra_temps = .{
3970739649 .{ .type = .f64, .kind = .{ .rc = .general_purpose } },
39708 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmod" } } },
39650 .{ .type = .usize, .kind = .{ .extern_func = "fmod" } },
3970939651 .{ .type = .f64, .kind = .{ .reg = .rcx } },
3971039652 .{ .type = .f64, .kind = .{ .reg = .rdx } },
3971139653 .{ .type = .f64, .kind = .{ .reg = .rax } },
......@@ -39744,7 +39686,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3974439686 .call_frame = .{ .alignment = .@"16" },
3974539687 .extra_temps = .{
3974639688 .{ .type = .f64, .kind = .mem },
39747 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmod" } } },
39689 .{ .type = .usize, .kind = .{ .extern_func = "fmod" } },
3974839690 .{ .type = .f64, .kind = .mem },
3974939691 .{ .type = .f64, .kind = .{ .reg = .rdx } },
3975039692 .{ .type = .f64, .kind = .{ .reg = .rax } },
......@@ -39789,7 +39731,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3978939731 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
3979039732 .{ .type = .f64, .kind = .{ .reg = .xmm1 } },
3979139733 .{ .type = .f64, .kind = .{ .rc = .general_purpose } },
39792 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmod" } } },
39734 .{ .type = .usize, .kind = .{ .extern_func = "fmod" } },
3979339735 .{ .type = .f64, .kind = .{ .reg = .rcx } },
3979439736 .{ .type = .f64, .kind = .{ .reg = .rdx } },
3979539737 .{ .type = .f64, .kind = .{ .reg = .rax } },
......@@ -39834,7 +39776,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3983439776 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
3983539777 .{ .type = .f64, .kind = .{ .reg = .xmm1 } },
3983639778 .{ .type = .f64, .kind = .{ .rc = .general_purpose } },
39837 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmod" } } },
39779 .{ .type = .usize, .kind = .{ .extern_func = "fmod" } },
3983839780 .{ .type = .f64, .kind = .{ .reg = .rcx } },
3983939781 .{ .type = .f64, .kind = .{ .reg = .rdx } },
3984039782 .{ .type = .f64, .kind = .{ .reg = .rax } },
......@@ -39878,7 +39820,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3987839820 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
3987939821 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
3988039822 .{ .type = .f64, .kind = .{ .reg = .xmm1 } },
39881 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmod" } } },
39823 .{ .type = .usize, .kind = .{ .extern_func = "fmod" } },
3988239824 .{ .type = .f64, .kind = .{ .reg = .rdx } },
3988339825 .{ .type = .f64, .kind = .mem },
3988439826 .{ .type = .f64, .kind = .{ .reg = .rax } },
......@@ -39926,7 +39868,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3992639868 .extra_temps = .{
3992739869 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
3992839870 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
39929 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodx" } } },
39871 .{ .type = .usize, .kind = .{ .extern_func = "__fmodx" } },
3993039872 .{ .type = .f80, .kind = .{ .reg = .st7 } },
3993139873 .{ .type = .f80, .kind = .{ .reg = .rax } },
3993239874 .unused,
......@@ -39969,7 +39911,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3996939911 .extra_temps = .{
3997039912 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
3997139913 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
39972 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodx" } } },
39914 .{ .type = .usize, .kind = .{ .extern_func = "__fmodx" } },
3997339915 .{ .type = .f80, .kind = .{ .reg = .st7 } },
3997439916 .{ .type = .f80, .kind = .{ .reg = .rax } },
3997539917 .unused,
......@@ -40012,7 +39954,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
4001239954 .extra_temps = .{
4001339955 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
4001439956 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
40015 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodx" } } },
39957 .{ .type = .usize, .kind = .{ .extern_func = "__fmodx" } },
4001639958 .{ .type = .f80, .kind = .{ .reg = .st7 } },
4001739959 .{ .type = .f80, .kind = .{ .reg = .rax } },
4001839960 .unused,
......@@ -40055,7 +39997,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
4005539997 .extra_temps = .{
4005639998 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
4005739999 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
40058 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodx" } } },
40000 .{ .type = .usize, .kind = .{ .extern_func = "__fmodx" } },
4005940001 .{ .type = .f80, .kind = .{ .reg = .st7 } },
4006040002 .{ .type = .f80, .kind = .{ .reg = .rax } },
4006140003 .unused,
......@@ -40098,7 +40040,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
4009840040 .extra_temps = .{
4009940041 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
4010040042 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
40101 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodx" } } },
40043 .{ .type = .usize, .kind = .{ .extern_func = "__fmodx" } },
4010240044 .{ .type = .f80, .kind = .{ .reg = .st7 } },
4010340045 .{ .type = .f80, .kind = .{ .reg = .rax } },
4010440046 .unused,
......@@ -40141,7 +40083,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
4014140083 .extra_temps = .{
4014240084 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
4014340085 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
40144 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodx" } } },
40086 .{ .type = .usize, .kind = .{ .extern_func = "__fmodx" } },
4014540087 .{ .type = .f80, .kind = .{ .reg = .st7 } },
4014640088 .{ .type = .f80, .kind = .{ .reg = .rax } },
4014740089 .unused,
......@@ -40185,7 +40127,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
4018540127 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
4018640128 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
4018740129 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
40188 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodx" } } },
40130 .{ .type = .usize, .kind = .{ .extern_func = "__fmodx" } },
4018940131 .{ .type = .f80, .kind = .{ .reg = .st7 } },
4019040132 .{ .type = .f80, .kind = .{ .reg = .rax } },
4019140133 .unused,
......@@ -40233,7 +40175,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
4023340175 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
4023440176 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
4023540177 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
40236 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodx" } } },
40178 .{ .type = .usize, .kind = .{ .extern_func = "__fmodx" } },
4023740179 .{ .type = .f80, .kind = .{ .reg = .st7 } },
4023840180 .{ .type = .f80, .kind = .{ .reg = .rax } },
4023940181 .unused,
......@@ -40281,7 +40223,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
4028140223 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
4028240224 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
4028340225 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
40284 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodx" } } },
40226 .{ .type = .usize, .kind = .{ .extern_func = "__fmodx" } },
4028540227 .{ .type = .f80, .kind = .{ .reg = .st7 } },
4028640228 .{ .type = .f80, .kind = .{ .reg = .rax } },
4028740229 .unused,
......@@ -40329,7 +40271,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
4032940271 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
4033040272 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
4033140273 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
40332 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodx" } } },
40274 .{ .type = .usize, .kind = .{ .extern_func = "__fmodx" } },
4033340275 .{ .type = .f80, .kind = .{ .reg = .st7 } },
4033440276 .{ .type = .f80, .kind = .{ .reg = .rax } },
4033540277 .unused,
......@@ -40377,7 +40319,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
4037740319 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
4037840320 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
4037940321 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
40380 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodx" } } },
40322 .{ .type = .usize, .kind = .{ .extern_func = "__fmodx" } },
4038140323 .{ .type = .f80, .kind = .{ .reg = .st7 } },
4038240324 .{ .type = .f80, .kind = .{ .reg = .rax } },
4038340325 .unused,
......@@ -40425,7 +40367,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
4042540367 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
4042640368 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
4042740369 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
40428 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodx" } } },
40370 .{ .type = .usize, .kind = .{ .extern_func = "__fmodx" } },
4042940371 .{ .type = .f80, .kind = .{ .reg = .st7 } },
4043040372 .{ .type = .f80, .kind = .{ .reg = .rax } },
4043140373 .unused,
......@@ -40471,11 +40413,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
4047140413 .call_frame = .{ .alignment = .@"16" },
4047240414 .extra_temps = .{
4047340415 .{ .type = .f128, .kind = .mem },
40474 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmodq" } } },
40416 .{ .type = .usize, .kind = .{ .extern_func = "fmodq" } },
4047540417 .{ .type = .f128, .kind = .{ .reg = .rcx } },
4047640418 .{ .type = .f128, .kind = .{ .reg = .rdx } },
4047740419 .{ .type = .f128, .kind = .{ .reg = .rax } },
40478 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addtf3" } } },
40420 .{ .type = .usize, .kind = .{ .extern_func = "__addtf3" } },
4047940421 .unused,
4048040422 .unused,
4048140423 .unused,
......@@ -40512,11 +40454,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
4051240454 .call_frame = .{ .alignment = .@"16" },
4051340455 .extra_temps = .{
4051440456 .{ .type = .f128, .kind = .mem },
40515 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmodq" } } },
40457 .{ .type = .usize, .kind = .{ .extern_func = "fmodq" } },
4051640458 .{ .type = .f128, .kind = .{ .reg = .rcx } },
4051740459 .{ .type = .f128, .kind = .{ .reg = .rdx } },
4051840460 .{ .type = .f128, .kind = .{ .reg = .rax } },
40519 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addtf3" } } },
40461 .{ .type = .usize, .kind = .{ .extern_func = "__addtf3" } },
4052040462 .unused,
4052140463 .unused,
4052240464 .unused,
......@@ -40553,11 +40495,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
4055340495 .call_frame = .{ .alignment = .@"16" },
4055440496 .extra_temps = .{
4055540497 .{ .type = .f128, .kind = .mem },
40556 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmodq" } } },
40498 .{ .type = .usize, .kind = .{ .extern_func = "fmodq" } },
4055740499 .{ .type = .f128, .kind = .{ .reg = .rcx } },
4055840500 .{ .type = .f128, .kind = .{ .reg = .rdx } },
4055940501 .{ .type = .f128, .kind = .{ .reg = .rax } },
40560 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addtf3" } } },
40502 .{ .type = .usize, .kind = .{ .extern_func = "__addtf3" } },
4056140503 .unused,
4056240504 .unused,
4056340505 .unused,
......@@ -40595,11 +40537,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
4059540537 .call_frame = .{ .alignment = .@"16" },
4059640538 .extra_temps = .{
4059740539 .{ .type = .f128, .kind = .mem },
40598 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmodq" } } },
40540 .{ .type = .usize, .kind = .{ .extern_func = "fmodq" } },
4059940541 .{ .type = .f128, .kind = .{ .reg = .rdx } },
4060040542 .{ .type = .f128, .kind = .mem },
4060140543 .{ .type = .f128, .kind = .{ .reg = .rax } },
40602 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addtf3" } } },
40544 .{ .type = .usize, .kind = .{ .extern_func = "__addtf3" } },
4060340545 .unused,
4060440546 .unused,
4060540547 .unused,
......@@ -40637,11 +40579,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
4063740579 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
4063840580 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
4063940581 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
40640 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmodq" } } },
40582 .{ .type = .usize, .kind = .{ .extern_func = "fmodq" } },
4064140583 .{ .type = .f128, .kind = .{ .reg = .rcx } },
4064240584 .{ .type = .f128, .kind = .{ .reg = .rdx } },
4064340585 .{ .type = .f128, .kind = .{ .reg = .rax } },
40644 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addtf3" } } },
40586 .{ .type = .usize, .kind = .{ .extern_func = "__addtf3" } },
4064540587 .unused,
4064640588 .unused,
4064740589 .unused,
......@@ -40683,11 +40625,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
4068340625 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
4068440626 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
4068540627 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
40686 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmodq" } } },
40628 .{ .type = .usize, .kind = .{ .extern_func = "fmodq" } },
4068740629 .{ .type = .f128, .kind = .{ .reg = .rcx } },
4068840630 .{ .type = .f128, .kind = .{ .reg = .rdx } },
4068940631 .{ .type = .f128, .kind = .{ .reg = .rax } },
40690 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addtf3" } } },
40632 .{ .type = .usize, .kind = .{ .extern_func = "__addtf3" } },
4069140633 .unused,
4069240634 .unused,
4069340635 .unused,
......@@ -40729,11 +40671,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
4072940671 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
4073040672 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
4073140673 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
40732 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmodq" } } },
40674 .{ .type = .usize, .kind = .{ .extern_func = "fmodq" } },
4073340675 .{ .type = .f128, .kind = .{ .reg = .rcx } },
4073440676 .{ .type = .f128, .kind = .{ .reg = .rdx } },
4073540677 .{ .type = .f128, .kind = .{ .reg = .rax } },
40736 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addtf3" } } },
40678 .{ .type = .usize, .kind = .{ .extern_func = "__addtf3" } },
4073740679 .unused,
4073840680 .unused,
4073940681 .unused,
......@@ -40776,11 +40718,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
4077640718 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
4077740719 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
4077840720 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
40779 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmodq" } } },
40721 .{ .type = .usize, .kind = .{ .extern_func = "fmodq" } },
4078040722 .{ .type = .f128, .kind = .{ .reg = .rdx } },
4078140723 .{ .type = .f128, .kind = .mem },
4078240724 .{ .type = .f128, .kind = .{ .reg = .rax } },
40783 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addtf3" } } },
40725 .{ .type = .usize, .kind = .{ .extern_func = "__addtf3" } },
4078440726 .unused,
4078540727 .unused,
4078640728 .unused,
......@@ -43870,7 +43812,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
4387043812 },
4387143813 .call_frame = .{ .alignment = .@"16" },
4387243814 .extra_temps = .{
43873 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmaxh" } } },
43815 .{ .type = .usize, .kind = .{ .extern_func = "__fmaxh" } },
4387443816 .unused,
4387543817 .unused,
4387643818 .unused,
......@@ -44008,7 +43950,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
4400843950 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
4400943951 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
4401043952 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
44011 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmaxh" } } },
43953 .{ .type = .usize, .kind = .{ .extern_func = "__fmaxh" } },
4401243954 .unused,
4401343955 .unused,
4401443956 .unused,
......@@ -44044,7 +43986,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
4404443986 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
4404543987 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
4404643988 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
44047 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmaxh" } } },
43989 .{ .type = .usize, .kind = .{ .extern_func = "__fmaxh" } },
4404843990 .unused,
4404943991 .unused,
4405043992 .unused,
......@@ -44081,7 +44023,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
4408144023 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
4408244024 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
4408344025 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
44084 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmaxh" } } },
44026 .{ .type = .usize, .kind = .{ .extern_func = "__fmaxh" } },
4408544027 .{ .type = .f16, .kind = .{ .reg = .ax } },
4408644028 .unused,
4408744029 .unused,
......@@ -44121,7 +44063,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
4412144063 .{ .type = .f32, .kind = .mem },
4412244064 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
4412344065 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
44124 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmaxh" } } },
44066 .{ .type = .usize, .kind = .{ .extern_func = "__fmaxh" } },
4412544067 .unused,
4412644068 .unused,
4412744069 .unused,
......@@ -44536,7 +44478,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
4453644478 },
4453744479 .call_frame = .{ .alignment = .@"16" },
4453844480 .extra_temps = .{
44539 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmax" } } },
44481 .{ .type = .usize, .kind = .{ .extern_func = "fmax" } },
4454044482 .unused,
4454144483 .unused,
4454244484 .unused,
......@@ -44791,7 +44733,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
4479144733 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
4479244734 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
4479344735 .{ .type = .f64, .kind = .{ .reg = .xmm1 } },
44794 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmax" } } },
44736 .{ .type = .usize, .kind = .{ .extern_func = "fmax" } },
4479544737 .unused,
4479644738 .unused,
4479744739 .unused,
......@@ -45080,7 +45022,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
4508045022 },
4508145023 .call_frame = .{ .alignment = .@"16" },
4508245024 .extra_temps = .{
45083 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmaxq" } } },
45025 .{ .type = .usize, .kind = .{ .extern_func = "fmaxq" } },
4508445026 .unused,
4508545027 .unused,
4508645028 .unused,
......@@ -45112,7 +45054,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
4511245054 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
4511345055 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
4511445056 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
45115 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmaxq" } } },
45057 .{ .type = .usize, .kind = .{ .extern_func = "fmaxq" } },
4511645058 .unused,
4511745059 .unused,
4511845060 .unused,
......@@ -45147,7 +45089,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
4514745089 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
4514845090 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
4514945091 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
45150 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmaxq" } } },
45092 .{ .type = .usize, .kind = .{ .extern_func = "fmaxq" } },
4515145093 .unused,
4515245094 .unused,
4515345095 .unused,
......@@ -45182,7 +45124,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
4518245124 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
4518345125 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
4518445126 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
45185 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmaxq" } } },
45127 .{ .type = .usize, .kind = .{ .extern_func = "fmaxq" } },
4518645128 .unused,
4518745129 .unused,
4518845130 .unused,
......@@ -48029,7 +47971,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
4802947971 },
4803047972 .call_frame = .{ .alignment = .@"16" },
4803147973 .extra_temps = .{
48032 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fminh" } } },
47974 .{ .type = .usize, .kind = .{ .extern_func = "__fminh" } },
4803347975 .unused,
4803447976 .unused,
4803547977 .unused,
......@@ -48167,7 +48109,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
4816748109 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
4816848110 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
4816948111 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
48170 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fminh" } } },
48112 .{ .type = .usize, .kind = .{ .extern_func = "__fminh" } },
4817148113 .unused,
4817248114 .unused,
4817348115 .unused,
......@@ -48203,7 +48145,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
4820348145 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
4820448146 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
4820548147 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
48206 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fminh" } } },
48148 .{ .type = .usize, .kind = .{ .extern_func = "__fminh" } },
4820748149 .unused,
4820848150 .unused,
4820948151 .unused,
......@@ -48240,7 +48182,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
4824048182 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
4824148183 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
4824248184 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
48243 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fminh" } } },
48185 .{ .type = .usize, .kind = .{ .extern_func = "__fminh" } },
4824448186 .{ .type = .f16, .kind = .{ .reg = .ax } },
4824548187 .unused,
4824648188 .unused,
......@@ -48280,7 +48222,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
4828048222 .{ .type = .f32, .kind = .mem },
4828148223 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
4828248224 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
48283 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fminh" } } },
48225 .{ .type = .usize, .kind = .{ .extern_func = "__fminh" } },
4828448226 .unused,
4828548227 .unused,
4828648228 .unused,
......@@ -48695,7 +48637,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
4869548637 },
4869648638 .call_frame = .{ .alignment = .@"16" },
4869748639 .extra_temps = .{
48698 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmin" } } },
48640 .{ .type = .usize, .kind = .{ .extern_func = "fmin" } },
4869948641 .unused,
4870048642 .unused,
4870148643 .unused,
......@@ -48950,7 +48892,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
4895048892 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
4895148893 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
4895248894 .{ .type = .f64, .kind = .{ .reg = .xmm1 } },
48953 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmin" } } },
48895 .{ .type = .usize, .kind = .{ .extern_func = "fmin" } },
4895448896 .unused,
4895548897 .unused,
4895648898 .unused,
......@@ -49227,7 +49169,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
4922749169 },
4922849170 .call_frame = .{ .alignment = .@"16" },
4922949171 .extra_temps = .{
49230 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fminq" } } },
49172 .{ .type = .usize, .kind = .{ .extern_func = "fminq" } },
4923149173 .unused,
4923249174 .unused,
4923349175 .unused,
......@@ -49259,7 +49201,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
4925949201 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
4926049202 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
4926149203 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
49262 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fminq" } } },
49204 .{ .type = .usize, .kind = .{ .extern_func = "fminq" } },
4926349205 .unused,
4926449206 .unused,
4926549207 .unused,
......@@ -49294,7 +49236,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
4929449236 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
4929549237 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
4929649238 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
49297 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fminq" } } },
49239 .{ .type = .usize, .kind = .{ .extern_func = "fminq" } },
4929849240 .unused,
4929949241 .unused,
4930049242 .unused,
......@@ -49329,7 +49271,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
4932949271 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
4933049272 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
4933149273 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
49332 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fminq" } } },
49274 .{ .type = .usize, .kind = .{ .extern_func = "fminq" } },
4933349275 .unused,
4933449276 .unused,
4933549277 .unused,
......@@ -72269,7 +72211,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7226972211 },
7227072212 .call_frame = .{ .alignment = .@"16" },
7227172213 .extra_temps = .{
72272 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__sqrth" } } },
72214 .{ .type = .usize, .kind = .{ .extern_func = "__sqrth" } },
7227372215 .unused,
7227472216 .unused,
7227572217 .unused,
......@@ -72351,7 +72293,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7235172293 .extra_temps = .{
7235272294 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
7235372295 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
72354 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__sqrth" } } },
72296 .{ .type = .usize, .kind = .{ .extern_func = "__sqrth" } },
7235572297 .unused,
7235672298 .unused,
7235772299 .unused,
......@@ -72382,7 +72324,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7238272324 .extra_temps = .{
7238372325 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
7238472326 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
72385 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__sqrth" } } },
72327 .{ .type = .usize, .kind = .{ .extern_func = "__sqrth" } },
7238672328 .unused,
7238772329 .unused,
7238872330 .unused,
......@@ -72413,7 +72355,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7241372355 .extra_temps = .{
7241472356 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
7241572357 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
72416 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__sqrth" } } },
72358 .{ .type = .usize, .kind = .{ .extern_func = "__sqrth" } },
7241772359 .{ .type = .f16, .kind = .{ .reg = .ax } },
7241872360 .unused,
7241972361 .unused,
......@@ -72447,7 +72389,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7244772389 .{ .type = .f16, .kind = .{ .reg = .ax } },
7244872390 .{ .type = .f32, .kind = .mem },
7244972391 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
72450 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__sqrth" } } },
72392 .{ .type = .usize, .kind = .{ .extern_func = "__sqrth" } },
7245172393 .unused,
7245272394 .unused,
7245372395 .unused,
......@@ -72519,7 +72461,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7251972461 },
7252072462 .call_frame = .{ .alignment = .@"16" },
7252172463 .extra_temps = .{
72522 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "sqrtf" } } },
72464 .{ .type = .usize, .kind = .{ .extern_func = "sqrtf" } },
7252372465 .unused,
7252472466 .unused,
7252572467 .unused,
......@@ -72635,7 +72577,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7263572577 .extra_temps = .{
7263672578 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
7263772579 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
72638 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "sqrtf" } } },
72580 .{ .type = .usize, .kind = .{ .extern_func = "sqrtf" } },
7263972581 .unused,
7264072582 .unused,
7264172583 .unused,
......@@ -72665,7 +72607,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7266572607 .extra_temps = .{
7266672608 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
7266772609 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
72668 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "sqrtf" } } },
72610 .{ .type = .usize, .kind = .{ .extern_func = "sqrtf" } },
7266972611 .unused,
7267072612 .unused,
7267172613 .unused,
......@@ -72735,7 +72677,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7273572677 },
7273672678 .call_frame = .{ .alignment = .@"16" },
7273772679 .extra_temps = .{
72738 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "sqrt" } } },
72680 .{ .type = .usize, .kind = .{ .extern_func = "sqrt" } },
7273972681 .unused,
7274072682 .unused,
7274172683 .unused,
......@@ -72851,7 +72793,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7285172793 .extra_temps = .{
7285272794 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
7285372795 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
72854 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "sqrt" } } },
72796 .{ .type = .usize, .kind = .{ .extern_func = "sqrt" } },
7285572797 .unused,
7285672798 .unused,
7285772799 .unused,
......@@ -72881,7 +72823,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7288172823 .extra_temps = .{
7288272824 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
7288372825 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
72884 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "sqrt" } } },
72826 .{ .type = .usize, .kind = .{ .extern_func = "sqrt" } },
7288572827 .unused,
7288672828 .unused,
7288772829 .unused,
......@@ -72911,7 +72853,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7291172853 .extra_temps = .{
7291272854 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
7291372855 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
72914 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "sqrt" } } },
72856 .{ .type = .usize, .kind = .{ .extern_func = "sqrt" } },
7291572857 .unused,
7291672858 .unused,
7291772859 .unused,
......@@ -72995,7 +72937,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7299572937 },
7299672938 .call_frame = .{ .alignment = .@"16" },
7299772939 .extra_temps = .{
72998 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "sqrtq" } } },
72940 .{ .type = .usize, .kind = .{ .extern_func = "sqrtq" } },
7299972941 .unused,
7300072942 .unused,
7300172943 .unused,
......@@ -73022,7 +72964,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7302272964 .extra_temps = .{
7302372965 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
7302472966 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
73025 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "sqrtq" } } },
72967 .{ .type = .usize, .kind = .{ .extern_func = "sqrtq" } },
7302672968 .unused,
7302772969 .unused,
7302872970 .unused,
......@@ -73052,7 +72994,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7305272994 .extra_temps = .{
7305372995 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
7305472996 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
73055 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "sqrtq" } } },
72997 .{ .type = .usize, .kind = .{ .extern_func = "sqrtq" } },
7305672998 .unused,
7305772999 .unused,
7305873000 .unused,
......@@ -73082,7 +73024,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7308273024 .extra_temps = .{
7308373025 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
7308473026 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
73085 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "sqrtq" } } },
73027 .{ .type = .usize, .kind = .{ .extern_func = "sqrtq" } },
7308673028 .unused,
7308773029 .unused,
7308873030 .unused,
......@@ -73126,7 +73068,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7312673068 },
7312773069 .call_frame = .{ .alignment = .@"16" },
7312873070 .extra_temps = .{
73129 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__" ++ @tagName(name) ++ "h" } } },
73071 .{ .type = .usize, .kind = .{ .extern_func = "__" ++ @tagName(name) ++ "h" } },
7313073072 .unused,
7313173073 .unused,
7313273074 .unused,
......@@ -73153,7 +73095,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7315373095 .extra_temps = .{
7315473096 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
7315573097 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
73156 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__" ++ @tagName(name) ++ "h" } } },
73098 .{ .type = .usize, .kind = .{ .extern_func = "__" ++ @tagName(name) ++ "h" } },
7315773099 .unused,
7315873100 .unused,
7315973101 .unused,
......@@ -73184,7 +73126,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7318473126 .extra_temps = .{
7318573127 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
7318673128 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
73187 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__" ++ @tagName(name) ++ "h" } } },
73129 .{ .type = .usize, .kind = .{ .extern_func = "__" ++ @tagName(name) ++ "h" } },
7318873130 .unused,
7318973131 .unused,
7319073132 .unused,
......@@ -73215,7 +73157,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7321573157 .extra_temps = .{
7321673158 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
7321773159 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
73218 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__" ++ @tagName(name) ++ "h" } } },
73160 .{ .type = .usize, .kind = .{ .extern_func = "__" ++ @tagName(name) ++ "h" } },
7321973161 .{ .type = .f16, .kind = .{ .reg = .ax } },
7322073162 .unused,
7322173163 .unused,
......@@ -73249,7 +73191,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7324973191 .{ .type = .f16, .kind = .{ .reg = .ax } },
7325073192 .{ .type = .f32, .kind = .mem },
7325173193 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
73252 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__" ++ @tagName(name) ++ "h" } } },
73194 .{ .type = .usize, .kind = .{ .extern_func = "__" ++ @tagName(name) ++ "h" } },
7325373195 .unused,
7325473196 .unused,
7325573197 .unused,
......@@ -73279,7 +73221,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7327973221 },
7328073222 .call_frame = .{ .alignment = .@"16" },
7328173223 .extra_temps = .{
73282 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = @tagName(name) ++ "f" } } },
73224 .{ .type = .usize, .kind = .{ .extern_func = @tagName(name) ++ "f" } },
7328373225 .unused,
7328473226 .unused,
7328573227 .unused,
......@@ -73306,7 +73248,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7330673248 .extra_temps = .{
7330773249 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
7330873250 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
73309 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = @tagName(name) ++ "f" } } },
73251 .{ .type = .usize, .kind = .{ .extern_func = @tagName(name) ++ "f" } },
7331073252 .unused,
7331173253 .unused,
7331273254 .unused,
......@@ -73336,7 +73278,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7333673278 .extra_temps = .{
7333773279 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
7333873280 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
73339 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = @tagName(name) ++ "f" } } },
73281 .{ .type = .usize, .kind = .{ .extern_func = @tagName(name) ++ "f" } },
7334073282 .unused,
7334173283 .unused,
7334273284 .unused,
......@@ -73364,7 +73306,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7336473306 },
7336573307 .call_frame = .{ .alignment = .@"16" },
7336673308 .extra_temps = .{
73367 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = @tagName(name) } } },
73309 .{ .type = .usize, .kind = .{ .extern_func = @tagName(name) } },
7336873310 .unused,
7336973311 .unused,
7337073312 .unused,
......@@ -73391,7 +73333,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7339173333 .extra_temps = .{
7339273334 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
7339373335 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
73394 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = @tagName(name) } } },
73336 .{ .type = .usize, .kind = .{ .extern_func = @tagName(name) } },
7339573337 .unused,
7339673338 .unused,
7339773339 .unused,
......@@ -73421,7 +73363,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7342173363 .extra_temps = .{
7342273364 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
7342373365 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
73424 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = @tagName(name) } } },
73366 .{ .type = .usize, .kind = .{ .extern_func = @tagName(name) } },
7342573367 .unused,
7342673368 .unused,
7342773369 .unused,
......@@ -73451,7 +73393,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7345173393 .extra_temps = .{
7345273394 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
7345373395 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
73454 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = @tagName(name) } } },
73396 .{ .type = .usize, .kind = .{ .extern_func = @tagName(name) } },
7345573397 .unused,
7345673398 .unused,
7345773399 .unused,
......@@ -73482,7 +73424,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7348273424 .extra_temps = .{
7348373425 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
7348473426 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
73485 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__" ++ @tagName(name) ++ "x" } } },
73427 .{ .type = .usize, .kind = .{ .extern_func = "__" ++ @tagName(name) ++ "x" } },
7348673428 .unused,
7348773429 .unused,
7348873430 .unused,
......@@ -73509,7 +73451,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7350973451 .extra_temps = .{
7351073452 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
7351173453 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
73512 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__" ++ @tagName(name) ++ "x" } } },
73454 .{ .type = .usize, .kind = .{ .extern_func = "__" ++ @tagName(name) ++ "x" } },
7351373455 .unused,
7351473456 .unused,
7351573457 .unused,
......@@ -73536,7 +73478,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7353673478 .extra_temps = .{
7353773479 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
7353873480 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
73539 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__" ++ @tagName(name) ++ "x" } } },
73481 .{ .type = .usize, .kind = .{ .extern_func = "__" ++ @tagName(name) ++ "x" } },
7354073482 .unused,
7354173483 .unused,
7354273484 .unused,
......@@ -73564,7 +73506,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7356473506 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
7356573507 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
7356673508 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
73567 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__" ++ @tagName(name) ++ "x" } } },
73509 .{ .type = .usize, .kind = .{ .extern_func = "__" ++ @tagName(name) ++ "x" } },
7356873510 .unused,
7356973511 .unused,
7357073512 .unused,
......@@ -73596,7 +73538,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7359673538 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
7359773539 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
7359873540 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
73599 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__" ++ @tagName(name) ++ "x" } } },
73541 .{ .type = .usize, .kind = .{ .extern_func = "__" ++ @tagName(name) ++ "x" } },
7360073542 .unused,
7360173543 .unused,
7360273544 .unused,
......@@ -73628,7 +73570,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7362873570 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
7362973571 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
7363073572 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
73631 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__" ++ @tagName(name) ++ "x" } } },
73573 .{ .type = .usize, .kind = .{ .extern_func = "__" ++ @tagName(name) ++ "x" } },
7363273574 .unused,
7363373575 .unused,
7363473576 .unused,
......@@ -73657,7 +73599,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7365773599 },
7365873600 .call_frame = .{ .alignment = .@"16" },
7365973601 .extra_temps = .{
73660 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = @tagName(name) ++ "q" } } },
73602 .{ .type = .usize, .kind = .{ .extern_func = @tagName(name) ++ "q" } },
7366173603 .unused,
7366273604 .unused,
7366373605 .unused,
......@@ -73684,7 +73626,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7368473626 .extra_temps = .{
7368573627 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
7368673628 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
73687 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = @tagName(name) ++ "q" } } },
73629 .{ .type = .usize, .kind = .{ .extern_func = @tagName(name) ++ "q" } },
7368873630 .unused,
7368973631 .unused,
7369073632 .unused,
......@@ -73714,7 +73656,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7371473656 .extra_temps = .{
7371573657 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
7371673658 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
73717 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = @tagName(name) ++ "q" } } },
73659 .{ .type = .usize, .kind = .{ .extern_func = @tagName(name) ++ "q" } },
7371873660 .unused,
7371973661 .unused,
7372073662 .unused,
......@@ -73744,7 +73686,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7374473686 .extra_temps = .{
7374573687 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
7374673688 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
73747 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = @tagName(name) ++ "q" } } },
73689 .{ .type = .usize, .kind = .{ .extern_func = @tagName(name) ++ "q" } },
7374873690 .unused,
7374973691 .unused,
7375073692 .unused,
......@@ -75362,12 +75304,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7536275304 },
7536375305 .call_frame = .{ .alignment = .@"16" },
7536475306 .extra_temps = .{
75365 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
75307 .{ .type = .usize, .kind = .{ .extern_func = switch (direction) {
7536675308 else => unreachable,
7536775309 .down => "__floorh",
7536875310 .up => "__ceilh",
7536975311 .zero => "__trunch",
75370 } } } },
75312 } } },
7537175313 .unused,
7537275314 .unused,
7537375315 .unused,
......@@ -75449,12 +75391,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7544975391 .extra_temps = .{
7545075392 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
7545175393 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
75452 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
75394 .{ .type = .usize, .kind = .{ .extern_func = switch (direction) {
7545375395 else => unreachable,
7545475396 .down => "__floorh",
7545575397 .up => "__ceilh",
7545675398 .zero => "__trunch",
75457 } } } },
75399 } } },
7545875400 .unused,
7545975401 .unused,
7546075402 .unused,
......@@ -75485,12 +75427,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7548575427 .extra_temps = .{
7548675428 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
7548775429 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
75488 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
75430 .{ .type = .usize, .kind = .{ .extern_func = switch (direction) {
7548975431 else => unreachable,
7549075432 .down => "__floorh",
7549175433 .up => "__ceilh",
7549275434 .zero => "__trunch",
75493 } } } },
75435 } } },
7549475436 .unused,
7549575437 .unused,
7549675438 .unused,
......@@ -75521,12 +75463,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7552175463 .extra_temps = .{
7552275464 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
7552375465 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
75524 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
75466 .{ .type = .usize, .kind = .{ .extern_func = switch (direction) {
7552575467 else => unreachable,
7552675468 .down => "__floorh",
7552775469 .up => "__ceilh",
7552875470 .zero => "__trunch",
75529 } } } },
75471 } } },
7553075472 .{ .type = .f16, .kind = .{ .reg = .ax } },
7553175473 .unused,
7553275474 .unused,
......@@ -75560,12 +75502,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7556075502 .{ .type = .f16, .kind = .{ .reg = .ax } },
7556175503 .{ .type = .f32, .kind = .mem },
7556275504 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
75563 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
75505 .{ .type = .usize, .kind = .{ .extern_func = switch (direction) {
7556475506 else => unreachable,
7556575507 .down => "__floorh",
7556675508 .up => "__ceilh",
7556775509 .zero => "__trunch",
75568 } } } },
75510 } } },
7556975511 .unused,
7557075512 .unused,
7557175513 .unused,
......@@ -75637,12 +75579,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7563775579 },
7563875580 .call_frame = .{ .alignment = .@"16" },
7563975581 .extra_temps = .{
75640 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
75582 .{ .type = .usize, .kind = .{ .extern_func = switch (direction) {
7564175583 else => unreachable,
7564275584 .down => "floorf",
7564375585 .up => "ceilf",
7564475586 .zero => "truncf",
75645 } } } },
75587 } } },
7564675588 .unused,
7564775589 .unused,
7564875590 .unused,
......@@ -75764,12 +75706,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7576475706 .extra_temps = .{
7576575707 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
7576675708 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
75767 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
75709 .{ .type = .usize, .kind = .{ .extern_func = switch (direction) {
7576875710 else => unreachable,
7576975711 .down => "floorf",
7577075712 .up => "ceilf",
7577175713 .zero => "truncf",
75772 } } } },
75714 } } },
7577375715 .unused,
7577475716 .unused,
7577575717 .unused,
......@@ -75799,12 +75741,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7579975741 .extra_temps = .{
7580075742 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
7580175743 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
75802 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
75744 .{ .type = .usize, .kind = .{ .extern_func = switch (direction) {
7580375745 else => unreachable,
7580475746 .down => "floorf",
7580575747 .up => "ceilf",
7580675748 .zero => "truncf",
75807 } } } },
75749 } } },
7580875750 .unused,
7580975751 .unused,
7581075752 .unused,
......@@ -75874,12 +75816,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7587475816 },
7587575817 .call_frame = .{ .alignment = .@"16" },
7587675818 .extra_temps = .{
75877 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
75819 .{ .type = .usize, .kind = .{ .extern_func = switch (direction) {
7587875820 else => unreachable,
7587975821 .down => "floor",
7588075822 .up => "ceil",
7588175823 .zero => "trunc",
75882 } } } },
75824 } } },
7588375825 .unused,
7588475826 .unused,
7588575827 .unused,
......@@ -76001,12 +75943,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7600175943 .extra_temps = .{
7600275944 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
7600375945 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
76004 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
75946 .{ .type = .usize, .kind = .{ .extern_func = switch (direction) {
7600575947 else => unreachable,
7600675948 .down => "floor",
7600775949 .up => "ceil",
7600875950 .zero => "trunc",
76009 } } } },
75951 } } },
7601075952 .unused,
7601175953 .unused,
7601275954 .unused,
......@@ -76036,12 +75978,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7603675978 .extra_temps = .{
7603775979 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
7603875980 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
76039 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
75981 .{ .type = .usize, .kind = .{ .extern_func = switch (direction) {
7604075982 else => unreachable,
7604175983 .down => "floor",
7604275984 .up => "ceil",
7604375985 .zero => "trunc",
76044 } } } },
75986 } } },
7604575987 .unused,
7604675988 .unused,
7604775989 .unused,
......@@ -76071,12 +76013,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7607176013 .extra_temps = .{
7607276014 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
7607376015 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
76074 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
76016 .{ .type = .usize, .kind = .{ .extern_func = switch (direction) {
7607576017 else => unreachable,
7607676018 .down => "floor",
7607776019 .up => "ceil",
7607876020 .zero => "trunc",
76079 } } } },
76021 } } },
7608076022 .unused,
7608176023 .unused,
7608276024 .unused,
......@@ -76107,12 +76049,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7610776049 .extra_temps = .{
7610876050 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
7610976051 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
76110 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
76052 .{ .type = .usize, .kind = .{ .extern_func = switch (direction) {
7611176053 else => unreachable,
7611276054 .down => "__floorx",
7611376055 .up => "__ceilx",
7611476056 .zero => "__truncx",
76115 } } } },
76057 } } },
7611676058 .unused,
7611776059 .unused,
7611876060 .unused,
......@@ -76139,12 +76081,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7613976081 .extra_temps = .{
7614076082 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
7614176083 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
76142 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
76084 .{ .type = .usize, .kind = .{ .extern_func = switch (direction) {
7614376085 else => unreachable,
7614476086 .down => "__floorx",
7614576087 .up => "__ceilx",
7614676088 .zero => "__truncx",
76147 } } } },
76089 } } },
7614876090 .unused,
7614976091 .unused,
7615076092 .unused,
......@@ -76171,12 +76113,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7617176113 .extra_temps = .{
7617276114 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
7617376115 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
76174 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
76116 .{ .type = .usize, .kind = .{ .extern_func = switch (direction) {
7617576117 else => unreachable,
7617676118 .down => "__floorx",
7617776119 .up => "__ceilx",
7617876120 .zero => "__truncx",
76179 } } } },
76121 } } },
7618076122 .unused,
7618176123 .unused,
7618276124 .unused,
......@@ -76204,12 +76146,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7620476146 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
7620576147 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
7620676148 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
76207 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
76149 .{ .type = .usize, .kind = .{ .extern_func = switch (direction) {
7620876150 else => unreachable,
7620976151 .down => "__floorx",
7621076152 .up => "__ceilx",
7621176153 .zero => "__truncx",
76212 } } } },
76154 } } },
7621376155 .unused,
7621476156 .unused,
7621576157 .unused,
......@@ -76241,12 +76183,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7624176183 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
7624276184 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
7624376185 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
76244 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
76186 .{ .type = .usize, .kind = .{ .extern_func = switch (direction) {
7624576187 else => unreachable,
7624676188 .down => "__floorx",
7624776189 .up => "__ceilx",
7624876190 .zero => "__truncx",
76249 } } } },
76191 } } },
7625076192 .unused,
7625176193 .unused,
7625276194 .unused,
......@@ -76278,12 +76220,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7627876220 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
7627976221 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
7628076222 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
76281 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
76223 .{ .type = .usize, .kind = .{ .extern_func = switch (direction) {
7628276224 else => unreachable,
7628376225 .down => "__floorx",
7628476226 .up => "__ceilx",
7628576227 .zero => "__truncx",
76286 } } } },
76228 } } },
7628776229 .unused,
7628876230 .unused,
7628976231 .unused,
......@@ -76312,12 +76254,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7631276254 },
7631376255 .call_frame = .{ .alignment = .@"16" },
7631476256 .extra_temps = .{
76315 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
76257 .{ .type = .usize, .kind = .{ .extern_func = switch (direction) {
7631676258 else => unreachable,
7631776259 .down => "floorq",
7631876260 .up => "ceilq",
7631976261 .zero => "truncq",
76320 } } } },
76262 } } },
7632176263 .unused,
7632276264 .unused,
7632376265 .unused,
......@@ -76344,12 +76286,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7634476286 .extra_temps = .{
7634576287 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
7634676288 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
76347 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
76289 .{ .type = .usize, .kind = .{ .extern_func = switch (direction) {
7634876290 else => unreachable,
7634976291 .down => "floorq",
7635076292 .up => "ceilq",
7635176293 .zero => "truncq",
76352 } } } },
76294 } } },
7635376295 .unused,
7635476296 .unused,
7635576297 .unused,
......@@ -76379,12 +76321,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7637976321 .extra_temps = .{
7638076322 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
7638176323 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
76382 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
76324 .{ .type = .usize, .kind = .{ .extern_func = switch (direction) {
7638376325 else => unreachable,
7638476326 .down => "floorq",
7638576327 .up => "ceilq",
7638676328 .zero => "truncq",
76387 } } } },
76329 } } },
7638876330 .unused,
7638976331 .unused,
7639076332 .unused,
......@@ -76414,12 +76356,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7641476356 .extra_temps = .{
7641576357 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
7641676358 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
76417 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
76359 .{ .type = .usize, .kind = .{ .extern_func = switch (direction) {
7641876360 else => unreachable,
7641976361 .down => "floorq",
7642076362 .up => "ceilq",
7642176363 .zero => "truncq",
76422 } } } },
76364 } } },
7642376365 .unused,
7642476366 .unused,
7642576367 .unused,
......@@ -77051,7 +76993,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7705176993 },
7705276994 .call_frame = .{ .alignment = .@"16" },
7705376995 .extra_temps = .{
77054 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } },
76996 .{ .type = .usize, .kind = .{ .extern_func = "__cmphf2" } },
7705576997 .{ .type = .i32, .kind = .{ .reg = .eax } },
7705676998 .unused,
7705776999 .unused,
......@@ -77394,7 +77336,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7739477336 },
7739577337 .call_frame = .{ .alignment = .@"16" },
7739677338 .extra_temps = .{
77397 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } },
77339 .{ .type = .usize, .kind = .{ .extern_func = "__cmptf2" } },
7739877340 .{ .type = .i32, .kind = .{ .reg = .eax } },
7739977341 .unused,
7740077342 .unused,
......@@ -77555,7 +77497,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7755577497 },
7755677498 .call_frame = .{ .alignment = .@"16" },
7755777499 .extra_temps = .{
77558 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } },
77500 .{ .type = .usize, .kind = .{ .extern_func = "__cmphf2" } },
7755977501 .{ .type = .i32, .kind = .{ .reg = .eax } },
7756077502 .unused,
7756177503 .unused,
......@@ -77922,7 +77864,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7792277864 },
7792377865 .call_frame = .{ .alignment = .@"16" },
7792477866 .extra_temps = .{
77925 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } },
77867 .{ .type = .usize, .kind = .{ .extern_func = "__cmptf2" } },
7792677868 .{ .type = .i32, .kind = .{ .reg = .eax } },
7792777869 .unused,
7792877870 .unused,
......@@ -78591,7 +78533,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7859178533 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
7859278534 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
7859378535 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
78594 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } },
78536 .{ .type = .usize, .kind = .{ .extern_func = "__cmphf2" } },
7859578537 .{ .type = .i32, .kind = .{ .reg = .eax } },
7859678538 .{ .type = .u8, .kind = .{ .reg = .cl } },
7859778539 .{ .type = .u32, .kind = .{ .reg = .edx } },
......@@ -78635,7 +78577,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7863578577 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
7863678578 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
7863778579 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
78638 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } },
78580 .{ .type = .usize, .kind = .{ .extern_func = "__cmphf2" } },
7863978581 .{ .type = .i32, .kind = .{ .reg = .eax } },
7864078582 .{ .type = .u8, .kind = .{ .reg = .cl } },
7864178583 .{ .type = .u32, .kind = .{ .reg = .edx } },
......@@ -78679,7 +78621,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7867978621 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
7868078622 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
7868178623 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
78682 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } },
78624 .{ .type = .usize, .kind = .{ .extern_func = "__cmphf2" } },
7868378625 .{ .type = .i32, .kind = .{ .reg = .eax } },
7868478626 .{ .type = .u8, .kind = .{ .reg = .cl } },
7868578627 .{ .type = .u32, .kind = .{ .reg = .edx } },
......@@ -78724,7 +78666,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7872478666 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
7872578667 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
7872678668 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
78727 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } },
78669 .{ .type = .usize, .kind = .{ .extern_func = "__cmphf2" } },
7872878670 .{ .type = .i32, .kind = .{ .reg = .eax } },
7872978671 .{ .type = .u8, .kind = .{ .reg = .cl } },
7873078672 .{ .type = .u32, .kind = .{ .reg = .edx } },
......@@ -78769,7 +78711,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7876978711 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
7877078712 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
7877178713 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
78772 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } },
78714 .{ .type = .usize, .kind = .{ .extern_func = "__cmphf2" } },
7877378715 .{ .type = .i32, .kind = .{ .reg = .eax } },
7877478716 .{ .type = .u8, .kind = .{ .reg = .cl } },
7877578717 .{ .type = .u32, .kind = .{ .reg = .edx } },
......@@ -78816,7 +78758,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7881678758 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
7881778759 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
7881878760 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
78819 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } },
78761 .{ .type = .usize, .kind = .{ .extern_func = "__cmphf2" } },
7882078762 .{ .type = .i32, .kind = .{ .reg = .eax } },
7882178763 .{ .type = .u8, .kind = .{ .reg = .cl } },
7882278764 .{ .type = .u32, .kind = .{ .reg = .edx } },
......@@ -78863,7 +78805,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7886378805 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
7886478806 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
7886578807 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
78866 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } },
78808 .{ .type = .usize, .kind = .{ .extern_func = "__cmphf2" } },
7886778809 .{ .type = .i32, .kind = .{ .reg = .eax } },
7886878810 .{ .type = .u8, .kind = .{ .reg = .cl } },
7886978811 .{ .type = .u64, .kind = .{ .reg = .rdx } },
......@@ -78916,7 +78858,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7891678858 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
7891778859 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
7891878860 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
78919 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } },
78861 .{ .type = .usize, .kind = .{ .extern_func = "__cmphf2" } },
7892078862 .{ .type = .i32, .kind = .{ .reg = .eax } },
7892178863 .{ .type = .u8, .kind = .{ .reg = .cl } },
7892278864 .{ .type = .u64, .kind = .{ .reg = .rdx } },
......@@ -78969,7 +78911,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7896978911 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
7897078912 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
7897178913 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
78972 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } },
78914 .{ .type = .usize, .kind = .{ .extern_func = "__cmphf2" } },
7897378915 .{ .type = .i32, .kind = .{ .reg = .eax } },
7897478916 .{ .type = .u8, .kind = .{ .reg = .cl } },
7897578917 .{ .type = .u64, .kind = .{ .reg = .rdx } },
......@@ -79023,7 +78965,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7902378965 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
7902478966 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
7902578967 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
79026 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } },
78968 .{ .type = .usize, .kind = .{ .extern_func = "__cmphf2" } },
7902778969 .{ .type = .i32, .kind = .{ .reg = .eax } },
7902878970 .{ .type = .u8, .kind = .{ .reg = .cl } },
7902978971 .{ .type = .u64, .kind = .{ .reg = .rdx } },
......@@ -79077,7 +79019,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7907779019 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
7907879020 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
7907979021 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
79080 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } },
79022 .{ .type = .usize, .kind = .{ .extern_func = "__cmphf2" } },
7908179023 .{ .type = .i32, .kind = .{ .reg = .eax } },
7908279024 .{ .type = .u8, .kind = .{ .reg = .cl } },
7908379025 .{ .type = .u64, .kind = .{ .reg = .rdx } },
......@@ -79133,7 +79075,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7913379075 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
7913479076 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
7913579077 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
79136 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } },
79078 .{ .type = .usize, .kind = .{ .extern_func = "__cmphf2" } },
7913779079 .{ .type = .i32, .kind = .{ .reg = .eax } },
7913879080 .{ .type = .u8, .kind = .{ .reg = .cl } },
7913979081 .{ .type = .u64, .kind = .{ .reg = .rdx } },
......@@ -79960,7 +79902,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7996079902 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
7996179903 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
7996279904 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
79963 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } },
79905 .{ .type = .usize, .kind = .{ .extern_func = "__cmptf2" } },
7996479906 .{ .type = .i32, .kind = .{ .reg = .eax } },
7996579907 .{ .type = .u8, .kind = .{ .reg = .cl } },
7996679908 .{ .type = .u32, .kind = .{ .reg = .edx } },
......@@ -80004,7 +79946,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8000479946 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
8000579947 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
8000679948 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
80007 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } },
79949 .{ .type = .usize, .kind = .{ .extern_func = "__cmptf2" } },
8000879950 .{ .type = .i32, .kind = .{ .reg = .eax } },
8000979951 .{ .type = .u8, .kind = .{ .reg = .cl } },
8001079952 .{ .type = .u32, .kind = .{ .reg = .edx } },
......@@ -80048,7 +79990,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8004879990 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
8004979991 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
8005079992 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
80051 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } },
79993 .{ .type = .usize, .kind = .{ .extern_func = "__cmptf2" } },
8005279994 .{ .type = .i32, .kind = .{ .reg = .eax } },
8005379995 .{ .type = .u8, .kind = .{ .reg = .cl } },
8005479996 .{ .type = .u32, .kind = .{ .reg = .edx } },
......@@ -80092,7 +80034,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8009280034 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
8009380035 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
8009480036 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
80095 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } },
80037 .{ .type = .usize, .kind = .{ .extern_func = "__cmptf2" } },
8009680038 .{ .type = .i32, .kind = .{ .reg = .eax } },
8009780039 .{ .type = .u8, .kind = .{ .reg = .cl } },
8009880040 .{ .type = .u32, .kind = .{ .reg = .edx } },
......@@ -80136,7 +80078,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8013680078 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
8013780079 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
8013880080 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
80139 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } },
80081 .{ .type = .usize, .kind = .{ .extern_func = "__cmptf2" } },
8014080082 .{ .type = .i32, .kind = .{ .reg = .eax } },
8014180083 .{ .type = .u8, .kind = .{ .reg = .cl } },
8014280084 .{ .type = .u32, .kind = .{ .reg = .edx } },
......@@ -80180,7 +80122,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8018080122 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
8018180123 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
8018280124 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
80183 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } },
80125 .{ .type = .usize, .kind = .{ .extern_func = "__cmptf2" } },
8018480126 .{ .type = .i32, .kind = .{ .reg = .eax } },
8018580127 .{ .type = .u8, .kind = .{ .reg = .cl } },
8018680128 .{ .type = .u32, .kind = .{ .reg = .edx } },
......@@ -80224,7 +80166,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8022480166 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
8022580167 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
8022680168 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
80227 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } },
80169 .{ .type = .usize, .kind = .{ .extern_func = "__cmptf2" } },
8022880170 .{ .type = .i32, .kind = .{ .reg = .eax } },
8022980171 .{ .type = .u8, .kind = .{ .reg = .cl } },
8023080172 .{ .type = .u64, .kind = .{ .reg = .rdx } },
......@@ -80277,7 +80219,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8027780219 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
8027880220 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
8027980221 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
80280 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } },
80222 .{ .type = .usize, .kind = .{ .extern_func = "__cmptf2" } },
8028180223 .{ .type = .i32, .kind = .{ .reg = .eax } },
8028280224 .{ .type = .u8, .kind = .{ .reg = .cl } },
8028380225 .{ .type = .u64, .kind = .{ .reg = .rdx } },
......@@ -80330,7 +80272,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8033080272 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
8033180273 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
8033280274 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
80333 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } },
80275 .{ .type = .usize, .kind = .{ .extern_func = "__cmptf2" } },
8033480276 .{ .type = .i32, .kind = .{ .reg = .eax } },
8033580277 .{ .type = .u8, .kind = .{ .reg = .cl } },
8033680278 .{ .type = .u64, .kind = .{ .reg = .rdx } },
......@@ -80383,7 +80325,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8038380325 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
8038480326 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
8038580327 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
80386 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } },
80328 .{ .type = .usize, .kind = .{ .extern_func = "__cmptf2" } },
8038780329 .{ .type = .i32, .kind = .{ .reg = .eax } },
8038880330 .{ .type = .u8, .kind = .{ .reg = .cl } },
8038980331 .{ .type = .u64, .kind = .{ .reg = .rdx } },
......@@ -80436,7 +80378,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8043680378 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
8043780379 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
8043880380 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
80439 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } },
80381 .{ .type = .usize, .kind = .{ .extern_func = "__cmptf2" } },
8044080382 .{ .type = .i32, .kind = .{ .reg = .eax } },
8044180383 .{ .type = .u8, .kind = .{ .reg = .cl } },
8044280384 .{ .type = .u64, .kind = .{ .reg = .rdx } },
......@@ -80489,7 +80431,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8048980431 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
8049080432 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
8049180433 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
80492 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } },
80434 .{ .type = .usize, .kind = .{ .extern_func = "__cmptf2" } },
8049380435 .{ .type = .i32, .kind = .{ .reg = .eax } },
8049480436 .{ .type = .u8, .kind = .{ .reg = .cl } },
8049580437 .{ .type = .u64, .kind = .{ .reg = .rdx } },
......@@ -83099,7 +83041,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8309983041 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
8310083042 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
8310183043 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
83102 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } },
83044 .{ .type = .usize, .kind = .{ .extern_func = "__cmphf2" } },
8310383045 .{ .type = .i32, .kind = .{ .reg = .eax } },
8310483046 .{ .type = .u8, .kind = .{ .reg = .cl } },
8310583047 .{ .type = .u32, .kind = .{ .reg = .edx } },
......@@ -83143,7 +83085,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8314383085 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
8314483086 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
8314583087 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
83146 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } },
83088 .{ .type = .usize, .kind = .{ .extern_func = "__cmphf2" } },
8314783089 .{ .type = .i32, .kind = .{ .reg = .eax } },
8314883090 .{ .type = .u8, .kind = .{ .reg = .cl } },
8314983091 .{ .type = .u32, .kind = .{ .reg = .edx } },
......@@ -83187,7 +83129,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8318783129 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
8318883130 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
8318983131 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
83190 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } },
83132 .{ .type = .usize, .kind = .{ .extern_func = "__cmphf2" } },
8319183133 .{ .type = .i32, .kind = .{ .reg = .eax } },
8319283134 .{ .type = .u8, .kind = .{ .reg = .cl } },
8319383135 .{ .type = .u32, .kind = .{ .reg = .edx } },
......@@ -83232,7 +83174,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8323283174 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
8323383175 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
8323483176 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
83235 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } },
83177 .{ .type = .usize, .kind = .{ .extern_func = "__cmphf2" } },
8323683178 .{ .type = .i32, .kind = .{ .reg = .eax } },
8323783179 .{ .type = .u8, .kind = .{ .reg = .cl } },
8323883180 .{ .type = .u32, .kind = .{ .reg = .edx } },
......@@ -83277,7 +83219,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8327783219 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
8327883220 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
8327983221 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
83280 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } },
83222 .{ .type = .usize, .kind = .{ .extern_func = "__cmphf2" } },
8328183223 .{ .type = .i32, .kind = .{ .reg = .eax } },
8328283224 .{ .type = .u8, .kind = .{ .reg = .cl } },
8328383225 .{ .type = .u32, .kind = .{ .reg = .edx } },
......@@ -83324,7 +83266,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8332483266 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
8332583267 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
8332683268 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
83327 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } },
83269 .{ .type = .usize, .kind = .{ .extern_func = "__cmphf2" } },
8332883270 .{ .type = .i32, .kind = .{ .reg = .eax } },
8332983271 .{ .type = .u8, .kind = .{ .reg = .cl } },
8333083272 .{ .type = .u32, .kind = .{ .reg = .edx } },
......@@ -83371,7 +83313,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8337183313 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
8337283314 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
8337383315 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
83374 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } },
83316 .{ .type = .usize, .kind = .{ .extern_func = "__cmphf2" } },
8337583317 .{ .type = .i32, .kind = .{ .reg = .eax } },
8337683318 .{ .type = .u8, .kind = .{ .reg = .cl } },
8337783319 .{ .type = .u64, .kind = .{ .reg = .rdx } },
......@@ -83424,7 +83366,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8342483366 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
8342583367 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
8342683368 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
83427 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } },
83369 .{ .type = .usize, .kind = .{ .extern_func = "__cmphf2" } },
8342883370 .{ .type = .i32, .kind = .{ .reg = .eax } },
8342983371 .{ .type = .u8, .kind = .{ .reg = .cl } },
8343083372 .{ .type = .u64, .kind = .{ .reg = .rdx } },
......@@ -83477,7 +83419,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8347783419 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
8347883420 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
8347983421 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
83480 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } },
83422 .{ .type = .usize, .kind = .{ .extern_func = "__cmphf2" } },
8348183423 .{ .type = .i32, .kind = .{ .reg = .eax } },
8348283424 .{ .type = .u8, .kind = .{ .reg = .cl } },
8348383425 .{ .type = .u64, .kind = .{ .reg = .rdx } },
......@@ -83531,7 +83473,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8353183473 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
8353283474 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
8353383475 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
83534 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } },
83476 .{ .type = .usize, .kind = .{ .extern_func = "__cmphf2" } },
8353583477 .{ .type = .i32, .kind = .{ .reg = .eax } },
8353683478 .{ .type = .u8, .kind = .{ .reg = .cl } },
8353783479 .{ .type = .u64, .kind = .{ .reg = .rdx } },
......@@ -83585,7 +83527,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8358583527 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
8358683528 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
8358783529 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
83588 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } },
83530 .{ .type = .usize, .kind = .{ .extern_func = "__cmphf2" } },
8358983531 .{ .type = .i32, .kind = .{ .reg = .eax } },
8359083532 .{ .type = .u8, .kind = .{ .reg = .cl } },
8359183533 .{ .type = .u64, .kind = .{ .reg = .rdx } },
......@@ -83641,7 +83583,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8364183583 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
8364283584 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
8364383585 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
83644 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } },
83586 .{ .type = .usize, .kind = .{ .extern_func = "__cmphf2" } },
8364583587 .{ .type = .i32, .kind = .{ .reg = .eax } },
8364683588 .{ .type = .u8, .kind = .{ .reg = .cl } },
8364783589 .{ .type = .u64, .kind = .{ .reg = .rdx } },
......@@ -84482,7 +84424,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8448284424 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
8448384425 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
8448484426 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
84485 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } },
84427 .{ .type = .usize, .kind = .{ .extern_func = "__cmptf2" } },
8448684428 .{ .type = .i32, .kind = .{ .reg = .eax } },
8448784429 .{ .type = .u8, .kind = .{ .reg = .cl } },
8448884430 .{ .type = .u32, .kind = .{ .reg = .edx } },
......@@ -84526,7 +84468,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8452684468 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
8452784469 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
8452884470 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
84529 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } },
84471 .{ .type = .usize, .kind = .{ .extern_func = "__cmptf2" } },
8453084472 .{ .type = .i32, .kind = .{ .reg = .eax } },
8453184473 .{ .type = .u8, .kind = .{ .reg = .cl } },
8453284474 .{ .type = .u32, .kind = .{ .reg = .edx } },
......@@ -84570,7 +84512,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8457084512 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
8457184513 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
8457284514 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
84573 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } },
84515 .{ .type = .usize, .kind = .{ .extern_func = "__cmptf2" } },
8457484516 .{ .type = .i32, .kind = .{ .reg = .eax } },
8457584517 .{ .type = .u8, .kind = .{ .reg = .cl } },
8457684518 .{ .type = .u32, .kind = .{ .reg = .edx } },
......@@ -84614,7 +84556,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8461484556 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
8461584557 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
8461684558 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
84617 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } },
84559 .{ .type = .usize, .kind = .{ .extern_func = "__cmptf2" } },
8461884560 .{ .type = .i32, .kind = .{ .reg = .eax } },
8461984561 .{ .type = .u8, .kind = .{ .reg = .cl } },
8462084562 .{ .type = .u32, .kind = .{ .reg = .edx } },
......@@ -84658,7 +84600,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8465884600 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
8465984601 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
8466084602 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
84661 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } },
84603 .{ .type = .usize, .kind = .{ .extern_func = "__cmptf2" } },
8466284604 .{ .type = .i32, .kind = .{ .reg = .eax } },
8466384605 .{ .type = .u8, .kind = .{ .reg = .cl } },
8466484606 .{ .type = .u32, .kind = .{ .reg = .edx } },
......@@ -84702,7 +84644,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8470284644 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
8470384645 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
8470484646 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
84705 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } },
84647 .{ .type = .usize, .kind = .{ .extern_func = "__cmptf2" } },
8470684648 .{ .type = .i32, .kind = .{ .reg = .eax } },
8470784649 .{ .type = .u8, .kind = .{ .reg = .cl } },
8470884650 .{ .type = .u32, .kind = .{ .reg = .edx } },
......@@ -84746,7 +84688,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8474684688 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
8474784689 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
8474884690 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
84749 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } },
84691 .{ .type = .usize, .kind = .{ .extern_func = "__cmptf2" } },
8475084692 .{ .type = .i32, .kind = .{ .reg = .eax } },
8475184693 .{ .type = .u8, .kind = .{ .reg = .cl } },
8475284694 .{ .type = .u64, .kind = .{ .reg = .rdx } },
......@@ -84799,7 +84741,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8479984741 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
8480084742 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
8480184743 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
84802 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } },
84744 .{ .type = .usize, .kind = .{ .extern_func = "__cmptf2" } },
8480384745 .{ .type = .i32, .kind = .{ .reg = .eax } },
8480484746 .{ .type = .u8, .kind = .{ .reg = .cl } },
8480584747 .{ .type = .u64, .kind = .{ .reg = .rdx } },
......@@ -84852,7 +84794,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8485284794 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
8485384795 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
8485484796 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
84855 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } },
84797 .{ .type = .usize, .kind = .{ .extern_func = "__cmptf2" } },
8485684798 .{ .type = .i32, .kind = .{ .reg = .eax } },
8485784799 .{ .type = .u8, .kind = .{ .reg = .cl } },
8485884800 .{ .type = .u64, .kind = .{ .reg = .rdx } },
......@@ -84905,7 +84847,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8490584847 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
8490684848 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
8490784849 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
84908 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } },
84850 .{ .type = .usize, .kind = .{ .extern_func = "__cmptf2" } },
8490984851 .{ .type = .i32, .kind = .{ .reg = .eax } },
8491084852 .{ .type = .u8, .kind = .{ .reg = .cl } },
8491184853 .{ .type = .u64, .kind = .{ .reg = .rdx } },
......@@ -84958,7 +84900,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8495884900 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
8495984901 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
8496084902 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
84961 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } },
84903 .{ .type = .usize, .kind = .{ .extern_func = "__cmptf2" } },
8496284904 .{ .type = .i32, .kind = .{ .reg = .eax } },
8496384905 .{ .type = .u8, .kind = .{ .reg = .cl } },
8496484906 .{ .type = .u64, .kind = .{ .reg = .rdx } },
......@@ -85011,7 +84953,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8501184953 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
8501284954 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
8501384955 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
85014 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } },
84956 .{ .type = .usize, .kind = .{ .extern_func = "__cmptf2" } },
8501584957 .{ .type = .i32, .kind = .{ .reg = .eax } },
8501684958 .{ .type = .u8, .kind = .{ .reg = .cl } },
8501784959 .{ .type = .u64, .kind = .{ .reg = .rdx } },
......@@ -85109,6 +85051,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8510985051 .dbg_arg_inline,
8511085052 => |air_tag| if (use_old) try cg.airDbgVar(inst) else if (!cg.mod.strip) {
8511185053 const pl_op = air_datas[@intFromEnum(inst)].pl_op;
85054 const air_name: Air.NullTerminatedString = @enumFromInt(pl_op.payload);
85055 const ty = cg.typeOf(pl_op.operand);
8511285056 var ops = try cg.tempsFromOperands(inst, .{pl_op.operand});
8511385057 var mcv = ops[0].tracking(cg).short;
8511485058 switch (mcv) {
......@@ -85124,13 +85068,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8512485068 },
8512585069 }
8512685070
85127 const name_nts: Air.NullTerminatedString = @enumFromInt(pl_op.payload);
85128 assert(name_nts != .none);
85129 const name = name_nts.toSlice(cg.air);
85130 try cg.mir_local_name_bytes.appendSlice(cg.gpa, name[0 .. name.len + 1]);
85131
85132 const ty = cg.typeOf(pl_op.operand);
85133 try cg.mir_local_types.append(cg.gpa, ty.toIntern());
85071 try cg.mir_locals.append(cg.gpa, .{
85072 .name = switch (air_name) {
85073 .none => switch (air_tag) {
85074 else => unreachable,
85075 .dbg_arg_inline => .none,
85076 },
85077 else => try cg.addString(air_name.toSlice(cg.air)),
85078 },
85079 .type = ty.toIntern(),
85080 });
8513485081
8513585082 try cg.genLocalDebugInfo(air_tag, ty, ops[0].tracking(cg).short);
8513685083 try ops[0].die(cg);
......@@ -85398,7 +85345,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8539885345 },
8539985346 .call_frame = .{ .alignment = .@"16" },
8540085347 .extra_temps = .{
85401 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__truncsfhf2" } } },
85348 .{ .type = .usize, .kind = .{ .extern_func = "__truncsfhf2" } },
8540285349 .unused,
8540385350 .unused,
8540485351 .unused,
......@@ -85455,7 +85402,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8545585402 .extra_temps = .{
8545685403 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
8545785404 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
85458 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__truncsfhf2" } } },
85405 .{ .type = .usize, .kind = .{ .extern_func = "__truncsfhf2" } },
8545985406 .unused,
8546085407 .unused,
8546185408 .unused,
......@@ -85486,7 +85433,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8548685433 .extra_temps = .{
8548785434 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
8548885435 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
85489 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__truncsfhf2" } } },
85436 .{ .type = .usize, .kind = .{ .extern_func = "__truncsfhf2" } },
8549085437 .unused,
8549185438 .unused,
8549285439 .unused,
......@@ -85517,7 +85464,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8551785464 .extra_temps = .{
8551885465 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
8551985466 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
85520 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__truncsfhf2" } } },
85467 .{ .type = .usize, .kind = .{ .extern_func = "__truncsfhf2" } },
8552185468 .{ .type = .f16, .kind = .{ .reg = .ax } },
8552285469 .unused,
8552385470 .unused,
......@@ -85549,7 +85496,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8554985496 .extra_temps = .{
8555085497 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
8555185498 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
85552 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__truncsfhf2" } } },
85499 .{ .type = .usize, .kind = .{ .extern_func = "__truncsfhf2" } },
8555385500 .{ .type = .f32, .kind = .mem },
8555485501 .{ .type = .f16, .kind = .{ .reg = .ax } },
8555585502 .unused,
......@@ -85580,7 +85527,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8558085527 },
8558185528 .call_frame = .{ .alignment = .@"16" },
8558285529 .extra_temps = .{
85583 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__truncdfhf2" } } },
85530 .{ .type = .usize, .kind = .{ .extern_func = "__truncdfhf2" } },
8558485531 .unused,
8558585532 .unused,
8558685533 .unused,
......@@ -85608,7 +85555,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8560885555 .extra_temps = .{
8560985556 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
8561085557 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
85611 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__truncdfhf2" } } },
85558 .{ .type = .usize, .kind = .{ .extern_func = "__truncdfhf2" } },
8561285559 .unused,
8561385560 .unused,
8561485561 .unused,
......@@ -85639,7 +85586,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8563985586 .extra_temps = .{
8564085587 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
8564185588 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
85642 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__truncdfhf2" } } },
85589 .{ .type = .usize, .kind = .{ .extern_func = "__truncdfhf2" } },
8564385590 .unused,
8564485591 .unused,
8564585592 .unused,
......@@ -85670,7 +85617,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8567085617 .extra_temps = .{
8567185618 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
8567285619 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
85673 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__truncdfhf2" } } },
85620 .{ .type = .usize, .kind = .{ .extern_func = "__truncdfhf2" } },
8567485621 .{ .type = .f16, .kind = .{ .reg = .ax } },
8567585622 .unused,
8567685623 .unused,
......@@ -85702,7 +85649,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8570285649 .extra_temps = .{
8570385650 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
8570485651 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
85705 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__truncdfhf2" } } },
85652 .{ .type = .usize, .kind = .{ .extern_func = "__truncdfhf2" } },
8570685653 .{ .type = .f32, .kind = .mem },
8570785654 .{ .type = .f16, .kind = .{ .reg = .ax } },
8570885655 .unused,
......@@ -85919,7 +85866,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8591985866 .call_frame = .{ .size = 16, .alignment = .@"16" },
8592085867 .extra_temps = .{
8592185868 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
85922 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__truncxfhf2" } } },
85869 .{ .type = .usize, .kind = .{ .extern_func = "__truncxfhf2" } },
8592385870 .unused,
8592485871 .unused,
8592585872 .unused,
......@@ -85947,7 +85894,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8594785894 .call_frame = .{ .size = 16, .alignment = .@"16" },
8594885895 .extra_temps = .{
8594985896 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
85950 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__truncxfhf2" } } },
85897 .{ .type = .usize, .kind = .{ .extern_func = "__truncxfhf2" } },
8595185898 .unused,
8595285899 .unused,
8595385900 .unused,
......@@ -85975,7 +85922,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8597585922 .call_frame = .{ .size = 16, .alignment = .@"16" },
8597685923 .extra_temps = .{
8597785924 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
85978 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__truncxfhf2" } } },
85925 .{ .type = .usize, .kind = .{ .extern_func = "__truncxfhf2" } },
8597985926 .unused,
8598085927 .unused,
8598185928 .unused,
......@@ -86005,7 +85952,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8600585952 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
8600685953 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
8600785954 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
86008 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__truncxfhf2" } } },
85955 .{ .type = .usize, .kind = .{ .extern_func = "__truncxfhf2" } },
8600985956 .unused,
8601085957 .unused,
8601185958 .unused,
......@@ -86037,7 +85984,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8603785984 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
8603885985 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
8603985986 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
86040 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__truncxfhf2" } } },
85987 .{ .type = .usize, .kind = .{ .extern_func = "__truncxfhf2" } },
8604185988 .unused,
8604285989 .unused,
8604385990 .unused,
......@@ -86069,7 +86016,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8606986016 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
8607086017 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
8607186018 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
86072 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__truncxfhf2" } } },
86019 .{ .type = .usize, .kind = .{ .extern_func = "__truncxfhf2" } },
8607386020 .{ .type = .f16, .kind = .{ .reg = .ax } },
8607486021 .unused,
8607586022 .unused,
......@@ -86102,7 +86049,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8610286049 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
8610386050 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
8610486051 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
86105 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__truncxfhf2" } } },
86052 .{ .type = .usize, .kind = .{ .extern_func = "__truncxfhf2" } },
8610686053 .{ .type = .f16, .kind = .{ .reg = .ax } },
8610786054 .unused,
8610886055 .unused,
......@@ -86243,7 +86190,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8624386190 },
8624486191 .call_frame = .{ .alignment = .@"16" },
8624586192 .extra_temps = .{
86246 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfhf2" } } },
86193 .{ .type = .usize, .kind = .{ .extern_func = "__trunctfhf2" } },
8624786194 .unused,
8624886195 .unused,
8624986196 .unused,
......@@ -86271,7 +86218,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8627186218 .extra_temps = .{
8627286219 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
8627386220 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
86274 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfhf2" } } },
86221 .{ .type = .usize, .kind = .{ .extern_func = "__trunctfhf2" } },
8627586222 .unused,
8627686223 .unused,
8627786224 .unused,
......@@ -86302,7 +86249,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8630286249 .extra_temps = .{
8630386250 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
8630486251 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
86305 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfhf2" } } },
86252 .{ .type = .usize, .kind = .{ .extern_func = "__trunctfhf2" } },
8630686253 .unused,
8630786254 .unused,
8630886255 .unused,
......@@ -86333,7 +86280,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8633386280 .extra_temps = .{
8633486281 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
8633586282 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
86336 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfhf2" } } },
86283 .{ .type = .usize, .kind = .{ .extern_func = "__trunctfhf2" } },
8633786284 .{ .type = .f16, .kind = .{ .reg = .ax } },
8633886285 .unused,
8633986286 .unused,
......@@ -86365,7 +86312,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8636586312 .extra_temps = .{
8636686313 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
8636786314 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
86368 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfhf2" } } },
86315 .{ .type = .usize, .kind = .{ .extern_func = "__trunctfhf2" } },
8636986316 .{ .type = .f32, .kind = .mem },
8637086317 .{ .type = .f16, .kind = .{ .reg = .ax } },
8637186318 .unused,
......@@ -86396,7 +86343,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8639686343 },
8639786344 .call_frame = .{ .alignment = .@"16" },
8639886345 .extra_temps = .{
86399 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfsf2" } } },
86346 .{ .type = .usize, .kind = .{ .extern_func = "__trunctfsf2" } },
8640086347 .unused,
8640186348 .unused,
8640286349 .unused,
......@@ -86424,7 +86371,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8642486371 .extra_temps = .{
8642586372 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
8642686373 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
86427 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfsf2" } } },
86374 .{ .type = .usize, .kind = .{ .extern_func = "__trunctfsf2" } },
8642886375 .unused,
8642986376 .unused,
8643086377 .unused,
......@@ -86455,7 +86402,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8645586402 .extra_temps = .{
8645686403 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
8645786404 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
86458 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfsf2" } } },
86405 .{ .type = .usize, .kind = .{ .extern_func = "__trunctfsf2" } },
8645986406 .unused,
8646086407 .unused,
8646186408 .unused,
......@@ -86486,7 +86433,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8648686433 .extra_temps = .{
8648786434 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
8648886435 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
86489 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfsf2" } } },
86436 .{ .type = .usize, .kind = .{ .extern_func = "__trunctfsf2" } },
8649086437 .unused,
8649186438 .unused,
8649286439 .unused,
......@@ -86515,7 +86462,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8651586462 },
8651686463 .call_frame = .{ .alignment = .@"16" },
8651786464 .extra_temps = .{
86518 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfdf2" } } },
86465 .{ .type = .usize, .kind = .{ .extern_func = "__trunctfdf2" } },
8651986466 .unused,
8652086467 .unused,
8652186468 .unused,
......@@ -86543,7 +86490,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8654386490 .extra_temps = .{
8654486491 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
8654586492 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
86546 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfdf2" } } },
86493 .{ .type = .usize, .kind = .{ .extern_func = "__trunctfdf2" } },
8654786494 .unused,
8654886495 .unused,
8654986496 .unused,
......@@ -86574,7 +86521,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8657486521 .extra_temps = .{
8657586522 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
8657686523 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
86577 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfdf2" } } },
86524 .{ .type = .usize, .kind = .{ .extern_func = "__trunctfdf2" } },
8657886525 .unused,
8657986526 .unused,
8658086527 .unused,
......@@ -86605,7 +86552,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8660586552 .extra_temps = .{
8660686553 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
8660786554 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
86608 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfdf2" } } },
86555 .{ .type = .usize, .kind = .{ .extern_func = "__trunctfdf2" } },
8660986556 .unused,
8661086557 .unused,
8661186558 .unused,
......@@ -86634,7 +86581,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8663486581 },
8663586582 .call_frame = .{ .alignment = .@"16" },
8663686583 .extra_temps = .{
86637 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfxf2" } } },
86584 .{ .type = .usize, .kind = .{ .extern_func = "__trunctfxf2" } },
8663886585 .unused,
8663986586 .unused,
8664086587 .unused,
......@@ -86662,7 +86609,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8666286609 .extra_temps = .{
8666386610 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
8666486611 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
86665 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfxf2" } } },
86612 .{ .type = .usize, .kind = .{ .extern_func = "__trunctfxf2" } },
8666686613 .unused,
8666786614 .unused,
8666886615 .unused,
......@@ -86694,7 +86641,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8669486641 .extra_temps = .{
8669586642 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
8669686643 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
86697 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfxf2" } } },
86644 .{ .type = .usize, .kind = .{ .extern_func = "__trunctfxf2" } },
8669886645 .unused,
8669986646 .unused,
8670086647 .unused,
......@@ -86726,7 +86673,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8672686673 .extra_temps = .{
8672786674 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
8672886675 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
86729 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfxf2" } } },
86676 .{ .type = .usize, .kind = .{ .extern_func = "__trunctfxf2" } },
8673086677 .unused,
8673186678 .unused,
8673286679 .unused,
......@@ -86806,7 +86753,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8680686753 },
8680786754 .call_frame = .{ .alignment = .@"16" },
8680886755 .extra_temps = .{
86809 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendhfsf2" } } },
86756 .{ .type = .usize, .kind = .{ .extern_func = "__extendhfsf2" } },
8681086757 .unused,
8681186758 .unused,
8681286759 .unused,
......@@ -86863,7 +86810,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8686386810 .extra_temps = .{
8686486811 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
8686586812 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
86866 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendhfsf2" } } },
86813 .{ .type = .usize, .kind = .{ .extern_func = "__extendhfsf2" } },
8686786814 .unused,
8686886815 .unused,
8686986816 .unused,
......@@ -86895,7 +86842,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8689586842 .extra_temps = .{
8689686843 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
8689786844 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
86898 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendhfsf2" } } },
86845 .{ .type = .usize, .kind = .{ .extern_func = "__extendhfsf2" } },
8689986846 .unused,
8690086847 .unused,
8690186848 .unused,
......@@ -86929,7 +86876,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8692986876 .{ .type = .f16, .kind = .{ .reg = .ax } },
8693086877 .{ .type = .f32, .kind = .mem },
8693186878 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
86932 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendhfsf2" } } },
86879 .{ .type = .usize, .kind = .{ .extern_func = "__extendhfsf2" } },
8693386880 .unused,
8693486881 .unused,
8693586882 .unused,
......@@ -87026,7 +86973,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8702686973 },
8702786974 .call_frame = .{ .alignment = .@"16" },
8702886975 .extra_temps = .{
87029 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendhfdf2" } } },
86976 .{ .type = .usize, .kind = .{ .extern_func = "__extendhfdf2" } },
8703086977 .unused,
8703186978 .unused,
8703286979 .unused,
......@@ -87087,7 +87034,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8708787034 .extra_temps = .{
8708887035 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
8708987036 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
87090 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendhfdf2" } } },
87037 .{ .type = .usize, .kind = .{ .extern_func = "__extendhfdf2" } },
8709187038 .unused,
8709287039 .unused,
8709387040 .unused,
......@@ -87119,7 +87066,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8711987066 .extra_temps = .{
8712087067 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
8712187068 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
87122 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendhfdf2" } } },
87069 .{ .type = .usize, .kind = .{ .extern_func = "__extendhfdf2" } },
8712387070 .unused,
8712487071 .unused,
8712587072 .unused,
......@@ -87153,7 +87100,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8715387100 .{ .type = .f16, .kind = .{ .reg = .ax } },
8715487101 .{ .type = .f32, .kind = .mem },
8715587102 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
87156 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendhfdf2" } } },
87103 .{ .type = .usize, .kind = .{ .extern_func = "__extendhfdf2" } },
8715787104 .unused,
8715887105 .unused,
8715987106 .unused,
......@@ -87209,7 +87156,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8720987156 },
8721087157 .call_frame = .{ .alignment = .@"16" },
8721187158 .extra_temps = .{
87212 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendhfxf2" } } },
87159 .{ .type = .usize, .kind = .{ .extern_func = "__extendhfxf2" } },
8721387160 .unused,
8721487161 .unused,
8721587162 .unused,
......@@ -87237,7 +87184,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8723787184 .extra_temps = .{
8723887185 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
8723987186 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
87240 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendhfxf2" } } },
87187 .{ .type = .usize, .kind = .{ .extern_func = "__extendhfxf2" } },
8724187188 .unused,
8724287189 .unused,
8724387190 .unused,
......@@ -87270,7 +87217,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8727087217 .extra_temps = .{
8727187218 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
8727287219 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
87273 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendhfxf2" } } },
87220 .{ .type = .usize, .kind = .{ .extern_func = "__extendhfxf2" } },
8727487221 .unused,
8727587222 .unused,
8727687223 .unused,
......@@ -87305,7 +87252,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8730587252 .{ .type = .f16, .kind = .{ .reg = .ax } },
8730687253 .{ .type = .f32, .kind = .mem },
8730787254 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
87308 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendhfxf2" } } },
87255 .{ .type = .usize, .kind = .{ .extern_func = "__extendhfxf2" } },
8730987256 .unused,
8731087257 .unused,
8731187258 .unused,
......@@ -87335,7 +87282,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8733587282 },
8733687283 .call_frame = .{ .alignment = .@"16" },
8733787284 .extra_temps = .{
87338 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendhftf2" } } },
87285 .{ .type = .usize, .kind = .{ .extern_func = "__extendhftf2" } },
8733987286 .unused,
8734087287 .unused,
8734187288 .unused,
......@@ -87363,7 +87310,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8736387310 .extra_temps = .{
8736487311 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
8736587312 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
87366 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendhftf2" } } },
87313 .{ .type = .usize, .kind = .{ .extern_func = "__extendhftf2" } },
8736787314 .unused,
8736887315 .unused,
8736987316 .unused,
......@@ -87395,7 +87342,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8739587342 .extra_temps = .{
8739687343 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
8739787344 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
87398 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendhftf2" } } },
87345 .{ .type = .usize, .kind = .{ .extern_func = "__extendhftf2" } },
8739987346 .unused,
8740087347 .unused,
8740187348 .unused,
......@@ -87429,7 +87376,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8742987376 .{ .type = .f16, .kind = .{ .reg = .ax } },
8743087377 .{ .type = .f32, .kind = .mem },
8743187378 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
87432 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendhftf2" } } },
87379 .{ .type = .usize, .kind = .{ .extern_func = "__extendhftf2" } },
8743387380 .unused,
8743487381 .unused,
8743587382 .unused,
......@@ -87696,7 +87643,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8769687643 },
8769787644 .call_frame = .{ .alignment = .@"16" },
8769887645 .extra_temps = .{
87699 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendsftf2" } } },
87646 .{ .type = .usize, .kind = .{ .extern_func = "__extendsftf2" } },
8770087647 .unused,
8770187648 .unused,
8770287649 .unused,
......@@ -87724,7 +87671,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8772487671 .extra_temps = .{
8772587672 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
8772687673 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
87727 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendsftf2" } } },
87674 .{ .type = .usize, .kind = .{ .extern_func = "__extendsftf2" } },
8772887675 .unused,
8772987676 .unused,
8773087677 .unused,
......@@ -87755,7 +87702,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8775587702 .extra_temps = .{
8775687703 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
8775787704 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
87758 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendsftf2" } } },
87705 .{ .type = .usize, .kind = .{ .extern_func = "__extendsftf2" } },
8775987706 .unused,
8776087707 .unused,
8776187708 .unused,
......@@ -87786,7 +87733,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8778687733 .extra_temps = .{
8778787734 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
8778887735 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
87789 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendsftf2" } } },
87736 .{ .type = .usize, .kind = .{ .extern_func = "__extendsftf2" } },
8779087737 .unused,
8779187738 .unused,
8779287739 .unused,
......@@ -87869,7 +87816,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8786987816 },
8787087817 .call_frame = .{ .alignment = .@"16" },
8787187818 .extra_temps = .{
87872 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extenddftf2" } } },
87819 .{ .type = .usize, .kind = .{ .extern_func = "__extenddftf2" } },
8787387820 .unused,
8787487821 .unused,
8787587822 .unused,
......@@ -87897,7 +87844,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8789787844 .extra_temps = .{
8789887845 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
8789987846 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
87900 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extenddftf2" } } },
87847 .{ .type = .usize, .kind = .{ .extern_func = "__extenddftf2" } },
8790187848 .unused,
8790287849 .unused,
8790387850 .unused,
......@@ -87928,7 +87875,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8792887875 .extra_temps = .{
8792987876 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
8793087877 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
87931 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extenddftf2" } } },
87878 .{ .type = .usize, .kind = .{ .extern_func = "__extenddftf2" } },
8793287879 .unused,
8793387880 .unused,
8793487881 .unused,
......@@ -87959,7 +87906,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8795987906 .extra_temps = .{
8796087907 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
8796187908 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
87962 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extenddftf2" } } },
87909 .{ .type = .usize, .kind = .{ .extern_func = "__extenddftf2" } },
8796387910 .unused,
8796487911 .unused,
8796587912 .unused,
......@@ -87990,7 +87937,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8799087937 .call_frame = .{ .size = 16, .alignment = .@"16" },
8799187938 .extra_temps = .{
8799287939 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
87993 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendxftf2" } } },
87940 .{ .type = .usize, .kind = .{ .extern_func = "__extendxftf2" } },
8799487941 .unused,
8799587942 .unused,
8799687943 .unused,
......@@ -88018,7 +87965,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8801887965 .call_frame = .{ .size = 16, .alignment = .@"16" },
8801987966 .extra_temps = .{
8802087967 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
88021 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendxftf2" } } },
87968 .{ .type = .usize, .kind = .{ .extern_func = "__extendxftf2" } },
8802287969 .unused,
8802387970 .unused,
8802487971 .unused,
......@@ -88046,7 +87993,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8804687993 .call_frame = .{ .size = 16, .alignment = .@"16" },
8804787994 .extra_temps = .{
8804887995 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
88049 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendxftf2" } } },
87996 .{ .type = .usize, .kind = .{ .extern_func = "__extendxftf2" } },
8805087997 .unused,
8805187998 .unused,
8805287999 .unused,
......@@ -88076,7 +88023,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8807688023 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
8807788024 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
8807888025 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
88079 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendxftf2" } } },
88026 .{ .type = .usize, .kind = .{ .extern_func = "__extendxftf2" } },
8808088027 .unused,
8808188028 .unused,
8808288029 .unused,
......@@ -88108,7 +88055,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8810888055 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
8810988056 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
8811088057 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
88111 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendxftf2" } } },
88058 .{ .type = .usize, .kind = .{ .extern_func = "__extendxftf2" } },
8811288059 .unused,
8811388060 .unused,
8811488061 .unused,
......@@ -88140,7 +88087,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8814088087 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
8814188088 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
8814288089 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
88143 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendxftf2" } } },
88090 .{ .type = .usize, .kind = .{ .extern_func = "__extendxftf2" } },
8814488091 .unused,
8814588092 .unused,
8814688093 .unused,
......@@ -98891,9 +98838,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9889198838 } }) catch |err| switch (err) {
9889298839 error.SelectFailed => {
9889398840 const elem_size = res_ty.abiSize(zcu);
98894 const base = try cg.tempAllocReg(.usize, abi.RegisterClass.gp);
98841 var base = try cg.tempAllocReg(.usize, abi.RegisterClass.gp);
9889598842 while (try ops[0].toBase(false, cg) or
98896 try ops[1].toRegClass(true, .general_purpose, cg))
98843 try ops[1].toRegClass(true, .general_purpose, cg) or
98844 try base.toRegClass(true, .general_purpose, cg))
9889798845 {}
9889898846 const base_reg = base.tracking(cg).short.register.to64();
9889998847 const rhs_reg = ops[1].tracking(cg).short.register.to64();
......@@ -99334,7 +99282,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9933499282 },
9933599283 .call_frame = .{ .alignment = .@"16" },
9933699284 .extra_temps = .{
99337 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixhfsi" } } },
99285 .{ .type = .usize, .kind = .{ .extern_func = "__fixhfsi" } },
9933899286 .unused,
9933999287 .unused,
9934099288 .unused,
......@@ -99360,7 +99308,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9936099308 },
9936199309 .call_frame = .{ .alignment = .@"16" },
9936299310 .extra_temps = .{
99363 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunshfsi" } } },
99311 .{ .type = .usize, .kind = .{ .extern_func = "__fixunshfsi" } },
9936499312 .unused,
9936599313 .unused,
9936699314 .unused,
......@@ -99386,7 +99334,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9938699334 },
9938799335 .call_frame = .{ .alignment = .@"16" },
9938899336 .extra_temps = .{
99389 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixhfdi" } } },
99337 .{ .type = .usize, .kind = .{ .extern_func = "__fixhfdi" } },
9939099338 .unused,
9939199339 .unused,
9939299340 .unused,
......@@ -99412,7 +99360,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9941299360 },
9941399361 .call_frame = .{ .alignment = .@"16" },
9941499362 .extra_temps = .{
99415 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunshfdi" } } },
99363 .{ .type = .usize, .kind = .{ .extern_func = "__fixunshfdi" } },
9941699364 .unused,
9941799365 .unused,
9941899366 .unused,
......@@ -99438,7 +99386,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9943899386 },
9943999387 .call_frame = .{ .alignment = .@"16" },
9944099388 .extra_temps = .{
99441 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixhfti" } } },
99389 .{ .type = .usize, .kind = .{ .extern_func = "__fixhfti" } },
9944299390 .unused,
9944399391 .unused,
9944499392 .unused,
......@@ -99464,7 +99412,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9946499412 },
9946599413 .call_frame = .{ .alignment = .@"16" },
9946699414 .extra_temps = .{
99467 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunshfti" } } },
99415 .{ .type = .usize, .kind = .{ .extern_func = "__fixunshfti" } },
9946899416 .unused,
9946999417 .unused,
9947099418 .unused,
......@@ -99490,7 +99438,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9949099438 },
9949199439 .call_frame = .{ .alignment = .@"16" },
9949299440 .extra_temps = .{
99493 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixhfdi" } } },
99441 .{ .type = .usize, .kind = .{ .extern_func = "__fixhfdi" } },
9949499442 .{ .type = .i64, .kind = .{ .reg = .rax } },
9949599443 .{ .type = .usize, .kind = .{ .reg = .rdi } },
9949699444 .{ .type = .u32, .kind = .{ .reg = .ecx } },
......@@ -99521,7 +99469,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9952199469 },
9952299470 .call_frame = .{ .alignment = .@"16" },
9952399471 .extra_temps = .{
99524 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunshfdi" } } },
99472 .{ .type = .usize, .kind = .{ .extern_func = "__fixunshfdi" } },
9952599473 .{ .type = .i64, .kind = .{ .reg = .rax } },
9952699474 .{ .type = .usize, .kind = .{ .reg = .rdi } },
9952799475 .{ .type = .u32, .kind = .{ .reg = .ecx } },
......@@ -99615,7 +99563,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9961599563 .extra_temps = .{
9961699564 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
9961799565 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
99618 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixhfsi" } } },
99566 .{ .type = .usize, .kind = .{ .extern_func = "__fixhfsi" } },
9961999567 .{ .type = .i32, .kind = .{ .reg = .eax } },
9962099568 .unused,
9962199569 .unused,
......@@ -99647,7 +99595,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9964799595 .extra_temps = .{
9964899596 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
9964999597 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
99650 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixhfsi" } } },
99598 .{ .type = .usize, .kind = .{ .extern_func = "__fixhfsi" } },
9965199599 .{ .type = .i32, .kind = .{ .reg = .eax } },
9965299600 .unused,
9965399601 .unused,
......@@ -99679,7 +99627,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9967999627 .extra_temps = .{
9968099628 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
9968199629 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
99682 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixhfsi" } } },
99630 .{ .type = .usize, .kind = .{ .extern_func = "__fixhfsi" } },
9968399631 .{ .type = .i32, .kind = .{ .reg = .eax } },
9968499632 .unused,
9968599633 .unused,
......@@ -99711,7 +99659,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9971199659 .extra_temps = .{
9971299660 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
9971399661 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
99714 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixhfsi" } } },
99662 .{ .type = .usize, .kind = .{ .extern_func = "__fixhfsi" } },
9971599663 .{ .type = .i32, .kind = .{ .reg = .eax } },
9971699664 .unused,
9971799665 .unused,
......@@ -99745,7 +99693,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9974599693 .{ .type = .i32, .kind = .{ .reg = .eax } },
9974699694 .{ .type = .f32, .kind = .mem },
9974799695 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
99748 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixhfsi" } } },
99696 .{ .type = .usize, .kind = .{ .extern_func = "__fixhfsi" } },
9974999697 .unused,
9975099698 .unused,
9975199699 .unused,
......@@ -99778,7 +99726,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9977899726 .{ .type = .i32, .kind = .{ .reg = .eax } },
9977999727 .{ .type = .f32, .kind = .mem },
9978099728 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
99781 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixhfsi" } } },
99729 .{ .type = .usize, .kind = .{ .extern_func = "__fixhfsi" } },
9978299730 .unused,
9978399731 .unused,
9978499732 .unused,
......@@ -99899,7 +99847,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9989999847 .extra_temps = .{
9990099848 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
9990199849 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
99902 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixhfsi" } } },
99850 .{ .type = .usize, .kind = .{ .extern_func = "__fixhfsi" } },
9990399851 .{ .type = .i32, .kind = .{ .reg = .eax } },
9990499852 .unused,
9990599853 .unused,
......@@ -99931,7 +99879,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9993199879 .extra_temps = .{
9993299880 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
9993399881 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
99934 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixhfsi" } } },
99882 .{ .type = .usize, .kind = .{ .extern_func = "__fixhfsi" } },
9993599883 .{ .type = .i32, .kind = .{ .reg = .eax } },
9993699884 .unused,
9993799885 .unused,
......@@ -99965,7 +99913,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9996599913 .{ .type = .i32, .kind = .{ .reg = .eax } },
9996699914 .{ .type = .f32, .kind = .mem },
9996799915 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
99968 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixhfsi" } } },
99916 .{ .type = .usize, .kind = .{ .extern_func = "__fixhfsi" } },
9996999917 .unused,
9997099918 .unused,
9997199919 .unused,
......@@ -100058,7 +100006,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
100058100006 .extra_temps = .{
100059100007 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
100060100008 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
100061 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixhfsi" } } },
100009 .{ .type = .usize, .kind = .{ .extern_func = "__fixhfsi" } },
100062100010 .{ .type = .i32, .kind = .{ .reg = .eax } },
100063100011 .unused,
100064100012 .unused,
......@@ -100090,7 +100038,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
100090100038 .extra_temps = .{
100091100039 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
100092100040 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
100093 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunshfsi" } } },
100041 .{ .type = .usize, .kind = .{ .extern_func = "__fixunshfsi" } },
100094100042 .{ .type = .u32, .kind = .{ .reg = .eax } },
100095100043 .unused,
100096100044 .unused,
......@@ -100122,7 +100070,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
100122100070 .extra_temps = .{
100123100071 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
100124100072 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
100125 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixhfsi" } } },
100073 .{ .type = .usize, .kind = .{ .extern_func = "__fixhfsi" } },
100126100074 .{ .type = .i32, .kind = .{ .reg = .eax } },
100127100075 .unused,
100128100076 .unused,
......@@ -100154,7 +100102,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
100154100102 .extra_temps = .{
100155100103 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
100156100104 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
100157 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunshfsi" } } },
100105 .{ .type = .usize, .kind = .{ .extern_func = "__fixunshfsi" } },
100158100106 .{ .type = .u32, .kind = .{ .reg = .eax } },
100159100107 .unused,
100160100108 .unused,
......@@ -100188,7 +100136,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
100188100136 .{ .type = .i32, .kind = .{ .reg = .eax } },
100189100137 .{ .type = .f32, .kind = .mem },
100190100138 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
100191 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixhfsi" } } },
100139 .{ .type = .usize, .kind = .{ .extern_func = "__fixhfsi" } },
100192100140 .unused,
100193100141 .unused,
100194100142 .unused,
......@@ -100221,7 +100169,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
100221100169 .{ .type = .u32, .kind = .{ .reg = .eax } },
100222100170 .{ .type = .f32, .kind = .mem },
100223100171 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
100224 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunshfsi" } } },
100172 .{ .type = .usize, .kind = .{ .extern_func = "__fixunshfsi" } },
100225100173 .unused,
100226100174 .unused,
100227100175 .unused,
......@@ -100284,7 +100232,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
100284100232 .extra_temps = .{
100285100233 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
100286100234 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
100287 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixhfdi" } } },
100235 .{ .type = .usize, .kind = .{ .extern_func = "__fixhfdi" } },
100288100236 .{ .type = .i64, .kind = .{ .reg = .rax } },
100289100237 .unused,
100290100238 .unused,
......@@ -100316,7 +100264,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
100316100264 .extra_temps = .{
100317100265 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
100318100266 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
100319 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunshfdi" } } },
100267 .{ .type = .usize, .kind = .{ .extern_func = "__fixunshfdi" } },
100320100268 .{ .type = .u64, .kind = .{ .reg = .rax } },
100321100269 .unused,
100322100270 .unused,
......@@ -100348,7 +100296,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
100348100296 .extra_temps = .{
100349100297 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
100350100298 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
100351 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixhfdi" } } },
100299 .{ .type = .usize, .kind = .{ .extern_func = "__fixhfdi" } },
100352100300 .{ .type = .i64, .kind = .{ .reg = .rax } },
100353100301 .unused,
100354100302 .unused,
......@@ -100380,7 +100328,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
100380100328 .extra_temps = .{
100381100329 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
100382100330 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
100383 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunshfdi" } } },
100331 .{ .type = .usize, .kind = .{ .extern_func = "__fixunshfdi" } },
100384100332 .{ .type = .u64, .kind = .{ .reg = .rax } },
100385100333 .unused,
100386100334 .unused,
......@@ -100414,7 +100362,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
100414100362 .{ .type = .i64, .kind = .{ .reg = .rax } },
100415100363 .{ .type = .f32, .kind = .mem },
100416100364 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
100417 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixhfdi" } } },
100365 .{ .type = .usize, .kind = .{ .extern_func = "__fixhfdi" } },
100418100366 .unused,
100419100367 .unused,
100420100368 .unused,
......@@ -100447,7 +100395,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
100447100395 .{ .type = .u64, .kind = .{ .reg = .rax } },
100448100396 .{ .type = .f32, .kind = .mem },
100449100397 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
100450 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunshfdi" } } },
100398 .{ .type = .usize, .kind = .{ .extern_func = "__fixunshfdi" } },
100451100399 .unused,
100452100400 .unused,
100453100401 .unused,
......@@ -100478,7 +100426,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
100478100426 .extra_temps = .{
100479100427 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
100480100428 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
100481 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixhfti" } } },
100429 .{ .type = .usize, .kind = .{ .extern_func = "__fixhfti" } },
100482100430 .{ .type = .u64, .kind = .{ .reg = .rax } },
100483100431 .{ .type = .i64, .kind = .{ .reg = .rdx } },
100484100432 .unused,
......@@ -100511,7 +100459,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
100511100459 .extra_temps = .{
100512100460 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
100513100461 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
100514 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunshfti" } } },
100462 .{ .type = .usize, .kind = .{ .extern_func = "__fixunshfti" } },
100515100463 .{ .type = .u64, .kind = .{ .reg = .rax } },
100516100464 .{ .type = .u64, .kind = .{ .reg = .rdx } },
100517100465 .unused,
......@@ -100544,7 +100492,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
100544100492 .extra_temps = .{
100545100493 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
100546100494 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
100547 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixhfti" } } },
100495 .{ .type = .usize, .kind = .{ .extern_func = "__fixhfti" } },
100548100496 .{ .type = .u64, .kind = .{ .reg = .rax } },
100549100497 .{ .type = .i64, .kind = .{ .reg = .rdx } },
100550100498 .unused,
......@@ -100577,7 +100525,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
100577100525 .extra_temps = .{
100578100526 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
100579100527 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
100580 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunshfti" } } },
100528 .{ .type = .usize, .kind = .{ .extern_func = "__fixunshfti" } },
100581100529 .{ .type = .u64, .kind = .{ .reg = .rax } },
100582100530 .{ .type = .u64, .kind = .{ .reg = .rdx } },
100583100531 .unused,
......@@ -100612,7 +100560,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
100612100560 .{ .type = .u64, .kind = .{ .reg = .rax } },
100613100561 .{ .type = .f32, .kind = .mem },
100614100562 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
100615 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixhfti" } } },
100563 .{ .type = .usize, .kind = .{ .extern_func = "__fixhfti" } },
100616100564 .{ .type = .i64, .kind = .{ .reg = .rdx } },
100617100565 .unused,
100618100566 .unused,
......@@ -100646,7 +100594,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
100646100594 .{ .type = .u64, .kind = .{ .reg = .rax } },
100647100595 .{ .type = .f32, .kind = .mem },
100648100596 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
100649 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunshfti" } } },
100597 .{ .type = .usize, .kind = .{ .extern_func = "__fixunshfti" } },
100650100598 .{ .type = .u64, .kind = .{ .reg = .rdx } },
100651100599 .unused,
100652100600 .unused,
......@@ -100681,7 +100629,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
100681100629 .{ .type = .usize, .kind = .{ .reg = .rdi } },
100682100630 .{ .type = .usize, .kind = .{ .reg = .rsi } },
100683100631 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
100684 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixhfei" } } },
100632 .{ .type = .usize, .kind = .{ .extern_func = "__fixhfei" } },
100685100633 .unused,
100686100634 .unused,
100687100635 .unused,
......@@ -100716,7 +100664,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
100716100664 .{ .type = .usize, .kind = .{ .reg = .rdi } },
100717100665 .{ .type = .usize, .kind = .{ .reg = .rsi } },
100718100666 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
100719 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunshfei" } } },
100667 .{ .type = .usize, .kind = .{ .extern_func = "__fixunshfei" } },
100720100668 .unused,
100721100669 .unused,
100722100670 .unused,
......@@ -100751,7 +100699,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
100751100699 .{ .type = .usize, .kind = .{ .reg = .rdi } },
100752100700 .{ .type = .usize, .kind = .{ .reg = .rsi } },
100753100701 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
100754 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixhfei" } } },
100702 .{ .type = .usize, .kind = .{ .extern_func = "__fixhfei" } },
100755100703 .unused,
100756100704 .unused,
100757100705 .unused,
......@@ -100786,7 +100734,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
100786100734 .{ .type = .usize, .kind = .{ .reg = .rdi } },
100787100735 .{ .type = .usize, .kind = .{ .reg = .rsi } },
100788100736 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
100789 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunshfei" } } },
100737 .{ .type = .usize, .kind = .{ .extern_func = "__fixunshfei" } },
100790100738 .unused,
100791100739 .unused,
100792100740 .unused,
......@@ -100822,7 +100770,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
100822100770 .{ .type = .usize, .kind = .{ .reg = .rsi } },
100823100771 .{ .type = .f32, .kind = .mem },
100824100772 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
100825 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixhfei" } } },
100773 .{ .type = .usize, .kind = .{ .extern_func = "__fixhfei" } },
100826100774 .unused,
100827100775 .unused,
100828100776 .unused,
......@@ -100858,7 +100806,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
100858100806 .{ .type = .usize, .kind = .{ .reg = .rsi } },
100859100807 .{ .type = .f32, .kind = .mem },
100860100808 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
100861 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunshfei" } } },
100809 .{ .type = .usize, .kind = .{ .extern_func = "__fixunshfei" } },
100862100810 .unused,
100863100811 .unused,
100864100812 .unused,
......@@ -101000,7 +100948,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101000100948 },
101001100949 .call_frame = .{ .alignment = .@"16" },
101002100950 .extra_temps = .{
101003 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixsfti" } } },
100951 .{ .type = .usize, .kind = .{ .extern_func = "__fixsfti" } },
101004100952 .unused,
101005100953 .unused,
101006100954 .unused,
......@@ -101026,7 +100974,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101026100974 },
101027100975 .call_frame = .{ .alignment = .@"16" },
101028100976 .extra_temps = .{
101029 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunssfti" } } },
100977 .{ .type = .usize, .kind = .{ .extern_func = "__fixunssfti" } },
101030100978 .unused,
101031100979 .unused,
101032100980 .unused,
......@@ -101055,7 +101003,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101055101003 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
101056101004 .{ .type = .i64, .kind = .{ .reg = .rax } },
101057101005 .{ .type = .vector_4_f32, .kind = .{ .smax_mem = .{} } },
101058 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunssfti" } } },
101006 .{ .type = .usize, .kind = .{ .extern_func = "__fixunssfti" } },
101059101007 .{ .type = .i64, .kind = .{ .reg = .rdx } },
101060101008 .{ .type = .usize, .kind = .{ .reg = .rdi } },
101061101009 .{ .type = .u32, .kind = .{ .reg = .ecx } },
......@@ -101096,7 +101044,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101096101044 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
101097101045 .{ .type = .i64, .kind = .{ .reg = .rax } },
101098101046 .{ .type = .vector_4_f32, .kind = .{ .smax_mem = .{} } },
101099 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunssfti" } } },
101047 .{ .type = .usize, .kind = .{ .extern_func = "__fixunssfti" } },
101100101048 .{ .type = .i64, .kind = .{ .reg = .rdx } },
101101101049 .{ .type = .usize, .kind = .{ .reg = .rdi } },
101102101050 .{ .type = .u32, .kind = .{ .reg = .ecx } },
......@@ -101137,7 +101085,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101137101085 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
101138101086 .{ .type = .i64, .kind = .{ .reg = .rax } },
101139101087 .{ .type = .vector_4_f32, .kind = .{ .smax_mem = .{} } },
101140 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunssfti" } } },
101088 .{ .type = .usize, .kind = .{ .extern_func = "__fixunssfti" } },
101141101089 .{ .type = .u32, .kind = .{ .reg = .ecx } },
101142101090 .{ .type = .i64, .kind = .{ .reg = .rdx } },
101143101091 .{ .type = .usize, .kind = .{ .reg = .rdi } },
......@@ -101175,7 +101123,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101175101123 },
101176101124 .call_frame = .{ .alignment = .@"16" },
101177101125 .extra_temps = .{
101178 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunssfti" } } },
101126 .{ .type = .usize, .kind = .{ .extern_func = "__fixunssfti" } },
101179101127 .{ .type = .i64, .kind = .{ .reg = .rax } },
101180101128 .{ .type = .i64, .kind = .{ .reg = .rdx } },
101181101129 .{ .type = .usize, .kind = .{ .reg = .rdi } },
......@@ -101385,7 +101333,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101385101333 .extra_temps = .{
101386101334 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
101387101335 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
101388 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixsfsi" } } },
101336 .{ .type = .usize, .kind = .{ .extern_func = "__fixsfsi" } },
101389101337 .{ .type = .i32, .kind = .{ .reg = .eax } },
101390101338 .unused,
101391101339 .unused,
......@@ -101416,7 +101364,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101416101364 .extra_temps = .{
101417101365 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
101418101366 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
101419 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixsfsi" } } },
101367 .{ .type = .usize, .kind = .{ .extern_func = "__fixsfsi" } },
101420101368 .{ .type = .i32, .kind = .{ .reg = .eax } },
101421101369 .unused,
101422101370 .unused,
......@@ -101447,7 +101395,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101447101395 .extra_temps = .{
101448101396 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
101449101397 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
101450 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixsfsi" } } },
101398 .{ .type = .usize, .kind = .{ .extern_func = "__fixsfsi" } },
101451101399 .{ .type = .i32, .kind = .{ .reg = .eax } },
101452101400 .unused,
101453101401 .unused,
......@@ -101478,7 +101426,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101478101426 .extra_temps = .{
101479101427 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
101480101428 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
101481 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixsfsi" } } },
101429 .{ .type = .usize, .kind = .{ .extern_func = "__fixsfsi" } },
101482101430 .{ .type = .i32, .kind = .{ .reg = .eax } },
101483101431 .unused,
101484101432 .unused,
......@@ -101681,7 +101629,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101681101629 .extra_temps = .{
101682101630 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
101683101631 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
101684 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixsfsi" } } },
101632 .{ .type = .usize, .kind = .{ .extern_func = "__fixsfsi" } },
101685101633 .{ .type = .i32, .kind = .{ .reg = .eax } },
101686101634 .unused,
101687101635 .unused,
......@@ -101712,7 +101660,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101712101660 .extra_temps = .{
101713101661 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
101714101662 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
101715 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixsfsi" } } },
101663 .{ .type = .usize, .kind = .{ .extern_func = "__fixsfsi" } },
101716101664 .{ .type = .i32, .kind = .{ .reg = .eax } },
101717101665 .unused,
101718101666 .unused,
......@@ -101825,7 +101773,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101825101773 .extra_temps = .{
101826101774 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
101827101775 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
101828 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixsfsi" } } },
101776 .{ .type = .usize, .kind = .{ .extern_func = "__fixsfsi" } },
101829101777 .{ .type = .i32, .kind = .{ .reg = .eax } },
101830101778 .unused,
101831101779 .unused,
......@@ -101856,7 +101804,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101856101804 .extra_temps = .{
101857101805 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
101858101806 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
101859 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunssfsi" } } },
101807 .{ .type = .usize, .kind = .{ .extern_func = "__fixunssfsi" } },
101860101808 .{ .type = .u32, .kind = .{ .reg = .eax } },
101861101809 .unused,
101862101810 .unused,
......@@ -101887,7 +101835,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101887101835 .extra_temps = .{
101888101836 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
101889101837 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
101890 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixsfsi" } } },
101838 .{ .type = .usize, .kind = .{ .extern_func = "__fixsfsi" } },
101891101839 .{ .type = .i32, .kind = .{ .reg = .eax } },
101892101840 .unused,
101893101841 .unused,
......@@ -101918,7 +101866,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101918101866 .extra_temps = .{
101919101867 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
101920101868 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
101921 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunssfsi" } } },
101869 .{ .type = .usize, .kind = .{ .extern_func = "__fixunssfsi" } },
101922101870 .{ .type = .u32, .kind = .{ .reg = .eax } },
101923101871 .unused,
101924101872 .unused,
......@@ -102007,7 +101955,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
102007101955 .extra_temps = .{
102008101956 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
102009101957 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
102010 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixsfdi" } } },
101958 .{ .type = .usize, .kind = .{ .extern_func = "__fixsfdi" } },
102011101959 .{ .type = .i64, .kind = .{ .reg = .rax } },
102012101960 .unused,
102013101961 .unused,
......@@ -102038,7 +101986,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
102038101986 .extra_temps = .{
102039101987 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
102040101988 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
102041 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunssfdi" } } },
101989 .{ .type = .usize, .kind = .{ .extern_func = "__fixunssfdi" } },
102042101990 .{ .type = .u64, .kind = .{ .reg = .rax } },
102043101991 .unused,
102044101992 .unused,
......@@ -102069,7 +102017,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
102069102017 .extra_temps = .{
102070102018 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
102071102019 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
102072 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixsfdi" } } },
102020 .{ .type = .usize, .kind = .{ .extern_func = "__fixsfdi" } },
102073102021 .{ .type = .i64, .kind = .{ .reg = .rax } },
102074102022 .unused,
102075102023 .unused,
......@@ -102100,7 +102048,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
102100102048 .extra_temps = .{
102101102049 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
102102102050 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
102103 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunssfdi" } } },
102051 .{ .type = .usize, .kind = .{ .extern_func = "__fixunssfdi" } },
102104102052 .{ .type = .u64, .kind = .{ .reg = .rax } },
102105102053 .unused,
102106102054 .unused,
......@@ -102131,7 +102079,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
102131102079 .extra_temps = .{
102132102080 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
102133102081 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
102134 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixsfti" } } },
102082 .{ .type = .usize, .kind = .{ .extern_func = "__fixsfti" } },
102135102083 .{ .type = .u64, .kind = .{ .reg = .rax } },
102136102084 .{ .type = .i64, .kind = .{ .reg = .rdx } },
102137102085 .unused,
......@@ -102163,7 +102111,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
102163102111 .extra_temps = .{
102164102112 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
102165102113 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
102166 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunssfti" } } },
102114 .{ .type = .usize, .kind = .{ .extern_func = "__fixunssfti" } },
102167102115 .{ .type = .u64, .kind = .{ .reg = .rax } },
102168102116 .{ .type = .u64, .kind = .{ .reg = .rdx } },
102169102117 .unused,
......@@ -102195,7 +102143,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
102195102143 .extra_temps = .{
102196102144 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
102197102145 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
102198 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixsfti" } } },
102146 .{ .type = .usize, .kind = .{ .extern_func = "__fixsfti" } },
102199102147 .{ .type = .u64, .kind = .{ .reg = .rax } },
102200102148 .{ .type = .i64, .kind = .{ .reg = .rdx } },
102201102149 .unused,
......@@ -102227,7 +102175,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
102227102175 .extra_temps = .{
102228102176 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
102229102177 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
102230 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunssfti" } } },
102178 .{ .type = .usize, .kind = .{ .extern_func = "__fixunssfti" } },
102231102179 .{ .type = .u64, .kind = .{ .reg = .rax } },
102232102180 .{ .type = .u64, .kind = .{ .reg = .rdx } },
102233102181 .unused,
......@@ -102262,7 +102210,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
102262102210 .{ .type = .usize, .kind = .{ .reg = .rdi } },
102263102211 .{ .type = .usize, .kind = .{ .reg = .rsi } },
102264102212 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
102265 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixsfei" } } },
102213 .{ .type = .usize, .kind = .{ .extern_func = "__fixsfei" } },
102266102214 .unused,
102267102215 .unused,
102268102216 .unused,
......@@ -102296,7 +102244,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
102296102244 .{ .type = .usize, .kind = .{ .reg = .rdi } },
102297102245 .{ .type = .usize, .kind = .{ .reg = .rsi } },
102298102246 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
102299 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunssfei" } } },
102247 .{ .type = .usize, .kind = .{ .extern_func = "__fixunssfei" } },
102300102248 .unused,
102301102249 .unused,
102302102250 .unused,
......@@ -102330,7 +102278,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
102330102278 .{ .type = .usize, .kind = .{ .reg = .rdi } },
102331102279 .{ .type = .usize, .kind = .{ .reg = .rsi } },
102332102280 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
102333 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixsfei" } } },
102281 .{ .type = .usize, .kind = .{ .extern_func = "__fixsfei" } },
102334102282 .unused,
102335102283 .unused,
102336102284 .unused,
......@@ -102364,7 +102312,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
102364102312 .{ .type = .usize, .kind = .{ .reg = .rdi } },
102365102313 .{ .type = .usize, .kind = .{ .reg = .rsi } },
102366102314 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
102367 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunssfei" } } },
102315 .{ .type = .usize, .kind = .{ .extern_func = "__fixunssfei" } },
102368102316 .unused,
102369102317 .unused,
102370102318 .unused,
......@@ -102703,7 +102651,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
102703102651 },
102704102652 .call_frame = .{ .alignment = .@"16" },
102705102653 .extra_temps = .{
102706 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixdfti" } } },
102654 .{ .type = .usize, .kind = .{ .extern_func = "__fixdfti" } },
102707102655 .unused,
102708102656 .unused,
102709102657 .unused,
......@@ -102729,7 +102677,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
102729102677 },
102730102678 .call_frame = .{ .alignment = .@"16" },
102731102679 .extra_temps = .{
102732 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsdfti" } } },
102680 .{ .type = .usize, .kind = .{ .extern_func = "__fixunsdfti" } },
102733102681 .unused,
102734102682 .unused,
102735102683 .unused,
......@@ -102757,7 +102705,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
102757102705 .extra_temps = .{
102758102706 .{ .type = .usize, .kind = .{ .reg = .rdi } },
102759102707 .{ .type = .usize, .kind = .{ .reg = .rsi } },
102760 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixdfei" } } },
102708 .{ .type = .usize, .kind = .{ .extern_func = "__fixdfei" } },
102761102709 .unused,
102762102710 .unused,
102763102711 .unused,
......@@ -102785,7 +102733,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
102785102733 .extra_temps = .{
102786102734 .{ .type = .usize, .kind = .{ .reg = .rdi } },
102787102735 .{ .type = .usize, .kind = .{ .reg = .rsi } },
102788 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsdfei" } } },
102736 .{ .type = .usize, .kind = .{ .extern_func = "__fixunsdfei" } },
102789102737 .unused,
102790102738 .unused,
102791102739 .unused,
......@@ -103090,7 +103038,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
103090103038 .extra_temps = .{
103091103039 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
103092103040 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
103093 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixdfsi" } } },
103041 .{ .type = .usize, .kind = .{ .extern_func = "__fixdfsi" } },
103094103042 .{ .type = .i32, .kind = .{ .reg = .eax } },
103095103043 .unused,
103096103044 .unused,
......@@ -103121,7 +103069,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
103121103069 .extra_temps = .{
103122103070 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
103123103071 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
103124 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixdfsi" } } },
103072 .{ .type = .usize, .kind = .{ .extern_func = "__fixdfsi" } },
103125103073 .{ .type = .i32, .kind = .{ .reg = .eax } },
103126103074 .unused,
103127103075 .unused,
......@@ -103152,7 +103100,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
103152103100 .extra_temps = .{
103153103101 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
103154103102 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
103155 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixdfsi" } } },
103103 .{ .type = .usize, .kind = .{ .extern_func = "__fixdfsi" } },
103156103104 .{ .type = .i32, .kind = .{ .reg = .eax } },
103157103105 .unused,
103158103106 .unused,
......@@ -103183,7 +103131,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
103183103131 .extra_temps = .{
103184103132 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
103185103133 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
103186 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixsfsi" } } },
103134 .{ .type = .usize, .kind = .{ .extern_func = "__fixsfsi" } },
103187103135 .{ .type = .i32, .kind = .{ .reg = .eax } },
103188103136 .unused,
103189103137 .unused,
......@@ -103214,7 +103162,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
103214103162 .extra_temps = .{
103215103163 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
103216103164 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
103217 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixdfsi" } } },
103165 .{ .type = .usize, .kind = .{ .extern_func = "__fixdfsi" } },
103218103166 .{ .type = .i32, .kind = .{ .reg = .eax } },
103219103167 .unused,
103220103168 .unused,
......@@ -103246,7 +103194,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
103246103194 .extra_temps = .{
103247103195 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
103248103196 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
103249 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixsfsi" } } },
103197 .{ .type = .usize, .kind = .{ .extern_func = "__fixsfsi" } },
103250103198 .{ .type = .i32, .kind = .{ .reg = .eax } },
103251103199 .unused,
103252103200 .unused,
......@@ -103577,7 +103525,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
103577103525 .extra_temps = .{
103578103526 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
103579103527 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
103580 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixdfsi" } } },
103528 .{ .type = .usize, .kind = .{ .extern_func = "__fixdfsi" } },
103581103529 .{ .type = .i32, .kind = .{ .reg = .eax } },
103582103530 .unused,
103583103531 .unused,
......@@ -103608,7 +103556,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
103608103556 .extra_temps = .{
103609103557 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
103610103558 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
103611 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixdfsi" } } },
103559 .{ .type = .usize, .kind = .{ .extern_func = "__fixdfsi" } },
103612103560 .{ .type = .i32, .kind = .{ .reg = .eax } },
103613103561 .unused,
103614103562 .unused,
......@@ -103639,7 +103587,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
103639103587 .extra_temps = .{
103640103588 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
103641103589 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
103642 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixdfsi" } } },
103590 .{ .type = .usize, .kind = .{ .extern_func = "__fixdfsi" } },
103643103591 .{ .type = .i32, .kind = .{ .reg = .eax } },
103644103592 .unused,
103645103593 .unused,
......@@ -103837,7 +103785,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
103837103785 .extra_temps = .{
103838103786 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
103839103787 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
103840 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixdfsi" } } },
103788 .{ .type = .usize, .kind = .{ .extern_func = "__fixdfsi" } },
103841103789 .{ .type = .i32, .kind = .{ .reg = .eax } },
103842103790 .unused,
103843103791 .unused,
......@@ -103868,7 +103816,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
103868103816 .extra_temps = .{
103869103817 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
103870103818 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
103871 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsdfsi" } } },
103819 .{ .type = .usize, .kind = .{ .extern_func = "__fixunsdfsi" } },
103872103820 .{ .type = .u32, .kind = .{ .reg = .eax } },
103873103821 .unused,
103874103822 .unused,
......@@ -103899,7 +103847,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
103899103847 .extra_temps = .{
103900103848 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
103901103849 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
103902 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixdfsi" } } },
103850 .{ .type = .usize, .kind = .{ .extern_func = "__fixdfsi" } },
103903103851 .{ .type = .i32, .kind = .{ .reg = .eax } },
103904103852 .unused,
103905103853 .unused,
......@@ -103930,7 +103878,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
103930103878 .extra_temps = .{
103931103879 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
103932103880 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
103933 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsdfsi" } } },
103881 .{ .type = .usize, .kind = .{ .extern_func = "__fixunsdfsi" } },
103934103882 .{ .type = .u32, .kind = .{ .reg = .eax } },
103935103883 .unused,
103936103884 .unused,
......@@ -103961,7 +103909,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
103961103909 .extra_temps = .{
103962103910 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
103963103911 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
103964 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixdfsi" } } },
103912 .{ .type = .usize, .kind = .{ .extern_func = "__fixdfsi" } },
103965103913 .{ .type = .i32, .kind = .{ .reg = .eax } },
103966103914 .unused,
103967103915 .unused,
......@@ -103993,7 +103941,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
103993103941 .extra_temps = .{
103994103942 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
103995103943 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
103996 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsdfsi" } } },
103944 .{ .type = .usize, .kind = .{ .extern_func = "__fixunsdfsi" } },
103997103945 .{ .type = .u32, .kind = .{ .reg = .eax } },
103998103946 .unused,
103999103947 .unused,
......@@ -104118,7 +104066,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
104118104066 .extra_temps = .{
104119104067 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
104120104068 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
104121 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixdfdi" } } },
104069 .{ .type = .usize, .kind = .{ .extern_func = "__fixdfdi" } },
104122104070 .{ .type = .i64, .kind = .{ .reg = .rax } },
104123104071 .unused,
104124104072 .unused,
......@@ -104149,7 +104097,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
104149104097 .extra_temps = .{
104150104098 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
104151104099 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
104152 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsdfdi" } } },
104100 .{ .type = .usize, .kind = .{ .extern_func = "__fixunsdfdi" } },
104153104101 .{ .type = .u64, .kind = .{ .reg = .rax } },
104154104102 .unused,
104155104103 .unused,
......@@ -104180,7 +104128,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
104180104128 .extra_temps = .{
104181104129 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
104182104130 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
104183 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixdfdi" } } },
104131 .{ .type = .usize, .kind = .{ .extern_func = "__fixdfdi" } },
104184104132 .{ .type = .i64, .kind = .{ .reg = .rax } },
104185104133 .unused,
104186104134 .unused,
......@@ -104211,7 +104159,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
104211104159 .extra_temps = .{
104212104160 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
104213104161 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
104214 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsdfdi" } } },
104162 .{ .type = .usize, .kind = .{ .extern_func = "__fixunsdfdi" } },
104215104163 .{ .type = .u64, .kind = .{ .reg = .rax } },
104216104164 .unused,
104217104165 .unused,
......@@ -104242,7 +104190,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
104242104190 .extra_temps = .{
104243104191 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
104244104192 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
104245 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixdfdi" } } },
104193 .{ .type = .usize, .kind = .{ .extern_func = "__fixdfdi" } },
104246104194 .{ .type = .i64, .kind = .{ .reg = .rax } },
104247104195 .unused,
104248104196 .unused,
......@@ -104274,7 +104222,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
104274104222 .extra_temps = .{
104275104223 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
104276104224 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
104277 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsdfdi" } } },
104225 .{ .type = .usize, .kind = .{ .extern_func = "__fixunsdfdi" } },
104278104226 .{ .type = .u64, .kind = .{ .reg = .rax } },
104279104227 .unused,
104280104228 .unused,
......@@ -104306,7 +104254,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
104306104254 .extra_temps = .{
104307104255 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
104308104256 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
104309 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixdfti" } } },
104257 .{ .type = .usize, .kind = .{ .extern_func = "__fixdfti" } },
104310104258 .{ .type = .u64, .kind = .{ .reg = .rax } },
104311104259 .{ .type = .i64, .kind = .{ .reg = .rdx } },
104312104260 .unused,
......@@ -104338,7 +104286,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
104338104286 .extra_temps = .{
104339104287 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
104340104288 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
104341 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsdfti" } } },
104289 .{ .type = .usize, .kind = .{ .extern_func = "__fixunsdfti" } },
104342104290 .{ .type = .u64, .kind = .{ .reg = .rax } },
104343104291 .{ .type = .u64, .kind = .{ .reg = .rdx } },
104344104292 .unused,
......@@ -104370,7 +104318,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
104370104318 .extra_temps = .{
104371104319 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
104372104320 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
104373 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixdfti" } } },
104321 .{ .type = .usize, .kind = .{ .extern_func = "__fixdfti" } },
104374104322 .{ .type = .u64, .kind = .{ .reg = .rax } },
104375104323 .{ .type = .i64, .kind = .{ .reg = .rdx } },
104376104324 .unused,
......@@ -104402,7 +104350,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
104402104350 .extra_temps = .{
104403104351 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
104404104352 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
104405 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsdfti" } } },
104353 .{ .type = .usize, .kind = .{ .extern_func = "__fixunsdfti" } },
104406104354 .{ .type = .u64, .kind = .{ .reg = .rax } },
104407104355 .{ .type = .u64, .kind = .{ .reg = .rdx } },
104408104356 .unused,
......@@ -104434,7 +104382,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
104434104382 .extra_temps = .{
104435104383 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
104436104384 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
104437 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixdfti" } } },
104385 .{ .type = .usize, .kind = .{ .extern_func = "__fixdfti" } },
104438104386 .{ .type = .u64, .kind = .{ .reg = .rax } },
104439104387 .{ .type = .i64, .kind = .{ .reg = .rdx } },
104440104388 .unused,
......@@ -104467,7 +104415,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
104467104415 .extra_temps = .{
104468104416 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
104469104417 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
104470 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsdfti" } } },
104418 .{ .type = .usize, .kind = .{ .extern_func = "__fixunsdfti" } },
104471104419 .{ .type = .u64, .kind = .{ .reg = .rax } },
104472104420 .{ .type = .u64, .kind = .{ .reg = .rdx } },
104473104421 .unused,
......@@ -104503,7 +104451,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
104503104451 .{ .type = .usize, .kind = .{ .reg = .rdi } },
104504104452 .{ .type = .usize, .kind = .{ .reg = .rsi } },
104505104453 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
104506 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixdfei" } } },
104454 .{ .type = .usize, .kind = .{ .extern_func = "__fixdfei" } },
104507104455 .unused,
104508104456 .unused,
104509104457 .unused,
......@@ -104537,7 +104485,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
104537104485 .{ .type = .usize, .kind = .{ .reg = .rdi } },
104538104486 .{ .type = .usize, .kind = .{ .reg = .rsi } },
104539104487 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
104540 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsdfei" } } },
104488 .{ .type = .usize, .kind = .{ .extern_func = "__fixunsdfei" } },
104541104489 .unused,
104542104490 .unused,
104543104491 .unused,
......@@ -104571,7 +104519,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
104571104519 .{ .type = .usize, .kind = .{ .reg = .rdi } },
104572104520 .{ .type = .usize, .kind = .{ .reg = .rsi } },
104573104521 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
104574 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixdfei" } } },
104522 .{ .type = .usize, .kind = .{ .extern_func = "__fixdfei" } },
104575104523 .unused,
104576104524 .unused,
104577104525 .unused,
......@@ -104605,7 +104553,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
104605104553 .{ .type = .usize, .kind = .{ .reg = .rdi } },
104606104554 .{ .type = .usize, .kind = .{ .reg = .rsi } },
104607104555 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
104608 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsdfei" } } },
104556 .{ .type = .usize, .kind = .{ .extern_func = "__fixunsdfei" } },
104609104557 .unused,
104610104558 .unused,
104611104559 .unused,
......@@ -104639,7 +104587,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
104639104587 .{ .type = .usize, .kind = .{ .reg = .rdi } },
104640104588 .{ .type = .usize, .kind = .{ .reg = .rsi } },
104641104589 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
104642 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixdfei" } } },
104590 .{ .type = .usize, .kind = .{ .extern_func = "__fixdfei" } },
104643104591 .unused,
104644104592 .unused,
104645104593 .unused,
......@@ -104674,7 +104622,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
104674104622 .{ .type = .usize, .kind = .{ .reg = .rdi } },
104675104623 .{ .type = .usize, .kind = .{ .reg = .rsi } },
104676104624 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
104677 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsdfei" } } },
104625 .{ .type = .usize, .kind = .{ .extern_func = "__fixunsdfei" } },
104678104626 .unused,
104679104627 .unused,
104680104628 .unused,
......@@ -105695,7 +105643,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
105695105643 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
105696105644 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
105697105645 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
105698 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsxfti" } } },
105646 .{ .type = .usize, .kind = .{ .extern_func = "__fixunsxfti" } },
105699105647 .{ .type = .u64, .kind = .{ .reg = .rax } },
105700105648 .unused,
105701105649 .unused,
......@@ -105727,7 +105675,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
105727105675 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
105728105676 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
105729105677 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
105730 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsxfti" } } },
105678 .{ .type = .usize, .kind = .{ .extern_func = "__fixunsxfti" } },
105731105679 .{ .type = .u64, .kind = .{ .reg = .rax } },
105732105680 .unused,
105733105681 .unused,
......@@ -105759,7 +105707,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
105759105707 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
105760105708 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
105761105709 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
105762 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsxfti" } } },
105710 .{ .type = .usize, .kind = .{ .extern_func = "__fixunsxfti" } },
105763105711 .{ .type = .u64, .kind = .{ .reg = .rax } },
105764105712 .unused,
105765105713 .unused,
......@@ -105790,7 +105738,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
105790105738 .extra_temps = .{
105791105739 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
105792105740 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
105793 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixxfti" } } },
105741 .{ .type = .usize, .kind = .{ .extern_func = "__fixxfti" } },
105794105742 .unused,
105795105743 .unused,
105796105744 .unused,
......@@ -105818,7 +105766,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
105818105766 .extra_temps = .{
105819105767 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
105820105768 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
105821 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsxfti" } } },
105769 .{ .type = .usize, .kind = .{ .extern_func = "__fixunsxfti" } },
105822105770 .unused,
105823105771 .unused,
105824105772 .unused,
......@@ -105846,7 +105794,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
105846105794 .extra_temps = .{
105847105795 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
105848105796 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
105849 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixxfti" } } },
105797 .{ .type = .usize, .kind = .{ .extern_func = "__fixxfti" } },
105850105798 .unused,
105851105799 .unused,
105852105800 .unused,
......@@ -105874,7 +105822,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
105874105822 .extra_temps = .{
105875105823 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
105876105824 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
105877 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsxfti" } } },
105825 .{ .type = .usize, .kind = .{ .extern_func = "__fixunsxfti" } },
105878105826 .unused,
105879105827 .unused,
105880105828 .unused,
......@@ -105902,7 +105850,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
105902105850 .extra_temps = .{
105903105851 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
105904105852 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
105905 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixxfti" } } },
105853 .{ .type = .usize, .kind = .{ .extern_func = "__fixxfti" } },
105906105854 .unused,
105907105855 .unused,
105908105856 .unused,
......@@ -105930,7 +105878,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
105930105878 .extra_temps = .{
105931105879 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
105932105880 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
105933 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsxfti" } } },
105881 .{ .type = .usize, .kind = .{ .extern_func = "__fixunsxfti" } },
105934105882 .unused,
105935105883 .unused,
105936105884 .unused,
......@@ -105959,7 +105907,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
105959105907 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
105960105908 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
105961105909 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
105962 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixxfti" } } },
105910 .{ .type = .usize, .kind = .{ .extern_func = "__fixxfti" } },
105963105911 .{ .type = .u64, .kind = .{ .reg = .rax } },
105964105912 .{ .type = .i64, .kind = .{ .reg = .rdx } },
105965105913 .unused,
......@@ -105992,7 +105940,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
105992105940 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
105993105941 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
105994105942 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
105995 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsxfti" } } },
105943 .{ .type = .usize, .kind = .{ .extern_func = "__fixunsxfti" } },
105996105944 .{ .type = .u64, .kind = .{ .reg = .rax } },
105997105945 .{ .type = .u64, .kind = .{ .reg = .rdx } },
105998105946 .unused,
......@@ -106025,7 +105973,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106025105973 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
106026105974 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
106027105975 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
106028 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixxfti" } } },
105976 .{ .type = .usize, .kind = .{ .extern_func = "__fixxfti" } },
106029105977 .{ .type = .u64, .kind = .{ .reg = .rax } },
106030105978 .{ .type = .i64, .kind = .{ .reg = .rdx } },
106031105979 .unused,
......@@ -106058,7 +106006,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106058106006 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
106059106007 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
106060106008 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
106061 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsxfti" } } },
106009 .{ .type = .usize, .kind = .{ .extern_func = "__fixunsxfti" } },
106062106010 .{ .type = .u64, .kind = .{ .reg = .rax } },
106063106011 .{ .type = .u64, .kind = .{ .reg = .rdx } },
106064106012 .unused,
......@@ -106091,7 +106039,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106091106039 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
106092106040 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
106093106041 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
106094 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixxfti" } } },
106042 .{ .type = .usize, .kind = .{ .extern_func = "__fixxfti" } },
106095106043 .{ .type = .u64, .kind = .{ .reg = .rax } },
106096106044 .{ .type = .i64, .kind = .{ .reg = .rdx } },
106097106045 .unused,
......@@ -106124,7 +106072,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106124106072 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
106125106073 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
106126106074 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
106127 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsxfti" } } },
106075 .{ .type = .usize, .kind = .{ .extern_func = "__fixunsxfti" } },
106128106076 .{ .type = .u64, .kind = .{ .reg = .rax } },
106129106077 .{ .type = .u64, .kind = .{ .reg = .rdx } },
106130106078 .unused,
......@@ -106158,7 +106106,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106158106106 .{ .type = .usize, .kind = .{ .reg = .rsi } },
106159106107 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
106160106108 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
106161 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixxfei" } } },
106109 .{ .type = .usize, .kind = .{ .extern_func = "__fixxfei" } },
106162106110 .unused,
106163106111 .unused,
106164106112 .unused,
......@@ -106188,7 +106136,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106188106136 .{ .type = .usize, .kind = .{ .reg = .rsi } },
106189106137 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
106190106138 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
106191 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsxfei" } } },
106139 .{ .type = .usize, .kind = .{ .extern_func = "__fixunsxfei" } },
106192106140 .unused,
106193106141 .unused,
106194106142 .unused,
......@@ -106218,7 +106166,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106218106166 .{ .type = .usize, .kind = .{ .reg = .rsi } },
106219106167 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
106220106168 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
106221 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixxfei" } } },
106169 .{ .type = .usize, .kind = .{ .extern_func = "__fixxfei" } },
106222106170 .unused,
106223106171 .unused,
106224106172 .unused,
......@@ -106248,7 +106196,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106248106196 .{ .type = .usize, .kind = .{ .reg = .rsi } },
106249106197 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
106250106198 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
106251 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsxfei" } } },
106199 .{ .type = .usize, .kind = .{ .extern_func = "__fixunsxfei" } },
106252106200 .unused,
106253106201 .unused,
106254106202 .unused,
......@@ -106278,7 +106226,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106278106226 .{ .type = .usize, .kind = .{ .reg = .rsi } },
106279106227 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
106280106228 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
106281 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixxfei" } } },
106229 .{ .type = .usize, .kind = .{ .extern_func = "__fixxfei" } },
106282106230 .unused,
106283106231 .unused,
106284106232 .unused,
......@@ -106308,7 +106256,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106308106256 .{ .type = .usize, .kind = .{ .reg = .rsi } },
106309106257 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
106310106258 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
106311 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsxfei" } } },
106259 .{ .type = .usize, .kind = .{ .extern_func = "__fixunsxfei" } },
106312106260 .unused,
106313106261 .unused,
106314106262 .unused,
......@@ -106340,7 +106288,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106340106288 .{ .type = .usize, .kind = .{ .reg = .rsi } },
106341106289 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
106342106290 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
106343 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixxfei" } } },
106291 .{ .type = .usize, .kind = .{ .extern_func = "__fixxfei" } },
106344106292 .unused,
106345106293 .unused,
106346106294 .unused,
......@@ -106375,7 +106323,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106375106323 .{ .type = .usize, .kind = .{ .reg = .rsi } },
106376106324 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
106377106325 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
106378 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsxfei" } } },
106326 .{ .type = .usize, .kind = .{ .extern_func = "__fixunsxfei" } },
106379106327 .unused,
106380106328 .unused,
106381106329 .unused,
......@@ -106410,7 +106358,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106410106358 .{ .type = .usize, .kind = .{ .reg = .rsi } },
106411106359 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
106412106360 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
106413 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixxfei" } } },
106361 .{ .type = .usize, .kind = .{ .extern_func = "__fixxfei" } },
106414106362 .unused,
106415106363 .unused,
106416106364 .unused,
......@@ -106445,7 +106393,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106445106393 .{ .type = .usize, .kind = .{ .reg = .rsi } },
106446106394 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
106447106395 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
106448 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsxfei" } } },
106396 .{ .type = .usize, .kind = .{ .extern_func = "__fixunsxfei" } },
106449106397 .unused,
106450106398 .unused,
106451106399 .unused,
......@@ -106480,7 +106428,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106480106428 .{ .type = .usize, .kind = .{ .reg = .rsi } },
106481106429 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
106482106430 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
106483 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixxfei" } } },
106431 .{ .type = .usize, .kind = .{ .extern_func = "__fixxfei" } },
106484106432 .unused,
106485106433 .unused,
106486106434 .unused,
......@@ -106515,7 +106463,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106515106463 .{ .type = .usize, .kind = .{ .reg = .rsi } },
106516106464 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
106517106465 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
106518 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsxfei" } } },
106466 .{ .type = .usize, .kind = .{ .extern_func = "__fixunsxfei" } },
106519106467 .unused,
106520106468 .unused,
106521106469 .unused,
......@@ -106547,7 +106495,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106547106495 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
106548106496 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
106549106497 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
106550 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixtfsi" } } },
106498 .{ .type = .usize, .kind = .{ .extern_func = "__fixtfsi" } },
106551106499 .{ .type = .i32, .kind = .{ .reg = .eax } },
106552106500 .unused,
106553106501 .unused,
......@@ -106580,7 +106528,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106580106528 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
106581106529 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
106582106530 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
106583 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixtfsi" } } },
106531 .{ .type = .usize, .kind = .{ .extern_func = "__fixtfsi" } },
106584106532 .{ .type = .i32, .kind = .{ .reg = .eax } },
106585106533 .unused,
106586106534 .unused,
......@@ -106613,7 +106561,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106613106561 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
106614106562 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
106615106563 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
106616 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixtfsi" } } },
106564 .{ .type = .usize, .kind = .{ .extern_func = "__fixtfsi" } },
106617106565 .{ .type = .i32, .kind = .{ .reg = .eax } },
106618106566 .unused,
106619106567 .unused,
......@@ -106646,7 +106594,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106646106594 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
106647106595 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
106648106596 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
106649 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixtfsi" } } },
106597 .{ .type = .usize, .kind = .{ .extern_func = "__fixtfsi" } },
106650106598 .{ .type = .i32, .kind = .{ .reg = .eax } },
106651106599 .unused,
106652106600 .unused,
......@@ -106679,7 +106627,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106679106627 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
106680106628 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
106681106629 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
106682 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixtfsi" } } },
106630 .{ .type = .usize, .kind = .{ .extern_func = "__fixtfsi" } },
106683106631 .{ .type = .i32, .kind = .{ .reg = .eax } },
106684106632 .unused,
106685106633 .unused,
......@@ -106712,7 +106660,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106712106660 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
106713106661 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
106714106662 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
106715 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixtfsi" } } },
106663 .{ .type = .usize, .kind = .{ .extern_func = "__fixtfsi" } },
106716106664 .{ .type = .i32, .kind = .{ .reg = .eax } },
106717106665 .unused,
106718106666 .unused,
......@@ -106744,7 +106692,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106744106692 .extra_temps = .{
106745106693 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
106746106694 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
106747 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixtfsi" } } },
106695 .{ .type = .usize, .kind = .{ .extern_func = "__fixtfsi" } },
106748106696 .{ .type = .i32, .kind = .{ .reg = .eax } },
106749106697 .unused,
106750106698 .unused,
......@@ -106775,7 +106723,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106775106723 .extra_temps = .{
106776106724 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
106777106725 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
106778 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixtfsi" } } },
106726 .{ .type = .usize, .kind = .{ .extern_func = "__fixtfsi" } },
106779106727 .{ .type = .i32, .kind = .{ .reg = .eax } },
106780106728 .unused,
106781106729 .unused,
......@@ -106806,7 +106754,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106806106754 .extra_temps = .{
106807106755 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
106808106756 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
106809 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixtfsi" } } },
106757 .{ .type = .usize, .kind = .{ .extern_func = "__fixtfsi" } },
106810106758 .{ .type = .i32, .kind = .{ .reg = .eax } },
106811106759 .unused,
106812106760 .unused,
......@@ -106835,7 +106783,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106835106783 },
106836106784 .call_frame = .{ .alignment = .@"16" },
106837106785 .extra_temps = .{
106838 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixtfsi" } } },
106786 .{ .type = .usize, .kind = .{ .extern_func = "__fixtfsi" } },
106839106787 .unused,
106840106788 .unused,
106841106789 .unused,
......@@ -106861,7 +106809,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106861106809 },
106862106810 .call_frame = .{ .alignment = .@"16" },
106863106811 .extra_temps = .{
106864 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunstfsi" } } },
106812 .{ .type = .usize, .kind = .{ .extern_func = "__fixunstfsi" } },
106865106813 .unused,
106866106814 .unused,
106867106815 .unused,
......@@ -106889,7 +106837,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106889106837 .extra_temps = .{
106890106838 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
106891106839 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
106892 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixtfsi" } } },
106840 .{ .type = .usize, .kind = .{ .extern_func = "__fixtfsi" } },
106893106841 .{ .type = .i32, .kind = .{ .reg = .eax } },
106894106842 .unused,
106895106843 .unused,
......@@ -106920,7 +106868,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106920106868 .extra_temps = .{
106921106869 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
106922106870 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
106923 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunstfsi" } } },
106871 .{ .type = .usize, .kind = .{ .extern_func = "__fixunstfsi" } },
106924106872 .{ .type = .u32, .kind = .{ .reg = .eax } },
106925106873 .unused,
106926106874 .unused,
......@@ -106951,7 +106899,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106951106899 .extra_temps = .{
106952106900 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
106953106901 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
106954 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixtfsi" } } },
106902 .{ .type = .usize, .kind = .{ .extern_func = "__fixtfsi" } },
106955106903 .{ .type = .i32, .kind = .{ .reg = .eax } },
106956106904 .unused,
106957106905 .unused,
......@@ -106982,7 +106930,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106982106930 .extra_temps = .{
106983106931 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
106984106932 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
106985 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunstfsi" } } },
106933 .{ .type = .usize, .kind = .{ .extern_func = "__fixunstfsi" } },
106986106934 .{ .type = .u32, .kind = .{ .reg = .eax } },
106987106935 .unused,
106988106936 .unused,
......@@ -107013,7 +106961,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
107013106961 .extra_temps = .{
107014106962 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
107015106963 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
107016 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixtfsi" } } },
106964 .{ .type = .usize, .kind = .{ .extern_func = "__fixtfsi" } },
107017106965 .{ .type = .i32, .kind = .{ .reg = .eax } },
107018106966 .unused,
107019106967 .unused,
......@@ -107044,7 +106992,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
107044106992 .extra_temps = .{
107045106993 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
107046106994 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
107047 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunstfsi" } } },
106995 .{ .type = .usize, .kind = .{ .extern_func = "__fixunstfsi" } },
107048106996 .{ .type = .u32, .kind = .{ .reg = .eax } },
107049106997 .unused,
107050106998 .unused,
......@@ -107073,7 +107021,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
107073107021 },
107074107022 .call_frame = .{ .alignment = .@"16" },
107075107023 .extra_temps = .{
107076 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixtfdi" } } },
107024 .{ .type = .usize, .kind = .{ .extern_func = "__fixtfdi" } },
107077107025 .unused,
107078107026 .unused,
107079107027 .unused,
......@@ -107099,7 +107047,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
107099107047 },
107100107048 .call_frame = .{ .alignment = .@"16" },
107101107049 .extra_temps = .{
107102 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunstfdi" } } },
107050 .{ .type = .usize, .kind = .{ .extern_func = "__fixunstfdi" } },
107103107051 .unused,
107104107052 .unused,
107105107053 .unused,
......@@ -107127,7 +107075,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
107127107075 .extra_temps = .{
107128107076 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
107129107077 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
107130 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixtfdi" } } },
107078 .{ .type = .usize, .kind = .{ .extern_func = "__fixtfdi" } },
107131107079 .{ .type = .i64, .kind = .{ .reg = .rax } },
107132107080 .unused,
107133107081 .unused,
......@@ -107158,7 +107106,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
107158107106 .extra_temps = .{
107159107107 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
107160107108 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
107161 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunstfdi" } } },
107109 .{ .type = .usize, .kind = .{ .extern_func = "__fixunstfdi" } },
107162107110 .{ .type = .u64, .kind = .{ .reg = .rax } },
107163107111 .unused,
107164107112 .unused,
......@@ -107189,7 +107137,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
107189107137 .extra_temps = .{
107190107138 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
107191107139 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
107192 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixtfdi" } } },
107140 .{ .type = .usize, .kind = .{ .extern_func = "__fixtfdi" } },
107193107141 .{ .type = .i64, .kind = .{ .reg = .rax } },
107194107142 .unused,
107195107143 .unused,
......@@ -107220,7 +107168,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
107220107168 .extra_temps = .{
107221107169 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
107222107170 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
107223 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunstfdi" } } },
107171 .{ .type = .usize, .kind = .{ .extern_func = "__fixunstfdi" } },
107224107172 .{ .type = .u64, .kind = .{ .reg = .rax } },
107225107173 .unused,
107226107174 .unused,
......@@ -107251,7 +107199,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
107251107199 .extra_temps = .{
107252107200 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
107253107201 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
107254 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixtfdi" } } },
107202 .{ .type = .usize, .kind = .{ .extern_func = "__fixtfdi" } },
107255107203 .{ .type = .i64, .kind = .{ .reg = .rax } },
107256107204 .unused,
107257107205 .unused,
......@@ -107282,7 +107230,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
107282107230 .extra_temps = .{
107283107231 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
107284107232 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
107285 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunstfdi" } } },
107233 .{ .type = .usize, .kind = .{ .extern_func = "__fixunstfdi" } },
107286107234 .{ .type = .u64, .kind = .{ .reg = .rax } },
107287107235 .unused,
107288107236 .unused,
......@@ -107311,7 +107259,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
107311107259 },
107312107260 .call_frame = .{ .alignment = .@"16" },
107313107261 .extra_temps = .{
107314 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixtfti" } } },
107262 .{ .type = .usize, .kind = .{ .extern_func = "__fixtfti" } },
107315107263 .unused,
107316107264 .unused,
107317107265 .unused,
......@@ -107337,7 +107285,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
107337107285 },
107338107286 .call_frame = .{ .alignment = .@"16" },
107339107287 .extra_temps = .{
107340 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunstfti" } } },
107288 .{ .type = .usize, .kind = .{ .extern_func = "__fixunstfti" } },
107341107289 .unused,
107342107290 .unused,
107343107291 .unused,
......@@ -107365,7 +107313,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
107365107313 .extra_temps = .{
107366107314 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
107367107315 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
107368 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixtfti" } } },
107316 .{ .type = .usize, .kind = .{ .extern_func = "__fixtfti" } },
107369107317 .{ .type = .u64, .kind = .{ .reg = .rax } },
107370107318 .{ .type = .i64, .kind = .{ .reg = .rdx } },
107371107319 .unused,
......@@ -107397,7 +107345,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
107397107345 .extra_temps = .{
107398107346 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
107399107347 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
107400 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunstfti" } } },
107348 .{ .type = .usize, .kind = .{ .extern_func = "__fixunstfti" } },
107401107349 .{ .type = .u64, .kind = .{ .reg = .rax } },
107402107350 .{ .type = .u64, .kind = .{ .reg = .rdx } },
107403107351 .unused,
......@@ -107429,7 +107377,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
107429107377 .extra_temps = .{
107430107378 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
107431107379 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
107432 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixtfti" } } },
107380 .{ .type = .usize, .kind = .{ .extern_func = "__fixtfti" } },
107433107381 .{ .type = .u64, .kind = .{ .reg = .rax } },
107434107382 .{ .type = .i64, .kind = .{ .reg = .rdx } },
107435107383 .unused,
......@@ -107461,7 +107409,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
107461107409 .extra_temps = .{
107462107410 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
107463107411 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
107464 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunstfti" } } },
107412 .{ .type = .usize, .kind = .{ .extern_func = "__fixunstfti" } },
107465107413 .{ .type = .u64, .kind = .{ .reg = .rax } },
107466107414 .{ .type = .u64, .kind = .{ .reg = .rdx } },
107467107415 .unused,
......@@ -107493,7 +107441,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
107493107441 .extra_temps = .{
107494107442 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
107495107443 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
107496 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixtfti" } } },
107444 .{ .type = .usize, .kind = .{ .extern_func = "__fixtfti" } },
107497107445 .{ .type = .u64, .kind = .{ .reg = .rax } },
107498107446 .{ .type = .i64, .kind = .{ .reg = .rdx } },
107499107447 .unused,
......@@ -107525,7 +107473,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
107525107473 .extra_temps = .{
107526107474 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
107527107475 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
107528 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunstfti" } } },
107476 .{ .type = .usize, .kind = .{ .extern_func = "__fixunstfti" } },
107529107477 .{ .type = .u64, .kind = .{ .reg = .rax } },
107530107478 .{ .type = .u64, .kind = .{ .reg = .rdx } },
107531107479 .unused,
......@@ -107557,7 +107505,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
107557107505 .extra_temps = .{
107558107506 .{ .type = .usize, .kind = .{ .reg = .rdi } },
107559107507 .{ .type = .usize, .kind = .{ .reg = .rsi } },
107560 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixtfei" } } },
107508 .{ .type = .usize, .kind = .{ .extern_func = "__fixtfei" } },
107561107509 .unused,
107562107510 .unused,
107563107511 .unused,
......@@ -107585,7 +107533,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
107585107533 .extra_temps = .{
107586107534 .{ .type = .usize, .kind = .{ .reg = .rdi } },
107587107535 .{ .type = .usize, .kind = .{ .reg = .rsi } },
107588 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunstfei" } } },
107536 .{ .type = .usize, .kind = .{ .extern_func = "__fixunstfei" } },
107589107537 .unused,
107590107538 .unused,
107591107539 .unused,
......@@ -107616,7 +107564,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
107616107564 .{ .type = .usize, .kind = .{ .reg = .rdi } },
107617107565 .{ .type = .usize, .kind = .{ .reg = .rsi } },
107618107566 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
107619 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixtfei" } } },
107567 .{ .type = .usize, .kind = .{ .extern_func = "__fixtfei" } },
107620107568 .unused,
107621107569 .unused,
107622107570 .unused,
......@@ -107650,7 +107598,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
107650107598 .{ .type = .usize, .kind = .{ .reg = .rdi } },
107651107599 .{ .type = .usize, .kind = .{ .reg = .rsi } },
107652107600 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
107653 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunstfei" } } },
107601 .{ .type = .usize, .kind = .{ .extern_func = "__fixunstfei" } },
107654107602 .unused,
107655107603 .unused,
107656107604 .unused,
......@@ -107684,7 +107632,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
107684107632 .{ .type = .usize, .kind = .{ .reg = .rdi } },
107685107633 .{ .type = .usize, .kind = .{ .reg = .rsi } },
107686107634 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
107687 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixtfei" } } },
107635 .{ .type = .usize, .kind = .{ .extern_func = "__fixtfei" } },
107688107636 .unused,
107689107637 .unused,
107690107638 .unused,
......@@ -107718,7 +107666,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
107718107666 .{ .type = .usize, .kind = .{ .reg = .rdi } },
107719107667 .{ .type = .usize, .kind = .{ .reg = .rsi } },
107720107668 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
107721 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunstfei" } } },
107669 .{ .type = .usize, .kind = .{ .extern_func = "__fixunstfei" } },
107722107670 .unused,
107723107671 .unused,
107724107672 .unused,
......@@ -107752,7 +107700,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
107752107700 .{ .type = .usize, .kind = .{ .reg = .rdi } },
107753107701 .{ .type = .usize, .kind = .{ .reg = .rsi } },
107754107702 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
107755 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixtfei" } } },
107703 .{ .type = .usize, .kind = .{ .extern_func = "__fixtfei" } },
107756107704 .unused,
107757107705 .unused,
107758107706 .unused,
......@@ -107786,7 +107734,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
107786107734 .{ .type = .usize, .kind = .{ .reg = .rdi } },
107787107735 .{ .type = .usize, .kind = .{ .reg = .rsi } },
107788107736 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
107789 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunstfei" } } },
107737 .{ .type = .usize, .kind = .{ .extern_func = "__fixunstfei" } },
107790107738 .unused,
107791107739 .unused,
107792107740 .unused,
......@@ -108034,7 +107982,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108034107982 },
108035107983 .call_frame = .{ .alignment = .@"16" },
108036107984 .extra_temps = .{
108037 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsihf" } } },
107985 .{ .type = .usize, .kind = .{ .extern_func = "__floatsihf" } },
108038107986 .unused,
108039107987 .unused,
108040107988 .unused,
......@@ -108061,7 +108009,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108061108009 },
108062108010 .call_frame = .{ .alignment = .@"16" },
108063108011 .extra_temps = .{
108064 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsihf" } } },
108012 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsihf" } },
108065108013 .unused,
108066108014 .unused,
108067108015 .unused,
......@@ -108088,7 +108036,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108088108036 },
108089108037 .call_frame = .{ .alignment = .@"16" },
108090108038 .extra_temps = .{
108091 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsihf" } } },
108039 .{ .type = .usize, .kind = .{ .extern_func = "__floatsihf" } },
108092108040 .unused,
108093108041 .unused,
108094108042 .unused,
......@@ -108115,7 +108063,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108115108063 },
108116108064 .call_frame = .{ .alignment = .@"16" },
108117108065 .extra_temps = .{
108118 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsihf" } } },
108066 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsihf" } },
108119108067 .unused,
108120108068 .unused,
108121108069 .unused,
......@@ -108142,7 +108090,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108142108090 },
108143108091 .call_frame = .{ .alignment = .@"16" },
108144108092 .extra_temps = .{
108145 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsihf" } } },
108093 .{ .type = .usize, .kind = .{ .extern_func = "__floatsihf" } },
108146108094 .unused,
108147108095 .unused,
108148108096 .unused,
......@@ -108168,7 +108116,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108168108116 },
108169108117 .call_frame = .{ .alignment = .@"16" },
108170108118 .extra_temps = .{
108171 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsihf" } } },
108119 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsihf" } },
108172108120 .unused,
108173108121 .unused,
108174108122 .unused,
......@@ -108194,7 +108142,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108194108142 },
108195108143 .call_frame = .{ .alignment = .@"16" },
108196108144 .extra_temps = .{
108197 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatdihf" } } },
108145 .{ .type = .usize, .kind = .{ .extern_func = "__floatdihf" } },
108198108146 .unused,
108199108147 .unused,
108200108148 .unused,
......@@ -108220,7 +108168,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108220108168 },
108221108169 .call_frame = .{ .alignment = .@"16" },
108222108170 .extra_temps = .{
108223 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatundihf" } } },
108171 .{ .type = .usize, .kind = .{ .extern_func = "__floatundihf" } },
108224108172 .unused,
108225108173 .unused,
108226108174 .unused,
......@@ -108246,7 +108194,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108246108194 },
108247108195 .call_frame = .{ .alignment = .@"16" },
108248108196 .extra_temps = .{
108249 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floattihf" } } },
108197 .{ .type = .usize, .kind = .{ .extern_func = "__floattihf" } },
108250108198 .unused,
108251108199 .unused,
108252108200 .unused,
......@@ -108272,7 +108220,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108272108220 },
108273108221 .call_frame = .{ .alignment = .@"16" },
108274108222 .extra_temps = .{
108275 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuntihf" } } },
108223 .{ .type = .usize, .kind = .{ .extern_func = "__floatuntihf" } },
108276108224 .unused,
108277108225 .unused,
108278108226 .unused,
......@@ -108300,7 +108248,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108300108248 .extra_temps = .{
108301108249 .{ .type = .usize, .kind = .{ .reg = .rdi } },
108302108250 .{ .type = .usize, .kind = .{ .reg = .rsi } },
108303 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floateihf" } } },
108251 .{ .type = .usize, .kind = .{ .extern_func = "__floateihf" } },
108304108252 .unused,
108305108253 .unused,
108306108254 .unused,
......@@ -108328,7 +108276,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108328108276 .extra_temps = .{
108329108277 .{ .type = .usize, .kind = .{ .reg = .rdi } },
108330108278 .{ .type = .usize, .kind = .{ .reg = .rsi } },
108331 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuneihf" } } },
108279 .{ .type = .usize, .kind = .{ .extern_func = "__floatuneihf" } },
108332108280 .unused,
108333108281 .unused,
108334108282 .unused,
......@@ -108532,7 +108480,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108532108480 .extra_temps = .{
108533108481 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
108534108482 .{ .type = .i32, .kind = .{ .reg = .edi } },
108535 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsihf" } } },
108483 .{ .type = .usize, .kind = .{ .extern_func = "__floatsihf" } },
108536108484 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
108537108485 .unused,
108538108486 .unused,
......@@ -108563,7 +108511,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108563108511 .extra_temps = .{
108564108512 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
108565108513 .{ .type = .i32, .kind = .{ .reg = .edi } },
108566 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsihf" } } },
108514 .{ .type = .usize, .kind = .{ .extern_func = "__floatsihf" } },
108567108515 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
108568108516 .unused,
108569108517 .unused,
......@@ -108594,7 +108542,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108594108542 .extra_temps = .{
108595108543 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
108596108544 .{ .type = .i32, .kind = .{ .reg = .edi } },
108597 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsihf" } } },
108545 .{ .type = .usize, .kind = .{ .extern_func = "__floatsihf" } },
108598108546 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
108599108547 .unused,
108600108548 .unused,
......@@ -108625,7 +108573,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108625108573 .extra_temps = .{
108626108574 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
108627108575 .{ .type = .i32, .kind = .{ .reg = .edi } },
108628 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsihf" } } },
108576 .{ .type = .usize, .kind = .{ .extern_func = "__floatsihf" } },
108629108577 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
108630108578 .unused,
108631108579 .unused,
......@@ -108656,7 +108604,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108656108604 .extra_temps = .{
108657108605 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
108658108606 .{ .type = .i32, .kind = .{ .reg = .edi } },
108659 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsihf" } } },
108607 .{ .type = .usize, .kind = .{ .extern_func = "__floatsihf" } },
108660108608 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
108661108609 .unused,
108662108610 .unused,
......@@ -108688,7 +108636,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108688108636 .extra_temps = .{
108689108637 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
108690108638 .{ .type = .i32, .kind = .{ .reg = .edi } },
108691 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsihf" } } },
108639 .{ .type = .usize, .kind = .{ .extern_func = "__floatsihf" } },
108692108640 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
108693108641 .unused,
108694108642 .unused,
......@@ -108720,7 +108668,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108720108668 .extra_temps = .{
108721108669 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
108722108670 .{ .type = .i32, .kind = .{ .reg = .edi } },
108723 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsihf" } } },
108671 .{ .type = .usize, .kind = .{ .extern_func = "__floatsihf" } },
108724108672 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
108725108673 .{ .type = .f32, .kind = .mem },
108726108674 .unused,
......@@ -108753,7 +108701,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108753108701 .extra_temps = .{
108754108702 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
108755108703 .{ .type = .i32, .kind = .{ .reg = .edi } },
108756 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsihf" } } },
108704 .{ .type = .usize, .kind = .{ .extern_func = "__floatsihf" } },
108757108705 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
108758108706 .{ .type = .f32, .kind = .mem },
108759108707 .unused,
......@@ -108786,7 +108734,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108786108734 .extra_temps = .{
108787108735 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
108788108736 .{ .type = .u32, .kind = .{ .reg = .edi } },
108789 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsihf" } } },
108737 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsihf" } },
108790108738 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
108791108739 .unused,
108792108740 .unused,
......@@ -108817,7 +108765,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108817108765 .extra_temps = .{
108818108766 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
108819108767 .{ .type = .u32, .kind = .{ .reg = .edi } },
108820 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsihf" } } },
108768 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsihf" } },
108821108769 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
108822108770 .unused,
108823108771 .unused,
......@@ -108848,7 +108796,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108848108796 .extra_temps = .{
108849108797 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
108850108798 .{ .type = .u32, .kind = .{ .reg = .edi } },
108851 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsihf" } } },
108799 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsihf" } },
108852108800 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
108853108801 .unused,
108854108802 .unused,
......@@ -108879,7 +108827,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108879108827 .extra_temps = .{
108880108828 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
108881108829 .{ .type = .u32, .kind = .{ .reg = .edi } },
108882 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsihf" } } },
108830 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsihf" } },
108883108831 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
108884108832 .unused,
108885108833 .unused,
......@@ -108910,7 +108858,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108910108858 .extra_temps = .{
108911108859 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
108912108860 .{ .type = .u32, .kind = .{ .reg = .edi } },
108913 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsihf" } } },
108861 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsihf" } },
108914108862 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
108915108863 .unused,
108916108864 .unused,
......@@ -108942,7 +108890,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108942108890 .extra_temps = .{
108943108891 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
108944108892 .{ .type = .u32, .kind = .{ .reg = .edi } },
108945 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsihf" } } },
108893 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsihf" } },
108946108894 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
108947108895 .unused,
108948108896 .unused,
......@@ -108974,7 +108922,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108974108922 .extra_temps = .{
108975108923 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
108976108924 .{ .type = .u32, .kind = .{ .reg = .edi } },
108977 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsihf" } } },
108925 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsihf" } },
108978108926 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
108979108927 .{ .type = .f32, .kind = .mem },
108980108928 .unused,
......@@ -109007,7 +108955,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
109007108955 .extra_temps = .{
109008108956 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
109009108957 .{ .type = .u32, .kind = .{ .reg = .edi } },
109010 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsihf" } } },
108958 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsihf" } },
109011108959 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
109012108960 .{ .type = .f32, .kind = .mem },
109013108961 .unused,
......@@ -109216,7 +109164,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
109216109164 .extra_temps = .{
109217109165 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
109218109166 .{ .type = .i32, .kind = .{ .reg = .edi } },
109219 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsihf" } } },
109167 .{ .type = .usize, .kind = .{ .extern_func = "__floatsihf" } },
109220109168 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
109221109169 .unused,
109222109170 .unused,
......@@ -109247,7 +109195,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
109247109195 .extra_temps = .{
109248109196 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
109249109197 .{ .type = .i32, .kind = .{ .reg = .edi } },
109250 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsihf" } } },
109198 .{ .type = .usize, .kind = .{ .extern_func = "__floatsihf" } },
109251109199 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
109252109200 .unused,
109253109201 .unused,
......@@ -109278,7 +109226,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
109278109226 .extra_temps = .{
109279109227 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
109280109228 .{ .type = .i32, .kind = .{ .reg = .edi } },
109281 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsihf" } } },
109229 .{ .type = .usize, .kind = .{ .extern_func = "__floatsihf" } },
109282109230 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
109283109231 .unused,
109284109232 .unused,
......@@ -109310,7 +109258,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
109310109258 .extra_temps = .{
109311109259 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
109312109260 .{ .type = .i32, .kind = .{ .reg = .edi } },
109313 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsihf" } } },
109261 .{ .type = .usize, .kind = .{ .extern_func = "__floatsihf" } },
109314109262 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
109315109263 .{ .type = .f32, .kind = .mem },
109316109264 .unused,
......@@ -109343,7 +109291,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
109343109291 .extra_temps = .{
109344109292 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
109345109293 .{ .type = .u32, .kind = .{ .reg = .edi } },
109346 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsihf" } } },
109294 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsihf" } },
109347109295 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
109348109296 .unused,
109349109297 .unused,
......@@ -109374,7 +109322,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
109374109322 .extra_temps = .{
109375109323 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
109376109324 .{ .type = .u32, .kind = .{ .reg = .edi } },
109377 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsihf" } } },
109325 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsihf" } },
109378109326 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
109379109327 .unused,
109380109328 .unused,
......@@ -109405,7 +109353,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
109405109353 .extra_temps = .{
109406109354 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
109407109355 .{ .type = .u32, .kind = .{ .reg = .edi } },
109408 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsihf" } } },
109356 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsihf" } },
109409109357 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
109410109358 .unused,
109411109359 .unused,
......@@ -109437,7 +109385,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
109437109385 .extra_temps = .{
109438109386 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
109439109387 .{ .type = .u32, .kind = .{ .reg = .edi } },
109440 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsihf" } } },
109388 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsihf" } },
109441109389 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
109442109390 .{ .type = .f32, .kind = .mem },
109443109391 .unused,
......@@ -109554,7 +109502,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
109554109502 .extra_temps = .{
109555109503 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
109556109504 .{ .type = .i32, .kind = .{ .reg = .edi } },
109557 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsihf" } } },
109505 .{ .type = .usize, .kind = .{ .extern_func = "__floatsihf" } },
109558109506 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
109559109507 .unused,
109560109508 .unused,
......@@ -109585,7 +109533,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
109585109533 .extra_temps = .{
109586109534 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
109587109535 .{ .type = .i32, .kind = .{ .reg = .edi } },
109588 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsihf" } } },
109536 .{ .type = .usize, .kind = .{ .extern_func = "__floatsihf" } },
109589109537 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
109590109538 .unused,
109591109539 .unused,
......@@ -109616,7 +109564,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
109616109564 .extra_temps = .{
109617109565 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
109618109566 .{ .type = .i32, .kind = .{ .reg = .edi } },
109619 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsihf" } } },
109567 .{ .type = .usize, .kind = .{ .extern_func = "__floatsihf" } },
109620109568 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
109621109569 .unused,
109622109570 .unused,
......@@ -109648,7 +109596,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
109648109596 .extra_temps = .{
109649109597 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
109650109598 .{ .type = .i32, .kind = .{ .reg = .edi } },
109651 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsihf" } } },
109599 .{ .type = .usize, .kind = .{ .extern_func = "__floatsihf" } },
109652109600 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
109653109601 .{ .type = .f32, .kind = .mem },
109654109602 .unused,
......@@ -109681,7 +109629,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
109681109629 .extra_temps = .{
109682109630 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
109683109631 .{ .type = .u32, .kind = .{ .reg = .edi } },
109684 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsihf" } } },
109632 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsihf" } },
109685109633 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
109686109634 .unused,
109687109635 .unused,
......@@ -109712,7 +109660,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
109712109660 .extra_temps = .{
109713109661 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
109714109662 .{ .type = .u32, .kind = .{ .reg = .edi } },
109715 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsihf" } } },
109663 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsihf" } },
109716109664 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
109717109665 .unused,
109718109666 .unused,
......@@ -109743,7 +109691,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
109743109691 .extra_temps = .{
109744109692 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
109745109693 .{ .type = .u32, .kind = .{ .reg = .edi } },
109746 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsihf" } } },
109694 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsihf" } },
109747109695 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
109748109696 .unused,
109749109697 .unused,
......@@ -109775,7 +109723,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
109775109723 .extra_temps = .{
109776109724 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
109777109725 .{ .type = .u32, .kind = .{ .reg = .edi } },
109778 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsihf" } } },
109726 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsihf" } },
109779109727 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
109780109728 .{ .type = .f32, .kind = .mem },
109781109729 .unused,
......@@ -109839,7 +109787,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
109839109787 .extra_temps = .{
109840109788 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
109841109789 .{ .type = .i64, .kind = .{ .reg = .rdi } },
109842 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatdihf" } } },
109790 .{ .type = .usize, .kind = .{ .extern_func = "__floatdihf" } },
109843109791 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
109844109792 .unused,
109845109793 .unused,
......@@ -109870,7 +109818,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
109870109818 .extra_temps = .{
109871109819 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
109872109820 .{ .type = .i64, .kind = .{ .reg = .rdi } },
109873 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatdihf" } } },
109821 .{ .type = .usize, .kind = .{ .extern_func = "__floatdihf" } },
109874109822 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
109875109823 .unused,
109876109824 .unused,
......@@ -109901,7 +109849,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
109901109849 .extra_temps = .{
109902109850 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
109903109851 .{ .type = .i64, .kind = .{ .reg = .rdi } },
109904 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatdihf" } } },
109852 .{ .type = .usize, .kind = .{ .extern_func = "__floatdihf" } },
109905109853 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
109906109854 .unused,
109907109855 .unused,
......@@ -109933,7 +109881,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
109933109881 .extra_temps = .{
109934109882 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
109935109883 .{ .type = .i64, .kind = .{ .reg = .rdi } },
109936 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatdihf" } } },
109884 .{ .type = .usize, .kind = .{ .extern_func = "__floatdihf" } },
109937109885 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
109938109886 .{ .type = .f32, .kind = .mem },
109939109887 .unused,
......@@ -109966,7 +109914,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
109966109914 .extra_temps = .{
109967109915 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
109968109916 .{ .type = .u64, .kind = .{ .reg = .rdi } },
109969 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatundihf" } } },
109917 .{ .type = .usize, .kind = .{ .extern_func = "__floatundihf" } },
109970109918 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
109971109919 .unused,
109972109920 .unused,
......@@ -109997,7 +109945,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
109997109945 .extra_temps = .{
109998109946 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
109999109947 .{ .type = .u64, .kind = .{ .reg = .rdi } },
110000 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatundihf" } } },
109948 .{ .type = .usize, .kind = .{ .extern_func = "__floatundihf" } },
110001109949 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
110002109950 .unused,
110003109951 .unused,
......@@ -110028,7 +109976,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
110028109976 .extra_temps = .{
110029109977 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
110030109978 .{ .type = .u64, .kind = .{ .reg = .rdi } },
110031 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatundihf" } } },
109979 .{ .type = .usize, .kind = .{ .extern_func = "__floatundihf" } },
110032109980 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
110033109981 .unused,
110034109982 .unused,
......@@ -110060,7 +110008,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
110060110008 .extra_temps = .{
110061110009 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
110062110010 .{ .type = .u64, .kind = .{ .reg = .rdi } },
110063 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatundihf" } } },
110011 .{ .type = .usize, .kind = .{ .extern_func = "__floatundihf" } },
110064110012 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
110065110013 .{ .type = .f32, .kind = .mem },
110066110014 .unused,
......@@ -110094,7 +110042,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
110094110042 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
110095110043 .{ .type = .u64, .kind = .{ .reg = .rdi } },
110096110044 .{ .type = .i64, .kind = .{ .reg = .rsi } },
110097 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floattihf" } } },
110045 .{ .type = .usize, .kind = .{ .extern_func = "__floattihf" } },
110098110046 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
110099110047 .unused,
110100110048 .unused,
......@@ -110126,7 +110074,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
110126110074 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
110127110075 .{ .type = .u64, .kind = .{ .reg = .rdi } },
110128110076 .{ .type = .i64, .kind = .{ .reg = .rsi } },
110129 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floattihf" } } },
110077 .{ .type = .usize, .kind = .{ .extern_func = "__floattihf" } },
110130110078 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
110131110079 .unused,
110132110080 .unused,
......@@ -110158,7 +110106,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
110158110106 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
110159110107 .{ .type = .u64, .kind = .{ .reg = .rdi } },
110160110108 .{ .type = .i64, .kind = .{ .reg = .rsi } },
110161 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floattihf" } } },
110109 .{ .type = .usize, .kind = .{ .extern_func = "__floattihf" } },
110162110110 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
110163110111 .unused,
110164110112 .unused,
......@@ -110191,7 +110139,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
110191110139 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
110192110140 .{ .type = .u64, .kind = .{ .reg = .rdi } },
110193110141 .{ .type = .i64, .kind = .{ .reg = .rsi } },
110194 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floattihf" } } },
110142 .{ .type = .usize, .kind = .{ .extern_func = "__floattihf" } },
110195110143 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
110196110144 .{ .type = .f32, .kind = .mem },
110197110145 .unused,
......@@ -110225,7 +110173,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
110225110173 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
110226110174 .{ .type = .u64, .kind = .{ .reg = .rdi } },
110227110175 .{ .type = .u64, .kind = .{ .reg = .rsi } },
110228 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuntihf" } } },
110176 .{ .type = .usize, .kind = .{ .extern_func = "__floatuntihf" } },
110229110177 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
110230110178 .unused,
110231110179 .unused,
......@@ -110257,7 +110205,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
110257110205 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
110258110206 .{ .type = .u64, .kind = .{ .reg = .rdi } },
110259110207 .{ .type = .u64, .kind = .{ .reg = .rsi } },
110260 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuntihf" } } },
110208 .{ .type = .usize, .kind = .{ .extern_func = "__floatuntihf" } },
110261110209 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
110262110210 .unused,
110263110211 .unused,
......@@ -110289,7 +110237,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
110289110237 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
110290110238 .{ .type = .u64, .kind = .{ .reg = .rdi } },
110291110239 .{ .type = .u64, .kind = .{ .reg = .rsi } },
110292 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuntihf" } } },
110240 .{ .type = .usize, .kind = .{ .extern_func = "__floatuntihf" } },
110293110241 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
110294110242 .unused,
110295110243 .unused,
......@@ -110322,7 +110270,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
110322110270 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
110323110271 .{ .type = .u64, .kind = .{ .reg = .rdi } },
110324110272 .{ .type = .u64, .kind = .{ .reg = .rsi } },
110325 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuntihf" } } },
110273 .{ .type = .usize, .kind = .{ .extern_func = "__floatuntihf" } },
110326110274 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
110327110275 .{ .type = .f32, .kind = .mem },
110328110276 .unused,
......@@ -110357,7 +110305,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
110357110305 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
110358110306 .{ .type = .usize, .kind = .{ .reg = .rdi } },
110359110307 .{ .type = .usize, .kind = .{ .reg = .rsi } },
110360 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floateihf" } } },
110308 .{ .type = .usize, .kind = .{ .extern_func = "__floateihf" } },
110361110309 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
110362110310 .unused,
110363110311 .unused,
......@@ -110391,7 +110339,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
110391110339 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
110392110340 .{ .type = .usize, .kind = .{ .reg = .rdi } },
110393110341 .{ .type = .usize, .kind = .{ .reg = .rsi } },
110394 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floateihf" } } },
110342 .{ .type = .usize, .kind = .{ .extern_func = "__floateihf" } },
110395110343 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
110396110344 .unused,
110397110345 .unused,
......@@ -110425,7 +110373,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
110425110373 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
110426110374 .{ .type = .usize, .kind = .{ .reg = .rdi } },
110427110375 .{ .type = .usize, .kind = .{ .reg = .rsi } },
110428 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floateihf" } } },
110376 .{ .type = .usize, .kind = .{ .extern_func = "__floateihf" } },
110429110377 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
110430110378 .unused,
110431110379 .unused,
......@@ -110460,7 +110408,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
110460110408 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
110461110409 .{ .type = .usize, .kind = .{ .reg = .rdi } },
110462110410 .{ .type = .usize, .kind = .{ .reg = .rsi } },
110463 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floateihf" } } },
110411 .{ .type = .usize, .kind = .{ .extern_func = "__floateihf" } },
110464110412 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
110465110413 .{ .type = .f32, .kind = .mem },
110466110414 .unused,
......@@ -110496,7 +110444,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
110496110444 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
110497110445 .{ .type = .usize, .kind = .{ .reg = .rdi } },
110498110446 .{ .type = .usize, .kind = .{ .reg = .rsi } },
110499 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuneihf" } } },
110447 .{ .type = .usize, .kind = .{ .extern_func = "__floatuneihf" } },
110500110448 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
110501110449 .unused,
110502110450 .unused,
......@@ -110530,7 +110478,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
110530110478 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
110531110479 .{ .type = .usize, .kind = .{ .reg = .rdi } },
110532110480 .{ .type = .usize, .kind = .{ .reg = .rsi } },
110533 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuneihf" } } },
110481 .{ .type = .usize, .kind = .{ .extern_func = "__floatuneihf" } },
110534110482 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
110535110483 .unused,
110536110484 .unused,
......@@ -110564,7 +110512,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
110564110512 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
110565110513 .{ .type = .usize, .kind = .{ .reg = .rdi } },
110566110514 .{ .type = .usize, .kind = .{ .reg = .rsi } },
110567 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuneihf" } } },
110515 .{ .type = .usize, .kind = .{ .extern_func = "__floatuneihf" } },
110568110516 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
110569110517 .unused,
110570110518 .unused,
......@@ -110599,7 +110547,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
110599110547 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
110600110548 .{ .type = .usize, .kind = .{ .reg = .rdi } },
110601110549 .{ .type = .usize, .kind = .{ .reg = .rsi } },
110602 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuneihf" } } },
110550 .{ .type = .usize, .kind = .{ .extern_func = "__floatuneihf" } },
110603110551 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
110604110552 .{ .type = .f32, .kind = .mem },
110605110553 .unused,
......@@ -111023,7 +110971,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
111023110971 },
111024110972 .call_frame = .{ .alignment = .@"16" },
111025110973 .extra_temps = .{
111026 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floattisf" } } },
110974 .{ .type = .usize, .kind = .{ .extern_func = "__floattisf" } },
111027110975 .unused,
111028110976 .unused,
111029110977 .unused,
......@@ -111049,7 +110997,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
111049110997 },
111050110998 .call_frame = .{ .alignment = .@"16" },
111051110999 .extra_temps = .{
111052 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuntisf" } } },
111000 .{ .type = .usize, .kind = .{ .extern_func = "__floatuntisf" } },
111053111001 .unused,
111054111002 .unused,
111055111003 .unused,
......@@ -111077,7 +111025,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
111077111025 .extra_temps = .{
111078111026 .{ .type = .usize, .kind = .{ .reg = .rdi } },
111079111027 .{ .type = .usize, .kind = .{ .reg = .rsi } },
111080 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floateisf" } } },
111028 .{ .type = .usize, .kind = .{ .extern_func = "__floateisf" } },
111081111029 .unused,
111082111030 .unused,
111083111031 .unused,
......@@ -111105,7 +111053,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
111105111053 .extra_temps = .{
111106111054 .{ .type = .usize, .kind = .{ .reg = .rdi } },
111107111055 .{ .type = .usize, .kind = .{ .reg = .rsi } },
111108 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuneisf" } } },
111056 .{ .type = .usize, .kind = .{ .extern_func = "__floatuneisf" } },
111109111057 .unused,
111110111058 .unused,
111111111059 .unused,
......@@ -111391,7 +111339,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
111391111339 .extra_temps = .{
111392111340 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
111393111341 .{ .type = .i32, .kind = .{ .reg = .edi } },
111394 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsisf" } } },
111342 .{ .type = .usize, .kind = .{ .extern_func = "__floatsisf" } },
111395111343 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
111396111344 .unused,
111397111345 .unused,
......@@ -111422,7 +111370,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
111422111370 .extra_temps = .{
111423111371 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
111424111372 .{ .type = .i32, .kind = .{ .reg = .edi } },
111425 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsisf" } } },
111373 .{ .type = .usize, .kind = .{ .extern_func = "__floatsisf" } },
111426111374 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
111427111375 .unused,
111428111376 .unused,
......@@ -111453,7 +111401,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
111453111401 .extra_temps = .{
111454111402 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
111455111403 .{ .type = .i32, .kind = .{ .reg = .edi } },
111456 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsisf" } } },
111404 .{ .type = .usize, .kind = .{ .extern_func = "__floatsisf" } },
111457111405 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
111458111406 .unused,
111459111407 .unused,
......@@ -111484,7 +111432,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
111484111432 .extra_temps = .{
111485111433 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
111486111434 .{ .type = .i32, .kind = .{ .reg = .edi } },
111487 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsisf" } } },
111435 .{ .type = .usize, .kind = .{ .extern_func = "__floatsisf" } },
111488111436 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
111489111437 .unused,
111490111438 .unused,
......@@ -111515,7 +111463,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
111515111463 .extra_temps = .{
111516111464 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
111517111465 .{ .type = .u32, .kind = .{ .reg = .edi } },
111518 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsisf" } } },
111466 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsisf" } },
111519111467 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
111520111468 .unused,
111521111469 .unused,
......@@ -111546,7 +111494,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
111546111494 .extra_temps = .{
111547111495 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
111548111496 .{ .type = .u32, .kind = .{ .reg = .edi } },
111549 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsisf" } } },
111497 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsisf" } },
111550111498 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
111551111499 .unused,
111552111500 .unused,
......@@ -111577,7 +111525,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
111577111525 .extra_temps = .{
111578111526 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
111579111527 .{ .type = .u32, .kind = .{ .reg = .edi } },
111580 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsisf" } } },
111528 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsisf" } },
111581111529 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
111582111530 .unused,
111583111531 .unused,
......@@ -111608,7 +111556,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
111608111556 .extra_temps = .{
111609111557 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
111610111558 .{ .type = .u32, .kind = .{ .reg = .edi } },
111611 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsisf" } } },
111559 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsisf" } },
111612111560 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
111613111561 .unused,
111614111562 .unused,
......@@ -111897,7 +111845,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
111897111845 .extra_temps = .{
111898111846 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
111899111847 .{ .type = .i32, .kind = .{ .reg = .edi } },
111900 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsisf" } } },
111848 .{ .type = .usize, .kind = .{ .extern_func = "__floatsisf" } },
111901111849 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
111902111850 .unused,
111903111851 .unused,
......@@ -111928,7 +111876,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
111928111876 .extra_temps = .{
111929111877 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
111930111878 .{ .type = .i32, .kind = .{ .reg = .edi } },
111931 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsisf" } } },
111879 .{ .type = .usize, .kind = .{ .extern_func = "__floatsisf" } },
111932111880 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
111933111881 .unused,
111934111882 .unused,
......@@ -111959,7 +111907,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
111959111907 .extra_temps = .{
111960111908 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
111961111909 .{ .type = .u32, .kind = .{ .reg = .edi } },
111962 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsisf" } } },
111910 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsisf" } },
111963111911 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
111964111912 .unused,
111965111913 .unused,
......@@ -111990,7 +111938,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
111990111938 .extra_temps = .{
111991111939 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
111992111940 .{ .type = .u32, .kind = .{ .reg = .edi } },
111993 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsisf" } } },
111941 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsisf" } },
111994111942 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
111995111943 .unused,
111996111944 .unused,
......@@ -112173,7 +112121,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
112173112121 .extra_temps = .{
112174112122 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
112175112123 .{ .type = .i32, .kind = .{ .reg = .edi } },
112176 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsisf" } } },
112124 .{ .type = .usize, .kind = .{ .extern_func = "__floatsisf" } },
112177112125 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
112178112126 .unused,
112179112127 .unused,
......@@ -112204,7 +112152,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
112204112152 .extra_temps = .{
112205112153 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
112206112154 .{ .type = .i32, .kind = .{ .reg = .edi } },
112207 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsisf" } } },
112155 .{ .type = .usize, .kind = .{ .extern_func = "__floatsisf" } },
112208112156 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
112209112157 .unused,
112210112158 .unused,
......@@ -112235,7 +112183,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
112235112183 .extra_temps = .{
112236112184 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
112237112185 .{ .type = .u32, .kind = .{ .reg = .edi } },
112238 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsisf" } } },
112186 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsisf" } },
112239112187 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
112240112188 .unused,
112241112189 .unused,
......@@ -112266,7 +112214,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
112266112214 .extra_temps = .{
112267112215 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
112268112216 .{ .type = .u32, .kind = .{ .reg = .edi } },
112269 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsisf" } } },
112217 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsisf" } },
112270112218 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
112271112219 .unused,
112272112220 .unused,
......@@ -112357,7 +112305,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
112357112305 .extra_temps = .{
112358112306 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
112359112307 .{ .type = .i64, .kind = .{ .reg = .rdi } },
112360 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatdisf" } } },
112308 .{ .type = .usize, .kind = .{ .extern_func = "__floatdisf" } },
112361112309 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
112362112310 .unused,
112363112311 .unused,
......@@ -112388,7 +112336,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
112388112336 .extra_temps = .{
112389112337 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
112390112338 .{ .type = .i64, .kind = .{ .reg = .rdi } },
112391 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatdisf" } } },
112339 .{ .type = .usize, .kind = .{ .extern_func = "__floatdisf" } },
112392112340 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
112393112341 .unused,
112394112342 .unused,
......@@ -112419,7 +112367,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
112419112367 .extra_temps = .{
112420112368 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
112421112369 .{ .type = .u64, .kind = .{ .reg = .rdi } },
112422 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatundisf" } } },
112370 .{ .type = .usize, .kind = .{ .extern_func = "__floatundisf" } },
112423112371 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
112424112372 .unused,
112425112373 .unused,
......@@ -112450,7 +112398,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
112450112398 .extra_temps = .{
112451112399 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
112452112400 .{ .type = .u64, .kind = .{ .reg = .rdi } },
112453 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatundisf" } } },
112401 .{ .type = .usize, .kind = .{ .extern_func = "__floatundisf" } },
112454112402 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
112455112403 .unused,
112456112404 .unused,
......@@ -112482,7 +112430,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
112482112430 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
112483112431 .{ .type = .u64, .kind = .{ .reg = .rdi } },
112484112432 .{ .type = .i64, .kind = .{ .reg = .rsi } },
112485 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floattisf" } } },
112433 .{ .type = .usize, .kind = .{ .extern_func = "__floattisf" } },
112486112434 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
112487112435 .unused,
112488112436 .unused,
......@@ -112514,7 +112462,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
112514112462 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
112515112463 .{ .type = .u64, .kind = .{ .reg = .rdi } },
112516112464 .{ .type = .i64, .kind = .{ .reg = .rsi } },
112517 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floattisf" } } },
112465 .{ .type = .usize, .kind = .{ .extern_func = "__floattisf" } },
112518112466 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
112519112467 .unused,
112520112468 .unused,
......@@ -112546,7 +112494,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
112546112494 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
112547112495 .{ .type = .u64, .kind = .{ .reg = .rdi } },
112548112496 .{ .type = .u64, .kind = .{ .reg = .rsi } },
112549 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuntisf" } } },
112497 .{ .type = .usize, .kind = .{ .extern_func = "__floatuntisf" } },
112550112498 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
112551112499 .unused,
112552112500 .unused,
......@@ -112578,7 +112526,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
112578112526 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
112579112527 .{ .type = .u64, .kind = .{ .reg = .rdi } },
112580112528 .{ .type = .u64, .kind = .{ .reg = .rsi } },
112581 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuntisf" } } },
112529 .{ .type = .usize, .kind = .{ .extern_func = "__floatuntisf" } },
112582112530 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
112583112531 .unused,
112584112532 .unused,
......@@ -112611,7 +112559,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
112611112559 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
112612112560 .{ .type = .usize, .kind = .{ .reg = .rdi } },
112613112561 .{ .type = .usize, .kind = .{ .reg = .rsi } },
112614 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floateisf" } } },
112562 .{ .type = .usize, .kind = .{ .extern_func = "__floateisf" } },
112615112563 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
112616112564 .unused,
112617112565 .unused,
......@@ -112645,7 +112593,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
112645112593 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
112646112594 .{ .type = .usize, .kind = .{ .reg = .rdi } },
112647112595 .{ .type = .usize, .kind = .{ .reg = .rsi } },
112648 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floateisf" } } },
112596 .{ .type = .usize, .kind = .{ .extern_func = "__floateisf" } },
112649112597 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
112650112598 .unused,
112651112599 .unused,
......@@ -112679,7 +112627,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
112679112627 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
112680112628 .{ .type = .usize, .kind = .{ .reg = .rdi } },
112681112629 .{ .type = .usize, .kind = .{ .reg = .rsi } },
112682 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuneisf" } } },
112630 .{ .type = .usize, .kind = .{ .extern_func = "__floatuneisf" } },
112683112631 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
112684112632 .unused,
112685112633 .unused,
......@@ -112713,7 +112661,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
112713112661 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
112714112662 .{ .type = .usize, .kind = .{ .reg = .rdi } },
112715112663 .{ .type = .usize, .kind = .{ .reg = .rsi } },
112716 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuneisf" } } },
112664 .{ .type = .usize, .kind = .{ .extern_func = "__floatuneisf" } },
112717112665 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
112718112666 .unused,
112719112667 .unused,
......@@ -113353,7 +113301,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
113353113301 },
113354113302 .call_frame = .{ .alignment = .@"16" },
113355113303 .extra_temps = .{
113356 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floattidf" } } },
113304 .{ .type = .usize, .kind = .{ .extern_func = "__floattidf" } },
113357113305 .unused,
113358113306 .unused,
113359113307 .unused,
......@@ -113379,7 +113327,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
113379113327 },
113380113328 .call_frame = .{ .alignment = .@"16" },
113381113329 .extra_temps = .{
113382 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuntidf" } } },
113330 .{ .type = .usize, .kind = .{ .extern_func = "__floatuntidf" } },
113383113331 .unused,
113384113332 .unused,
113385113333 .unused,
......@@ -113407,7 +113355,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
113407113355 .extra_temps = .{
113408113356 .{ .type = .usize, .kind = .{ .reg = .rdi } },
113409113357 .{ .type = .usize, .kind = .{ .reg = .rsi } },
113410 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floateidf" } } },
113358 .{ .type = .usize, .kind = .{ .extern_func = "__floateidf" } },
113411113359 .unused,
113412113360 .unused,
113413113361 .unused,
......@@ -113435,7 +113383,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
113435113383 .extra_temps = .{
113436113384 .{ .type = .usize, .kind = .{ .reg = .rdi } },
113437113385 .{ .type = .usize, .kind = .{ .reg = .rsi } },
113438 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuneidf" } } },
113386 .{ .type = .usize, .kind = .{ .extern_func = "__floatuneidf" } },
113439113387 .unused,
113440113388 .unused,
113441113389 .unused,
......@@ -113729,7 +113677,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
113729113677 .extra_temps = .{
113730113678 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
113731113679 .{ .type = .i32, .kind = .{ .reg = .edi } },
113732 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsidf" } } },
113680 .{ .type = .usize, .kind = .{ .extern_func = "__floatsidf" } },
113733113681 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
113734113682 .unused,
113735113683 .unused,
......@@ -113760,7 +113708,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
113760113708 .extra_temps = .{
113761113709 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
113762113710 .{ .type = .i32, .kind = .{ .reg = .edi } },
113763 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsidf" } } },
113711 .{ .type = .usize, .kind = .{ .extern_func = "__floatsidf" } },
113764113712 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
113765113713 .unused,
113766113714 .unused,
......@@ -113791,7 +113739,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
113791113739 .extra_temps = .{
113792113740 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
113793113741 .{ .type = .i32, .kind = .{ .reg = .edi } },
113794 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsidf" } } },
113742 .{ .type = .usize, .kind = .{ .extern_func = "__floatsidf" } },
113795113743 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
113796113744 .unused,
113797113745 .unused,
......@@ -113822,7 +113770,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
113822113770 .extra_temps = .{
113823113771 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
113824113772 .{ .type = .i32, .kind = .{ .reg = .edi } },
113825 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsidf" } } },
113773 .{ .type = .usize, .kind = .{ .extern_func = "__floatsidf" } },
113826113774 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
113827113775 .unused,
113828113776 .unused,
......@@ -113853,7 +113801,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
113853113801 .extra_temps = .{
113854113802 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
113855113803 .{ .type = .i32, .kind = .{ .reg = .edi } },
113856 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsidf" } } },
113804 .{ .type = .usize, .kind = .{ .extern_func = "__floatsidf" } },
113857113805 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
113858113806 .unused,
113859113807 .unused,
......@@ -113884,7 +113832,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
113884113832 .extra_temps = .{
113885113833 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
113886113834 .{ .type = .i32, .kind = .{ .reg = .edi } },
113887 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsidf" } } },
113835 .{ .type = .usize, .kind = .{ .extern_func = "__floatsidf" } },
113888113836 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
113889113837 .unused,
113890113838 .unused,
......@@ -113915,7 +113863,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
113915113863 .extra_temps = .{
113916113864 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
113917113865 .{ .type = .u32, .kind = .{ .reg = .edi } },
113918 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsidf" } } },
113866 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsidf" } },
113919113867 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
113920113868 .unused,
113921113869 .unused,
......@@ -113946,7 +113894,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
113946113894 .extra_temps = .{
113947113895 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
113948113896 .{ .type = .u32, .kind = .{ .reg = .edi } },
113949 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsidf" } } },
113897 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsidf" } },
113950113898 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
113951113899 .unused,
113952113900 .unused,
......@@ -113977,7 +113925,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
113977113925 .extra_temps = .{
113978113926 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
113979113927 .{ .type = .u32, .kind = .{ .reg = .edi } },
113980 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsidf" } } },
113928 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsidf" } },
113981113929 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
113982113930 .unused,
113983113931 .unused,
......@@ -114008,7 +113956,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
114008113956 .extra_temps = .{
114009113957 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
114010113958 .{ .type = .u32, .kind = .{ .reg = .edi } },
114011 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsidf" } } },
113959 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsidf" } },
114012113960 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
114013113961 .unused,
114014113962 .unused,
......@@ -114039,7 +113987,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
114039113987 .extra_temps = .{
114040113988 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
114041113989 .{ .type = .u32, .kind = .{ .reg = .edi } },
114042 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsidf" } } },
113990 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsidf" } },
114043113991 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
114044113992 .unused,
114045113993 .unused,
......@@ -114070,7 +114018,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
114070114018 .extra_temps = .{
114071114019 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
114072114020 .{ .type = .u32, .kind = .{ .reg = .edi } },
114073 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsidf" } } },
114021 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsidf" } },
114074114022 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
114075114023 .unused,
114076114024 .unused,
......@@ -114363,7 +114311,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
114363114311 .extra_temps = .{
114364114312 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
114365114313 .{ .type = .i32, .kind = .{ .reg = .edi } },
114366 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsidf" } } },
114314 .{ .type = .usize, .kind = .{ .extern_func = "__floatsidf" } },
114367114315 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
114368114316 .unused,
114369114317 .unused,
......@@ -114394,7 +114342,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
114394114342 .extra_temps = .{
114395114343 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
114396114344 .{ .type = .i32, .kind = .{ .reg = .edi } },
114397 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsidf" } } },
114345 .{ .type = .usize, .kind = .{ .extern_func = "__floatsidf" } },
114398114346 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
114399114347 .unused,
114400114348 .unused,
......@@ -114425,7 +114373,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
114425114373 .extra_temps = .{
114426114374 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
114427114375 .{ .type = .i32, .kind = .{ .reg = .edi } },
114428 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsidf" } } },
114376 .{ .type = .usize, .kind = .{ .extern_func = "__floatsidf" } },
114429114377 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
114430114378 .unused,
114431114379 .unused,
......@@ -114456,7 +114404,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
114456114404 .extra_temps = .{
114457114405 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
114458114406 .{ .type = .u32, .kind = .{ .reg = .edi } },
114459 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsidf" } } },
114407 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsidf" } },
114460114408 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
114461114409 .unused,
114462114410 .unused,
......@@ -114487,7 +114435,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
114487114435 .extra_temps = .{
114488114436 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
114489114437 .{ .type = .u32, .kind = .{ .reg = .edi } },
114490 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsidf" } } },
114438 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsidf" } },
114491114439 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
114492114440 .unused,
114493114441 .unused,
......@@ -114518,7 +114466,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
114518114466 .extra_temps = .{
114519114467 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
114520114468 .{ .type = .u32, .kind = .{ .reg = .edi } },
114521 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsidf" } } },
114469 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsidf" } },
114522114470 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
114523114471 .unused,
114524114472 .unused,
......@@ -114672,7 +114620,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
114672114620 .extra_temps = .{
114673114621 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
114674114622 .{ .type = .i32, .kind = .{ .reg = .edi } },
114675 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsidf" } } },
114623 .{ .type = .usize, .kind = .{ .extern_func = "__floatsidf" } },
114676114624 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
114677114625 .unused,
114678114626 .unused,
......@@ -114703,7 +114651,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
114703114651 .extra_temps = .{
114704114652 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
114705114653 .{ .type = .i32, .kind = .{ .reg = .edi } },
114706 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsidf" } } },
114654 .{ .type = .usize, .kind = .{ .extern_func = "__floatsidf" } },
114707114655 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
114708114656 .unused,
114709114657 .unused,
......@@ -114734,7 +114682,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
114734114682 .extra_temps = .{
114735114683 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
114736114684 .{ .type = .i32, .kind = .{ .reg = .edi } },
114737 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsidf" } } },
114685 .{ .type = .usize, .kind = .{ .extern_func = "__floatsidf" } },
114738114686 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
114739114687 .unused,
114740114688 .unused,
......@@ -114765,7 +114713,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
114765114713 .extra_temps = .{
114766114714 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
114767114715 .{ .type = .u32, .kind = .{ .reg = .edi } },
114768 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsidf" } } },
114716 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsidf" } },
114769114717 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
114770114718 .unused,
114771114719 .unused,
......@@ -114796,7 +114744,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
114796114744 .extra_temps = .{
114797114745 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
114798114746 .{ .type = .u32, .kind = .{ .reg = .edi } },
114799 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsidf" } } },
114747 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsidf" } },
114800114748 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
114801114749 .unused,
114802114750 .unused,
......@@ -114827,7 +114775,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
114827114775 .extra_temps = .{
114828114776 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
114829114777 .{ .type = .u32, .kind = .{ .reg = .edi } },
114830 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsidf" } } },
114778 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsidf" } },
114831114779 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
114832114780 .unused,
114833114781 .unused,
......@@ -114918,7 +114866,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
114918114866 .extra_temps = .{
114919114867 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
114920114868 .{ .type = .i64, .kind = .{ .reg = .rdi } },
114921 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatdidf" } } },
114869 .{ .type = .usize, .kind = .{ .extern_func = "__floatdidf" } },
114922114870 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
114923114871 .unused,
114924114872 .unused,
......@@ -114949,7 +114897,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
114949114897 .extra_temps = .{
114950114898 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
114951114899 .{ .type = .i64, .kind = .{ .reg = .rdi } },
114952 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatdidf" } } },
114900 .{ .type = .usize, .kind = .{ .extern_func = "__floatdidf" } },
114953114901 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
114954114902 .unused,
114955114903 .unused,
......@@ -114980,7 +114928,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
114980114928 .extra_temps = .{
114981114929 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
114982114930 .{ .type = .i64, .kind = .{ .reg = .rdi } },
114983 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatdidf" } } },
114931 .{ .type = .usize, .kind = .{ .extern_func = "__floatdidf" } },
114984114932 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
114985114933 .unused,
114986114934 .unused,
......@@ -115011,7 +114959,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
115011114959 .extra_temps = .{
115012114960 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
115013114961 .{ .type = .u64, .kind = .{ .reg = .rdi } },
115014 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatundidf" } } },
114962 .{ .type = .usize, .kind = .{ .extern_func = "__floatundidf" } },
115015114963 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
115016114964 .unused,
115017114965 .unused,
......@@ -115042,7 +114990,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
115042114990 .extra_temps = .{
115043114991 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
115044114992 .{ .type = .u64, .kind = .{ .reg = .rdi } },
115045 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatundidf" } } },
114993 .{ .type = .usize, .kind = .{ .extern_func = "__floatundidf" } },
115046114994 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
115047114995 .unused,
115048114996 .unused,
......@@ -115073,7 +115021,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
115073115021 .extra_temps = .{
115074115022 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
115075115023 .{ .type = .u64, .kind = .{ .reg = .rdi } },
115076 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatundidf" } } },
115024 .{ .type = .usize, .kind = .{ .extern_func = "__floatundidf" } },
115077115025 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
115078115026 .unused,
115079115027 .unused,
......@@ -115105,7 +115053,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
115105115053 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
115106115054 .{ .type = .u64, .kind = .{ .reg = .rdi } },
115107115055 .{ .type = .i64, .kind = .{ .reg = .rsi } },
115108 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floattidf" } } },
115056 .{ .type = .usize, .kind = .{ .extern_func = "__floattidf" } },
115109115057 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
115110115058 .unused,
115111115059 .unused,
......@@ -115137,7 +115085,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
115137115085 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
115138115086 .{ .type = .u64, .kind = .{ .reg = .rdi } },
115139115087 .{ .type = .i64, .kind = .{ .reg = .rsi } },
115140 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floattidf" } } },
115088 .{ .type = .usize, .kind = .{ .extern_func = "__floattidf" } },
115141115089 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
115142115090 .unused,
115143115091 .unused,
......@@ -115169,7 +115117,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
115169115117 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
115170115118 .{ .type = .u64, .kind = .{ .reg = .rdi } },
115171115119 .{ .type = .i64, .kind = .{ .reg = .rsi } },
115172 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floattidf" } } },
115120 .{ .type = .usize, .kind = .{ .extern_func = "__floattidf" } },
115173115121 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
115174115122 .unused,
115175115123 .unused,
......@@ -115201,7 +115149,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
115201115149 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
115202115150 .{ .type = .u64, .kind = .{ .reg = .rdi } },
115203115151 .{ .type = .u64, .kind = .{ .reg = .rsi } },
115204 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuntidf" } } },
115152 .{ .type = .usize, .kind = .{ .extern_func = "__floatuntidf" } },
115205115153 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
115206115154 .unused,
115207115155 .unused,
......@@ -115233,7 +115181,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
115233115181 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
115234115182 .{ .type = .u64, .kind = .{ .reg = .rdi } },
115235115183 .{ .type = .u64, .kind = .{ .reg = .rsi } },
115236 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuntidf" } } },
115184 .{ .type = .usize, .kind = .{ .extern_func = "__floatuntidf" } },
115237115185 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
115238115186 .unused,
115239115187 .unused,
......@@ -115265,7 +115213,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
115265115213 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
115266115214 .{ .type = .u64, .kind = .{ .reg = .rdi } },
115267115215 .{ .type = .u64, .kind = .{ .reg = .rsi } },
115268 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuntidf" } } },
115216 .{ .type = .usize, .kind = .{ .extern_func = "__floatuntidf" } },
115269115217 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
115270115218 .unused,
115271115219 .unused,
......@@ -115298,7 +115246,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
115298115246 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
115299115247 .{ .type = .usize, .kind = .{ .reg = .rdi } },
115300115248 .{ .type = .usize, .kind = .{ .reg = .rsi } },
115301 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floateidf" } } },
115249 .{ .type = .usize, .kind = .{ .extern_func = "__floateidf" } },
115302115250 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
115303115251 .unused,
115304115252 .unused,
......@@ -115332,7 +115280,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
115332115280 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
115333115281 .{ .type = .usize, .kind = .{ .reg = .rdi } },
115334115282 .{ .type = .usize, .kind = .{ .reg = .rsi } },
115335 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floateidf" } } },
115283 .{ .type = .usize, .kind = .{ .extern_func = "__floateidf" } },
115336115284 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
115337115285 .unused,
115338115286 .unused,
......@@ -115366,7 +115314,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
115366115314 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
115367115315 .{ .type = .usize, .kind = .{ .reg = .rdi } },
115368115316 .{ .type = .usize, .kind = .{ .reg = .rsi } },
115369 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floateidf" } } },
115317 .{ .type = .usize, .kind = .{ .extern_func = "__floateidf" } },
115370115318 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
115371115319 .unused,
115372115320 .unused,
......@@ -115400,7 +115348,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
115400115348 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
115401115349 .{ .type = .usize, .kind = .{ .reg = .rdi } },
115402115350 .{ .type = .usize, .kind = .{ .reg = .rsi } },
115403 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuneidf" } } },
115351 .{ .type = .usize, .kind = .{ .extern_func = "__floatuneidf" } },
115404115352 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
115405115353 .unused,
115406115354 .unused,
......@@ -115434,7 +115382,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
115434115382 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
115435115383 .{ .type = .usize, .kind = .{ .reg = .rdi } },
115436115384 .{ .type = .usize, .kind = .{ .reg = .rsi } },
115437 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuneidf" } } },
115385 .{ .type = .usize, .kind = .{ .extern_func = "__floatuneidf" } },
115438115386 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
115439115387 .unused,
115440115388 .unused,
......@@ -115468,7 +115416,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
115468115416 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
115469115417 .{ .type = .usize, .kind = .{ .reg = .rdi } },
115470115418 .{ .type = .usize, .kind = .{ .reg = .rsi } },
115471 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuneidf" } } },
115419 .{ .type = .usize, .kind = .{ .extern_func = "__floatuneidf" } },
115472115420 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
115473115421 .unused,
115474115422 .unused,
......@@ -115715,7 +115663,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
115715115663 },
115716115664 .call_frame = .{ .alignment = .@"16" },
115717115665 .extra_temps = .{
115718 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floattixf" } } },
115666 .{ .type = .usize, .kind = .{ .extern_func = "__floattixf" } },
115719115667 .unused,
115720115668 .unused,
115721115669 .unused,
......@@ -115741,7 +115689,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
115741115689 },
115742115690 .call_frame = .{ .alignment = .@"16" },
115743115691 .extra_temps = .{
115744 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuntixf" } } },
115692 .{ .type = .usize, .kind = .{ .extern_func = "__floatuntixf" } },
115745115693 .unused,
115746115694 .unused,
115747115695 .unused,
......@@ -115769,7 +115717,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
115769115717 .extra_temps = .{
115770115718 .{ .type = .usize, .kind = .{ .reg = .rdi } },
115771115719 .{ .type = .usize, .kind = .{ .reg = .rsi } },
115772 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floateixf" } } },
115720 .{ .type = .usize, .kind = .{ .extern_func = "__floateixf" } },
115773115721 .unused,
115774115722 .unused,
115775115723 .unused,
......@@ -115797,7 +115745,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
115797115745 .extra_temps = .{
115798115746 .{ .type = .usize, .kind = .{ .reg = .rdi } },
115799115747 .{ .type = .usize, .kind = .{ .reg = .rsi } },
115800 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuneixf" } } },
115748 .{ .type = .usize, .kind = .{ .extern_func = "__floatuneixf" } },
115801115749 .unused,
115802115750 .unused,
115803115751 .unused,
......@@ -115958,7 +115906,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
115958115906 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
115959115907 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
115960115908 .{ .type = .i32, .kind = .{ .reg = .edi } },
115961 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsixf" } } },
115909 .{ .type = .usize, .kind = .{ .extern_func = "__floatsixf" } },
115962115910 .{ .type = .f80, .kind = .{ .reg = .st7 } },
115963115911 .unused,
115964115912 .unused,
......@@ -115992,7 +115940,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
115992115940 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
115993115941 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
115994115942 .{ .type = .i32, .kind = .{ .reg = .edi } },
115995 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsixf" } } },
115943 .{ .type = .usize, .kind = .{ .extern_func = "__floatsixf" } },
115996115944 .{ .type = .f80, .kind = .{ .reg = .st7 } },
115997115945 .unused,
115998115946 .unused,
......@@ -116026,7 +115974,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116026115974 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
116027115975 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
116028115976 .{ .type = .u32, .kind = .{ .reg = .edi } },
116029 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsixf" } } },
115977 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsixf" } },
116030115978 .{ .type = .f80, .kind = .{ .reg = .st7 } },
116031115979 .unused,
116032115980 .unused,
......@@ -116060,7 +116008,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116060116008 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
116061116009 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
116062116010 .{ .type = .u32, .kind = .{ .reg = .edi } },
116063 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsixf" } } },
116011 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsixf" } },
116064116012 .{ .type = .f80, .kind = .{ .reg = .st7 } },
116065116013 .unused,
116066116014 .unused,
......@@ -116122,7 +116070,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116122116070 .extra_temps = .{
116123116071 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
116124116072 .{ .type = .i32, .kind = .{ .reg = .edi } },
116125 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsixf" } } },
116073 .{ .type = .usize, .kind = .{ .extern_func = "__floatsixf" } },
116126116074 .{ .type = .f80, .kind = .{ .reg = .st7 } },
116127116075 .unused,
116128116076 .unused,
......@@ -116154,7 +116102,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116154116102 .extra_temps = .{
116155116103 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
116156116104 .{ .type = .u32, .kind = .{ .reg = .edi } },
116157 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsixf" } } },
116105 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsixf" } },
116158116106 .{ .type = .f80, .kind = .{ .reg = .st7 } },
116159116107 .unused,
116160116108 .unused,
......@@ -116215,7 +116163,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116215116163 .extra_temps = .{
116216116164 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
116217116165 .{ .type = .i32, .kind = .{ .reg = .edi } },
116218 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsixf" } } },
116166 .{ .type = .usize, .kind = .{ .extern_func = "__floatsixf" } },
116219116167 .{ .type = .f80, .kind = .{ .reg = .st7 } },
116220116168 .unused,
116221116169 .unused,
......@@ -116247,7 +116195,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116247116195 .extra_temps = .{
116248116196 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
116249116197 .{ .type = .u32, .kind = .{ .reg = .edi } },
116250 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsixf" } } },
116198 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsixf" } },
116251116199 .{ .type = .f80, .kind = .{ .reg = .st7 } },
116252116200 .unused,
116253116201 .unused,
......@@ -116308,7 +116256,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116308116256 .extra_temps = .{
116309116257 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
116310116258 .{ .type = .i64, .kind = .{ .reg = .rdi } },
116311 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatdixf" } } },
116259 .{ .type = .usize, .kind = .{ .extern_func = "__floatdixf" } },
116312116260 .{ .type = .f80, .kind = .{ .reg = .st7 } },
116313116261 .unused,
116314116262 .unused,
......@@ -116340,7 +116288,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116340116288 .extra_temps = .{
116341116289 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
116342116290 .{ .type = .u64, .kind = .{ .reg = .rdi } },
116343 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatundixf" } } },
116291 .{ .type = .usize, .kind = .{ .extern_func = "__floatundixf" } },
116344116292 .{ .type = .f80, .kind = .{ .reg = .st7 } },
116345116293 .unused,
116346116294 .unused,
......@@ -116373,7 +116321,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116373116321 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
116374116322 .{ .type = .u64, .kind = .{ .reg = .rdi } },
116375116323 .{ .type = .i64, .kind = .{ .reg = .rsi } },
116376 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floattixf" } } },
116324 .{ .type = .usize, .kind = .{ .extern_func = "__floattixf" } },
116377116325 .{ .type = .f80, .kind = .{ .reg = .st7 } },
116378116326 .unused,
116379116327 .unused,
......@@ -116406,7 +116354,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116406116354 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
116407116355 .{ .type = .u64, .kind = .{ .reg = .rdi } },
116408116356 .{ .type = .u64, .kind = .{ .reg = .rsi } },
116409 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuntixf" } } },
116357 .{ .type = .usize, .kind = .{ .extern_func = "__floatuntixf" } },
116410116358 .{ .type = .f80, .kind = .{ .reg = .st7 } },
116411116359 .unused,
116412116360 .unused,
......@@ -116440,7 +116388,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116440116388 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
116441116389 .{ .type = .usize, .kind = .{ .reg = .rdi } },
116442116390 .{ .type = .usize, .kind = .{ .reg = .rsi } },
116443 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floateixf" } } },
116391 .{ .type = .usize, .kind = .{ .extern_func = "__floateixf" } },
116444116392 .{ .type = .f80, .kind = .{ .reg = .st7 } },
116445116393 .unused,
116446116394 .unused,
......@@ -116475,7 +116423,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116475116423 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
116476116424 .{ .type = .usize, .kind = .{ .reg = .rdi } },
116477116425 .{ .type = .usize, .kind = .{ .reg = .rsi } },
116478 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuneixf" } } },
116426 .{ .type = .usize, .kind = .{ .extern_func = "__floatuneixf" } },
116479116427 .{ .type = .f80, .kind = .{ .reg = .st7 } },
116480116428 .unused,
116481116429 .unused,
......@@ -116508,7 +116456,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116508116456 .call_frame = .{ .alignment = .@"16" },
116509116457 .extra_temps = .{
116510116458 .{ .type = .i32, .kind = .{ .reg = .edi } },
116511 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsitf" } } },
116459 .{ .type = .usize, .kind = .{ .extern_func = "__floatsitf" } },
116512116460 .unused,
116513116461 .unused,
116514116462 .unused,
......@@ -116536,7 +116484,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116536116484 .call_frame = .{ .alignment = .@"16" },
116537116485 .extra_temps = .{
116538116486 .{ .type = .u32, .kind = .{ .reg = .edi } },
116539 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsitf" } } },
116487 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsitf" } },
116540116488 .unused,
116541116489 .unused,
116542116490 .unused,
......@@ -116564,7 +116512,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116564116512 .call_frame = .{ .alignment = .@"16" },
116565116513 .extra_temps = .{
116566116514 .{ .type = .i32, .kind = .{ .reg = .edi } },
116567 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsitf" } } },
116515 .{ .type = .usize, .kind = .{ .extern_func = "__floatsitf" } },
116568116516 .unused,
116569116517 .unused,
116570116518 .unused,
......@@ -116592,7 +116540,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116592116540 .call_frame = .{ .alignment = .@"16" },
116593116541 .extra_temps = .{
116594116542 .{ .type = .u32, .kind = .{ .reg = .edi } },
116595 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsitf" } } },
116543 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsitf" } },
116596116544 .unused,
116597116545 .unused,
116598116546 .unused,
......@@ -116618,7 +116566,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116618116566 },
116619116567 .call_frame = .{ .alignment = .@"16" },
116620116568 .extra_temps = .{
116621 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsitf" } } },
116569 .{ .type = .usize, .kind = .{ .extern_func = "__floatsitf" } },
116622116570 .unused,
116623116571 .unused,
116624116572 .unused,
......@@ -116644,7 +116592,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116644116592 },
116645116593 .call_frame = .{ .alignment = .@"16" },
116646116594 .extra_temps = .{
116647 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsitf" } } },
116595 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsitf" } },
116648116596 .unused,
116649116597 .unused,
116650116598 .unused,
......@@ -116670,7 +116618,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116670116618 },
116671116619 .call_frame = .{ .alignment = .@"16" },
116672116620 .extra_temps = .{
116673 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatditf" } } },
116621 .{ .type = .usize, .kind = .{ .extern_func = "__floatditf" } },
116674116622 .unused,
116675116623 .unused,
116676116624 .unused,
......@@ -116696,7 +116644,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116696116644 },
116697116645 .call_frame = .{ .alignment = .@"16" },
116698116646 .extra_temps = .{
116699 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunditf" } } },
116647 .{ .type = .usize, .kind = .{ .extern_func = "__floatunditf" } },
116700116648 .unused,
116701116649 .unused,
116702116650 .unused,
......@@ -116722,7 +116670,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116722116670 },
116723116671 .call_frame = .{ .alignment = .@"16" },
116724116672 .extra_temps = .{
116725 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floattitf" } } },
116673 .{ .type = .usize, .kind = .{ .extern_func = "__floattitf" } },
116726116674 .unused,
116727116675 .unused,
116728116676 .unused,
......@@ -116748,7 +116696,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116748116696 },
116749116697 .call_frame = .{ .alignment = .@"16" },
116750116698 .extra_temps = .{
116751 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuntitf" } } },
116699 .{ .type = .usize, .kind = .{ .extern_func = "__floatuntitf" } },
116752116700 .unused,
116753116701 .unused,
116754116702 .unused,
......@@ -116776,7 +116724,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116776116724 .extra_temps = .{
116777116725 .{ .type = .usize, .kind = .{ .reg = .rdi } },
116778116726 .{ .type = .usize, .kind = .{ .reg = .rsi } },
116779 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floateitf" } } },
116727 .{ .type = .usize, .kind = .{ .extern_func = "__floateitf" } },
116780116728 .unused,
116781116729 .unused,
116782116730 .unused,
......@@ -116804,7 +116752,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116804116752 .extra_temps = .{
116805116753 .{ .type = .usize, .kind = .{ .reg = .rdi } },
116806116754 .{ .type = .usize, .kind = .{ .reg = .rsi } },
116807 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuneitf" } } },
116755 .{ .type = .usize, .kind = .{ .extern_func = "__floatuneitf" } },
116808116756 .unused,
116809116757 .unused,
116810116758 .unused,
......@@ -116833,7 +116781,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116833116781 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
116834116782 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
116835116783 .{ .type = .i32, .kind = .{ .reg = .edi } },
116836 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsitf" } } },
116784 .{ .type = .usize, .kind = .{ .extern_func = "__floatsitf" } },
116837116785 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
116838116786 .unused,
116839116787 .unused,
......@@ -116866,7 +116814,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116866116814 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
116867116815 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
116868116816 .{ .type = .i32, .kind = .{ .reg = .edi } },
116869 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsitf" } } },
116817 .{ .type = .usize, .kind = .{ .extern_func = "__floatsitf" } },
116870116818 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
116871116819 .unused,
116872116820 .unused,
......@@ -116899,7 +116847,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116899116847 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
116900116848 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
116901116849 .{ .type = .i32, .kind = .{ .reg = .edi } },
116902 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsitf" } } },
116850 .{ .type = .usize, .kind = .{ .extern_func = "__floatsitf" } },
116903116851 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
116904116852 .unused,
116905116853 .unused,
......@@ -116932,7 +116880,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116932116880 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
116933116881 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
116934116882 .{ .type = .i32, .kind = .{ .reg = .edi } },
116935 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsitf" } } },
116883 .{ .type = .usize, .kind = .{ .extern_func = "__floatsitf" } },
116936116884 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
116937116885 .unused,
116938116886 .unused,
......@@ -116965,7 +116913,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116965116913 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
116966116914 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
116967116915 .{ .type = .i32, .kind = .{ .reg = .edi } },
116968 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsitf" } } },
116916 .{ .type = .usize, .kind = .{ .extern_func = "__floatsitf" } },
116969116917 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
116970116918 .unused,
116971116919 .unused,
......@@ -116998,7 +116946,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116998116946 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
116999116947 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
117000116948 .{ .type = .i32, .kind = .{ .reg = .edi } },
117001 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsitf" } } },
116949 .{ .type = .usize, .kind = .{ .extern_func = "__floatsitf" } },
117002116950 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
117003116951 .unused,
117004116952 .unused,
......@@ -117031,7 +116979,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
117031116979 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
117032116980 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
117033116981 .{ .type = .u32, .kind = .{ .reg = .edi } },
117034 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsitf" } } },
116982 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsitf" } },
117035116983 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
117036116984 .unused,
117037116985 .unused,
......@@ -117064,7 +117012,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
117064117012 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
117065117013 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
117066117014 .{ .type = .u32, .kind = .{ .reg = .edi } },
117067 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsitf" } } },
117015 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsitf" } },
117068117016 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
117069117017 .unused,
117070117018 .unused,
......@@ -117097,7 +117045,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
117097117045 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
117098117046 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
117099117047 .{ .type = .u32, .kind = .{ .reg = .edi } },
117100 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsitf" } } },
117048 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsitf" } },
117101117049 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
117102117050 .unused,
117103117051 .unused,
......@@ -117130,7 +117078,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
117130117078 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
117131117079 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
117132117080 .{ .type = .u32, .kind = .{ .reg = .edi } },
117133 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsitf" } } },
117081 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsitf" } },
117134117082 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
117135117083 .unused,
117136117084 .unused,
......@@ -117163,7 +117111,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
117163117111 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
117164117112 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
117165117113 .{ .type = .u32, .kind = .{ .reg = .edi } },
117166 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsitf" } } },
117114 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsitf" } },
117167117115 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
117168117116 .unused,
117169117117 .unused,
......@@ -117196,7 +117144,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
117196117144 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
117197117145 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
117198117146 .{ .type = .u32, .kind = .{ .reg = .edi } },
117199 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsitf" } } },
117147 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsitf" } },
117200117148 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
117201117149 .unused,
117202117150 .unused,
......@@ -117228,7 +117176,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
117228117176 .extra_temps = .{
117229117177 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
117230117178 .{ .type = .i32, .kind = .{ .reg = .edi } },
117231 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsitf" } } },
117179 .{ .type = .usize, .kind = .{ .extern_func = "__floatsitf" } },
117232117180 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
117233117181 .unused,
117234117182 .unused,
......@@ -117259,7 +117207,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
117259117207 .extra_temps = .{
117260117208 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
117261117209 .{ .type = .i32, .kind = .{ .reg = .edi } },
117262 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsitf" } } },
117210 .{ .type = .usize, .kind = .{ .extern_func = "__floatsitf" } },
117263117211 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
117264117212 .unused,
117265117213 .unused,
......@@ -117290,7 +117238,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
117290117238 .extra_temps = .{
117291117239 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
117292117240 .{ .type = .i32, .kind = .{ .reg = .edi } },
117293 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsitf" } } },
117241 .{ .type = .usize, .kind = .{ .extern_func = "__floatsitf" } },
117294117242 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
117295117243 .unused,
117296117244 .unused,
......@@ -117321,7 +117269,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
117321117269 .extra_temps = .{
117322117270 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
117323117271 .{ .type = .u32, .kind = .{ .reg = .edi } },
117324 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsitf" } } },
117272 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsitf" } },
117325117273 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
117326117274 .unused,
117327117275 .unused,
......@@ -117352,7 +117300,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
117352117300 .extra_temps = .{
117353117301 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
117354117302 .{ .type = .u32, .kind = .{ .reg = .edi } },
117355 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsitf" } } },
117303 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsitf" } },
117356117304 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
117357117305 .unused,
117358117306 .unused,
......@@ -117383,7 +117331,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
117383117331 .extra_temps = .{
117384117332 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
117385117333 .{ .type = .u32, .kind = .{ .reg = .edi } },
117386 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsitf" } } },
117334 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsitf" } },
117387117335 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
117388117336 .unused,
117389117337 .unused,
......@@ -117414,7 +117362,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
117414117362 .extra_temps = .{
117415117363 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
117416117364 .{ .type = .i32, .kind = .{ .reg = .edi } },
117417 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsitf" } } },
117365 .{ .type = .usize, .kind = .{ .extern_func = "__floatsitf" } },
117418117366 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
117419117367 .unused,
117420117368 .unused,
......@@ -117445,7 +117393,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
117445117393 .extra_temps = .{
117446117394 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
117447117395 .{ .type = .i32, .kind = .{ .reg = .edi } },
117448 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsitf" } } },
117396 .{ .type = .usize, .kind = .{ .extern_func = "__floatsitf" } },
117449117397 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
117450117398 .unused,
117451117399 .unused,
......@@ -117476,7 +117424,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
117476117424 .extra_temps = .{
117477117425 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
117478117426 .{ .type = .i32, .kind = .{ .reg = .edi } },
117479 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsitf" } } },
117427 .{ .type = .usize, .kind = .{ .extern_func = "__floatsitf" } },
117480117428 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
117481117429 .unused,
117482117430 .unused,
......@@ -117507,7 +117455,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
117507117455 .extra_temps = .{
117508117456 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
117509117457 .{ .type = .u32, .kind = .{ .reg = .edi } },
117510 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsitf" } } },
117458 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsitf" } },
117511117459 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
117512117460 .unused,
117513117461 .unused,
......@@ -117538,7 +117486,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
117538117486 .extra_temps = .{
117539117487 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
117540117488 .{ .type = .u32, .kind = .{ .reg = .edi } },
117541 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsitf" } } },
117489 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsitf" } },
117542117490 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
117543117491 .unused,
117544117492 .unused,
......@@ -117569,7 +117517,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
117569117517 .extra_temps = .{
117570117518 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
117571117519 .{ .type = .u32, .kind = .{ .reg = .edi } },
117572 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsitf" } } },
117520 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsitf" } },
117573117521 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
117574117522 .unused,
117575117523 .unused,
......@@ -117600,7 +117548,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
117600117548 .extra_temps = .{
117601117549 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
117602117550 .{ .type = .i64, .kind = .{ .reg = .rdi } },
117603 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatditf" } } },
117551 .{ .type = .usize, .kind = .{ .extern_func = "__floatditf" } },
117604117552 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
117605117553 .unused,
117606117554 .unused,
......@@ -117631,7 +117579,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
117631117579 .extra_temps = .{
117632117580 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
117633117581 .{ .type = .i64, .kind = .{ .reg = .rdi } },
117634 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatditf" } } },
117582 .{ .type = .usize, .kind = .{ .extern_func = "__floatditf" } },
117635117583 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
117636117584 .unused,
117637117585 .unused,
......@@ -117662,7 +117610,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
117662117610 .extra_temps = .{
117663117611 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
117664117612 .{ .type = .i64, .kind = .{ .reg = .rdi } },
117665 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatditf" } } },
117613 .{ .type = .usize, .kind = .{ .extern_func = "__floatditf" } },
117666117614 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
117667117615 .unused,
117668117616 .unused,
......@@ -117693,7 +117641,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
117693117641 .extra_temps = .{
117694117642 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
117695117643 .{ .type = .u64, .kind = .{ .reg = .rdi } },
117696 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunditf" } } },
117644 .{ .type = .usize, .kind = .{ .extern_func = "__floatunditf" } },
117697117645 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
117698117646 .unused,
117699117647 .unused,
......@@ -117724,7 +117672,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
117724117672 .extra_temps = .{
117725117673 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
117726117674 .{ .type = .u64, .kind = .{ .reg = .rdi } },
117727 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunditf" } } },
117675 .{ .type = .usize, .kind = .{ .extern_func = "__floatunditf" } },
117728117676 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
117729117677 .unused,
117730117678 .unused,
......@@ -117755,7 +117703,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
117755117703 .extra_temps = .{
117756117704 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
117757117705 .{ .type = .u64, .kind = .{ .reg = .rdi } },
117758 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunditf" } } },
117706 .{ .type = .usize, .kind = .{ .extern_func = "__floatunditf" } },
117759117707 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
117760117708 .unused,
117761117709 .unused,
......@@ -117787,7 +117735,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
117787117735 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
117788117736 .{ .type = .u64, .kind = .{ .reg = .rdi } },
117789117737 .{ .type = .i64, .kind = .{ .reg = .rsi } },
117790 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floattitf" } } },
117738 .{ .type = .usize, .kind = .{ .extern_func = "__floattitf" } },
117791117739 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
117792117740 .unused,
117793117741 .unused,
......@@ -117819,7 +117767,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
117819117767 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
117820117768 .{ .type = .u64, .kind = .{ .reg = .rdi } },
117821117769 .{ .type = .i64, .kind = .{ .reg = .rsi } },
117822 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floattitf" } } },
117770 .{ .type = .usize, .kind = .{ .extern_func = "__floattitf" } },
117823117771 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
117824117772 .unused,
117825117773 .unused,
......@@ -117851,7 +117799,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
117851117799 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
117852117800 .{ .type = .u64, .kind = .{ .reg = .rdi } },
117853117801 .{ .type = .i64, .kind = .{ .reg = .rsi } },
117854 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floattitf" } } },
117802 .{ .type = .usize, .kind = .{ .extern_func = "__floattitf" } },
117855117803 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
117856117804 .unused,
117857117805 .unused,
......@@ -117883,7 +117831,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
117883117831 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
117884117832 .{ .type = .u64, .kind = .{ .reg = .rdi } },
117885117833 .{ .type = .u64, .kind = .{ .reg = .rsi } },
117886 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuntitf" } } },
117834 .{ .type = .usize, .kind = .{ .extern_func = "__floatuntitf" } },
117887117835 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
117888117836 .unused,
117889117837 .unused,
......@@ -117915,7 +117863,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
117915117863 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
117916117864 .{ .type = .u64, .kind = .{ .reg = .rdi } },
117917117865 .{ .type = .u64, .kind = .{ .reg = .rsi } },
117918 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuntitf" } } },
117866 .{ .type = .usize, .kind = .{ .extern_func = "__floatuntitf" } },
117919117867 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
117920117868 .unused,
117921117869 .unused,
......@@ -117947,7 +117895,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
117947117895 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
117948117896 .{ .type = .u64, .kind = .{ .reg = .rdi } },
117949117897 .{ .type = .u64, .kind = .{ .reg = .rsi } },
117950 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuntitf" } } },
117898 .{ .type = .usize, .kind = .{ .extern_func = "__floatuntitf" } },
117951117899 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
117952117900 .unused,
117953117901 .unused,
......@@ -117980,7 +117928,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
117980117928 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
117981117929 .{ .type = .usize, .kind = .{ .reg = .rdi } },
117982117930 .{ .type = .usize, .kind = .{ .reg = .rsi } },
117983 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floateitf" } } },
117931 .{ .type = .usize, .kind = .{ .extern_func = "__floateitf" } },
117984117932 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
117985117933 .unused,
117986117934 .unused,
......@@ -118014,7 +117962,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
118014117962 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
118015117963 .{ .type = .usize, .kind = .{ .reg = .rdi } },
118016117964 .{ .type = .usize, .kind = .{ .reg = .rsi } },
118017 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floateitf" } } },
117965 .{ .type = .usize, .kind = .{ .extern_func = "__floateitf" } },
118018117966 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
118019117967 .unused,
118020117968 .unused,
......@@ -118048,7 +117996,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
118048117996 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
118049117997 .{ .type = .usize, .kind = .{ .reg = .rdi } },
118050117998 .{ .type = .usize, .kind = .{ .reg = .rsi } },
118051 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floateitf" } } },
117999 .{ .type = .usize, .kind = .{ .extern_func = "__floateitf" } },
118052118000 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
118053118001 .unused,
118054118002 .unused,
......@@ -118082,7 +118030,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
118082118030 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
118083118031 .{ .type = .usize, .kind = .{ .reg = .rdi } },
118084118032 .{ .type = .usize, .kind = .{ .reg = .rsi } },
118085 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuneitf" } } },
118033 .{ .type = .usize, .kind = .{ .extern_func = "__floatuneitf" } },
118086118034 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
118087118035 .unused,
118088118036 .unused,
......@@ -118116,7 +118064,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
118116118064 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
118117118065 .{ .type = .usize, .kind = .{ .reg = .rdi } },
118118118066 .{ .type = .usize, .kind = .{ .reg = .rsi } },
118119 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuneitf" } } },
118067 .{ .type = .usize, .kind = .{ .extern_func = "__floatuneitf" } },
118120118068 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
118121118069 .unused,
118122118070 .unused,
......@@ -118150,7 +118098,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
118150118098 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
118151118099 .{ .type = .usize, .kind = .{ .reg = .rdi } },
118152118100 .{ .type = .usize, .kind = .{ .reg = .rsi } },
118153 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuneitf" } } },
118101 .{ .type = .usize, .kind = .{ .extern_func = "__floatuneitf" } },
118154118102 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
118155118103 .unused,
118156118104 .unused,
......@@ -131865,7 +131813,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
131865131813 .extra_temps = .{
131866131814 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
131867131815 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
131868 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fminh" } } },
131816 .{ .type = .usize, .kind = .{ .extern_func = "__fminh" } },
131869131817 .unused,
131870131818 .unused,
131871131819 .unused,
......@@ -131898,7 +131846,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
131898131846 .extra_temps = .{
131899131847 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
131900131848 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
131901 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fminh" } } },
131849 .{ .type = .usize, .kind = .{ .extern_func = "__fminh" } },
131902131850 .unused,
131903131851 .unused,
131904131852 .unused,
......@@ -131933,7 +131881,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
131933131881 .{ .type = .f16, .kind = .{ .reg = .ax } },
131934131882 .{ .type = .f32, .kind = .mem },
131935131883 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
131936 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fminh" } } },
131884 .{ .type = .usize, .kind = .{ .extern_func = "__fminh" } },
131937131885 .unused,
131938131886 .unused,
131939131887 .unused,
......@@ -133533,7 +133481,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
133533133481 .extra_temps = .{
133534133482 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
133535133483 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
133536 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fminq" } } },
133484 .{ .type = .usize, .kind = .{ .extern_func = "fminq" } },
133537133485 .unused,
133538133486 .unused,
133539133487 .unused,
......@@ -133564,7 +133512,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
133564133512 .extra_temps = .{
133565133513 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
133566133514 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
133567 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fminq" } } },
133515 .{ .type = .usize, .kind = .{ .extern_func = "fminq" } },
133568133516 .unused,
133569133517 .unused,
133570133518 .unused,
......@@ -133595,7 +133543,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
133595133543 .extra_temps = .{
133596133544 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
133597133545 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
133598 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fminq" } } },
133546 .{ .type = .usize, .kind = .{ .extern_func = "fminq" } },
133599133547 .unused,
133600133548 .unused,
133601133549 .unused,
......@@ -141985,7 +141933,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
141985141933 .extra_temps = .{
141986141934 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
141987141935 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
141988 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmaxh" } } },
141936 .{ .type = .usize, .kind = .{ .extern_func = "__fmaxh" } },
141989141937 .unused,
141990141938 .unused,
141991141939 .unused,
......@@ -142018,7 +141966,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
142018141966 .extra_temps = .{
142019141967 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
142020141968 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
142021 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmaxh" } } },
141969 .{ .type = .usize, .kind = .{ .extern_func = "__fmaxh" } },
142022141970 .unused,
142023141971 .unused,
142024141972 .unused,
......@@ -142053,7 +142001,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
142053142001 .{ .type = .f16, .kind = .{ .reg = .ax } },
142054142002 .{ .type = .f32, .kind = .mem },
142055142003 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
142056 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmaxh" } } },
142004 .{ .type = .usize, .kind = .{ .extern_func = "__fmaxh" } },
142057142005 .unused,
142058142006 .unused,
142059142007 .unused,
......@@ -143661,7 +143609,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
143661143609 .extra_temps = .{
143662143610 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
143663143611 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
143664 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmaxq" } } },
143612 .{ .type = .usize, .kind = .{ .extern_func = "fmaxq" } },
143665143613 .unused,
143666143614 .unused,
143667143615 .unused,
......@@ -143692,7 +143640,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
143692143640 .extra_temps = .{
143693143641 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
143694143642 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
143695 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmaxq" } } },
143643 .{ .type = .usize, .kind = .{ .extern_func = "fmaxq" } },
143696143644 .unused,
143697143645 .unused,
143698143646 .unused,
......@@ -143723,7 +143671,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
143723143671 .extra_temps = .{
143724143672 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
143725143673 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
143726 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmaxq" } } },
143674 .{ .type = .usize, .kind = .{ .extern_func = "fmaxq" } },
143727143675 .unused,
143728143676 .unused,
143729143677 .unused,
......@@ -147656,7 +147604,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
147656147604 .extra_temps = .{
147657147605 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
147658147606 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
147659 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addhf3" } } },
147607 .{ .type = .usize, .kind = .{ .extern_func = "__addhf3" } },
147660147608 .unused,
147661147609 .unused,
147662147610 .unused,
......@@ -147689,7 +147637,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
147689147637 .extra_temps = .{
147690147638 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
147691147639 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
147692 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addhf3" } } },
147640 .{ .type = .usize, .kind = .{ .extern_func = "__addhf3" } },
147693147641 .unused,
147694147642 .unused,
147695147643 .unused,
......@@ -147724,7 +147672,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
147724147672 .{ .type = .f16, .kind = .{ .reg = .ax } },
147725147673 .{ .type = .f32, .kind = .mem },
147726147674 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
147727 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addhf3" } } },
147675 .{ .type = .usize, .kind = .{ .extern_func = "__addhf3" } },
147728147676 .unused,
147729147677 .unused,
147730147678 .unused,
......@@ -148241,7 +148189,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
148241148189 .extra_temps = .{
148242148190 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
148243148191 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
148244 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addtf3" } } },
148192 .{ .type = .usize, .kind = .{ .extern_func = "__addtf3" } },
148245148193 .unused,
148246148194 .unused,
148247148195 .unused,
......@@ -148272,7 +148220,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
148272148220 .extra_temps = .{
148273148221 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
148274148222 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
148275 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addtf3" } } },
148223 .{ .type = .usize, .kind = .{ .extern_func = "__addtf3" } },
148276148224 .unused,
148277148225 .unused,
148278148226 .unused,
......@@ -148303,7 +148251,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
148303148251 .extra_temps = .{
148304148252 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
148305148253 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
148306 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addtf3" } } },
148254 .{ .type = .usize, .kind = .{ .extern_func = "__addtf3" } },
148307148255 .unused,
148308148256 .unused,
148309148257 .unused,
......@@ -151315,7 +151263,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
151315151263 .extra_temps = .{
151316151264 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
151317151265 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
151318 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__mulhf3" } } },
151266 .{ .type = .usize, .kind = .{ .extern_func = "__mulhf3" } },
151319151267 .unused,
151320151268 .unused,
151321151269 .unused,
......@@ -151348,7 +151296,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
151348151296 .extra_temps = .{
151349151297 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
151350151298 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
151351 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__mulhf3" } } },
151299 .{ .type = .usize, .kind = .{ .extern_func = "__mulhf3" } },
151352151300 .unused,
151353151301 .unused,
151354151302 .unused,
......@@ -151383,7 +151331,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
151383151331 .{ .type = .f16, .kind = .{ .reg = .ax } },
151384151332 .{ .type = .f32, .kind = .mem },
151385151333 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
151386 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__mulhf3" } } },
151334 .{ .type = .usize, .kind = .{ .extern_func = "__mulhf3" } },
151387151335 .unused,
151388151336 .unused,
151389151337 .unused,
......@@ -151780,7 +151728,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
151780151728 .extra_temps = .{
151781151729 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
151782151730 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
151783 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__multf3" } } },
151731 .{ .type = .usize, .kind = .{ .extern_func = "__multf3" } },
151784151732 .unused,
151785151733 .unused,
151786151734 .unused,
......@@ -151811,7 +151759,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
151811151759 .extra_temps = .{
151812151760 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
151813151761 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
151814 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__multf3" } } },
151762 .{ .type = .usize, .kind = .{ .extern_func = "__multf3" } },
151815151763 .unused,
151816151764 .unused,
151817151765 .unused,
......@@ -151842,7 +151790,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
151842151790 .extra_temps = .{
151843151791 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
151844151792 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
151845 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__multf3" } } },
151793 .{ .type = .usize, .kind = .{ .extern_func = "__multf3" } },
151846151794 .unused,
151847151795 .unused,
151848151796 .unused,
......@@ -152354,7 +152302,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
152354152302 .extra_temps = .{
152355152303 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
152356152304 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
152357 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fminh" } } },
152305 .{ .type = .usize, .kind = .{ .extern_func = "__fminh" } },
152358152306 .unused,
152359152307 .unused,
152360152308 .unused,
......@@ -152387,7 +152335,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
152387152335 .extra_temps = .{
152388152336 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
152389152337 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
152390 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fminh" } } },
152338 .{ .type = .usize, .kind = .{ .extern_func = "__fminh" } },
152391152339 .unused,
152392152340 .unused,
152393152341 .unused,
......@@ -152422,7 +152370,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
152422152370 .{ .type = .f16, .kind = .{ .reg = .ax } },
152423152371 .{ .type = .f32, .kind = .mem },
152424152372 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
152425 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fminh" } } },
152373 .{ .type = .usize, .kind = .{ .extern_func = "__fminh" } },
152426152374 .unused,
152427152375 .unused,
152428152376 .unused,
......@@ -153502,7 +153450,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
153502153450 .extra_temps = .{
153503153451 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
153504153452 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
153505 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fminq" } } },
153453 .{ .type = .usize, .kind = .{ .extern_func = "fminq" } },
153506153454 .unused,
153507153455 .unused,
153508153456 .unused,
......@@ -153533,7 +153481,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
153533153481 .extra_temps = .{
153534153482 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
153535153483 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
153536 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fminq" } } },
153484 .{ .type = .usize, .kind = .{ .extern_func = "fminq" } },
153537153485 .unused,
153538153486 .unused,
153539153487 .unused,
......@@ -153564,7 +153512,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
153564153512 .extra_temps = .{
153565153513 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
153566153514 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
153567 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fminq" } } },
153515 .{ .type = .usize, .kind = .{ .extern_func = "fminq" } },
153568153516 .unused,
153569153517 .unused,
153570153518 .unused,
......@@ -154046,7 +153994,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
154046153994 .extra_temps = .{
154047153995 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
154048153996 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
154049 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmaxh" } } },
153997 .{ .type = .usize, .kind = .{ .extern_func = "__fmaxh" } },
154050153998 .unused,
154051153999 .unused,
154052154000 .unused,
......@@ -154079,7 +154027,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
154079154027 .extra_temps = .{
154080154028 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
154081154029 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
154082 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmaxh" } } },
154030 .{ .type = .usize, .kind = .{ .extern_func = "__fmaxh" } },
154083154031 .unused,
154084154032 .unused,
154085154033 .unused,
......@@ -154114,7 +154062,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
154114154062 .{ .type = .f16, .kind = .{ .reg = .ax } },
154115154063 .{ .type = .f32, .kind = .mem },
154116154064 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
154117 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmaxh" } } },
154065 .{ .type = .usize, .kind = .{ .extern_func = "__fmaxh" } },
154118154066 .unused,
154119154067 .unused,
154120154068 .unused,
......@@ -155194,7 +155142,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
155194155142 .extra_temps = .{
155195155143 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
155196155144 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
155197 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmaxq" } } },
155145 .{ .type = .usize, .kind = .{ .extern_func = "fmaxq" } },
155198155146 .unused,
155199155147 .unused,
155200155148 .unused,
......@@ -155225,7 +155173,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
155225155173 .extra_temps = .{
155226155174 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
155227155175 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
155228 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmaxq" } } },
155176 .{ .type = .usize, .kind = .{ .extern_func = "fmaxq" } },
155229155177 .unused,
155230155178 .unused,
155231155179 .unused,
......@@ -155256,7 +155204,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
155256155204 .extra_temps = .{
155257155205 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
155258155206 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
155259 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmaxq" } } },
155207 .{ .type = .usize, .kind = .{ .extern_func = "fmaxq" } },
155260155208 .unused,
155261155209 .unused,
155262155210 .unused,
......@@ -155987,7 +155935,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
155987155935 .extra_temps = .{
155988155936 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
155989155937 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
155990 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addhf3" } } },
155938 .{ .type = .usize, .kind = .{ .extern_func = "__addhf3" } },
155991155939 .unused,
155992155940 .unused,
155993155941 .unused,
......@@ -156020,7 +155968,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
156020155968 .extra_temps = .{
156021155969 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
156022155970 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
156023 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addhf3" } } },
155971 .{ .type = .usize, .kind = .{ .extern_func = "__addhf3" } },
156024155972 .unused,
156025155973 .unused,
156026155974 .unused,
......@@ -156055,7 +156003,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
156055156003 .{ .type = .f16, .kind = .{ .reg = .ax } },
156056156004 .{ .type = .f32, .kind = .mem },
156057156005 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
156058 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addhf3" } } },
156006 .{ .type = .usize, .kind = .{ .extern_func = "__addhf3" } },
156059156007 .unused,
156060156008 .unused,
156061156009 .unused,
......@@ -157453,7 +157401,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
157453157401 .extra_temps = .{
157454157402 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
157455157403 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
157456 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addtf3" } } },
157404 .{ .type = .usize, .kind = .{ .extern_func = "__addtf3" } },
157457157405 .unused,
157458157406 .unused,
157459157407 .unused,
......@@ -157484,7 +157432,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
157484157432 .extra_temps = .{
157485157433 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
157486157434 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
157487 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addtf3" } } },
157435 .{ .type = .usize, .kind = .{ .extern_func = "__addtf3" } },
157488157436 .unused,
157489157437 .unused,
157490157438 .unused,
......@@ -157515,7 +157463,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
157515157463 .extra_temps = .{
157516157464 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
157517157465 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
157518 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addtf3" } } },
157466 .{ .type = .usize, .kind = .{ .extern_func = "__addtf3" } },
157519157467 .unused,
157520157468 .unused,
157521157469 .unused,
......@@ -157997,7 +157945,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
157997157945 .extra_temps = .{
157998157946 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
157999157947 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
158000 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__mulhf3" } } },
157948 .{ .type = .usize, .kind = .{ .extern_func = "__mulhf3" } },
158001157949 .unused,
158002157950 .unused,
158003157951 .unused,
......@@ -158030,7 +157978,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
158030157978 .extra_temps = .{
158031157979 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
158032157980 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
158033 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__mulhf3" } } },
157981 .{ .type = .usize, .kind = .{ .extern_func = "__mulhf3" } },
158034157982 .unused,
158035157983 .unused,
158036157984 .unused,
......@@ -158065,7 +158013,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
158065158013 .{ .type = .f16, .kind = .{ .reg = .ax } },
158066158014 .{ .type = .f32, .kind = .mem },
158067158015 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
158068 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__mulhf3" } } },
158016 .{ .type = .usize, .kind = .{ .extern_func = "__mulhf3" } },
158069158017 .unused,
158070158018 .unused,
158071158019 .unused,
......@@ -158996,7 +158944,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
158996158944 .extra_temps = .{
158997158945 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
158998158946 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
158999 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__multf3" } } },
158947 .{ .type = .usize, .kind = .{ .extern_func = "__multf3" } },
159000158948 .unused,
159001158949 .unused,
159002158950 .unused,
......@@ -159027,7 +158975,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
159027158975 .extra_temps = .{
159028158976 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
159029158977 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
159030 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__multf3" } } },
158978 .{ .type = .usize, .kind = .{ .extern_func = "__multf3" } },
159031158979 .unused,
159032158980 .unused,
159033158981 .unused,
......@@ -159058,7 +159006,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
159058159006 .extra_temps = .{
159059159007 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
159060159008 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
159061 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__multf3" } } },
159009 .{ .type = .usize, .kind = .{ .extern_func = "__multf3" } },
159062159010 .unused,
159063159011 .unused,
159064159012 .unused,
......@@ -160939,7 +160887,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
160939160887 },
160940160888 .call_frame = .{ .alignment = .@"16" },
160941160889 .extra_temps = .{
160942 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = @tagName(symbol) } } },
160890 .{ .type = .usize, .kind = .{ .extern_func = @tagName(symbol) } },
160943160891 .unused,
160944160892 .unused,
160945160893 .unused,
......@@ -160988,7 +160936,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
160988160936 },
160989160937 .call_frame = .{ .alignment = .@"32" },
160990160938 .extra_temps = .{
160991 .{ .type = .usize, .kind = .{ .lazy_symbol = .{ .kind = .code, .ref = .src0 } } },
160939 .{ .type = .usize, .kind = .{ .lazy_sym = .{ .kind = .code, .ref = .src0 } } },
160992160940 .unused,
160993160941 .unused,
160994160942 .unused,
......@@ -161014,7 +160962,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
161014160962 },
161015160963 .call_frame = .{ .alignment = .@"16" },
161016160964 .extra_temps = .{
161017 .{ .type = .usize, .kind = .{ .lazy_symbol = .{ .kind = .code, .ref = .src0 } } },
160965 .{ .type = .usize, .kind = .{ .lazy_sym = .{ .kind = .code, .ref = .src0 } } },
161018160966 .unused,
161019160967 .unused,
161020160968 .unused,
......@@ -161039,7 +160987,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
161039160987 },
161040160988 .call_frame = .{ .alignment = .@"8" },
161041160989 .extra_temps = .{
161042 .{ .type = .usize, .kind = .{ .lazy_symbol = .{ .kind = .code, .ref = .src0 } } },
160990 .{ .type = .usize, .kind = .{ .lazy_sym = .{ .kind = .code, .ref = .src0 } } },
161043160991 .unused,
161044160992 .unused,
161045160993 .unused,
......@@ -161079,7 +161027,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
161079161027 },
161080161028 .call_frame = .{ .alignment = .@"32" },
161081161029 .extra_temps = .{
161082 .{ .type = .usize, .kind = .{ .lazy_symbol = .{ .kind = .code, .ref = .src0 } } },
161030 .{ .type = .usize, .kind = .{ .lazy_sym = .{ .kind = .code, .ref = .src0 } } },
161083161031 .unused,
161084161032 .unused,
161085161033 .unused,
......@@ -161104,7 +161052,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
161104161052 },
161105161053 .call_frame = .{ .alignment = .@"16" },
161106161054 .extra_temps = .{
161107 .{ .type = .usize, .kind = .{ .lazy_symbol = .{ .kind = .code, .ref = .src0 } } },
161055 .{ .type = .usize, .kind = .{ .lazy_sym = .{ .kind = .code, .ref = .src0 } } },
161108161056 .unused,
161109161057 .unused,
161110161058 .unused,
......@@ -161128,7 +161076,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
161128161076 },
161129161077 .call_frame = .{ .alignment = .@"8" },
161130161078 .extra_temps = .{
161131 .{ .type = .usize, .kind = .{ .lazy_symbol = .{ .kind = .code, .ref = .src0 } } },
161079 .{ .type = .usize, .kind = .{ .lazy_sym = .{ .kind = .code, .ref = .src0 } } },
161132161080 .unused,
161133161081 .unused,
161134161082 .unused,
......@@ -161167,7 +161115,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
161167161115 .{ .src = .{ .to_gpr, .none, .none } },
161168161116 },
161169161117 .extra_temps = .{
161170 .{ .type = .anyerror, .kind = .{ .lazy_symbol = .{ .kind = .const_data } } },
161118 .{ .type = .anyerror, .kind = .{ .lazy_sym = .{ .kind = .const_data } } },
161171161119 .{ .type = .u32, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } } },
161172161120 .unused,
161173161121 .unused,
......@@ -161196,7 +161144,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
161196161144 .{ .src = .{ .to_gpr, .none, .none } },
161197161145 },
161198161146 .extra_temps = .{
161199 .{ .type = .anyerror, .kind = .{ .lazy_symbol = .{ .kind = .const_data } } },
161147 .{ .type = .anyerror, .kind = .{ .lazy_sym = .{ .kind = .const_data } } },
161200161148 .{ .type = .u32, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } } },
161201161149 .unused,
161202161150 .unused,
......@@ -161225,7 +161173,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
161225161173 .{ .src = .{ .to_gpr, .none, .none } },
161226161174 },
161227161175 .extra_temps = .{
161228 .{ .type = .anyerror, .kind = .{ .lazy_symbol = .{ .kind = .const_data } } },
161176 .{ .type = .anyerror, .kind = .{ .lazy_sym = .{ .kind = .const_data } } },
161229161177 .{ .type = .u32, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } } },
161230161178 .unused,
161231161179 .unused,
......@@ -161276,7 +161224,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
161276161224 },
161277161225 .call_frame = .{ .alignment = .@"32" },
161278161226 .extra_temps = .{
161279 .{ .type = .usize, .kind = .{ .lazy_symbol = .{ .kind = .code, .ref = .src1 } } },
161227 .{ .type = .usize, .kind = .{ .lazy_sym = .{ .kind = .code, .ref = .src1 } } },
161280161228 .unused,
161281161229 .unused,
161282161230 .unused,
......@@ -161302,7 +161250,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
161302161250 },
161303161251 .call_frame = .{ .alignment = .@"16" },
161304161252 .extra_temps = .{
161305 .{ .type = .usize, .kind = .{ .lazy_symbol = .{ .kind = .code, .ref = .src1 } } },
161253 .{ .type = .usize, .kind = .{ .lazy_sym = .{ .kind = .code, .ref = .src1 } } },
161306161254 .unused,
161307161255 .unused,
161308161256 .unused,
......@@ -161327,7 +161275,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
161327161275 },
161328161276 .call_frame = .{ .alignment = .@"8" },
161329161277 .extra_temps = .{
161330 .{ .type = .usize, .kind = .{ .lazy_symbol = .{ .kind = .code, .ref = .src1 } } },
161278 .{ .type = .usize, .kind = .{ .lazy_sym = .{ .kind = .code, .ref = .src1 } } },
161331161279 .unused,
161332161280 .unused,
161333161281 .unused,
......@@ -161523,7 +161471,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
161523161471 },
161524161472 .call_frame = .{ .alignment = .@"16" },
161525161473 .extra_temps = .{
161526 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmah" } } },
161474 .{ .type = .usize, .kind = .{ .extern_func = "__fmah" } },
161527161475 .unused,
161528161476 .unused,
161529161477 .unused,
......@@ -161666,7 +161614,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
161666161614 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
161667161615 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
161668161616 .{ .type = .f16, .kind = .{ .reg = .xmm2 } },
161669 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmah" } } },
161617 .{ .type = .usize, .kind = .{ .extern_func = "__fmah" } },
161670161618 .unused,
161671161619 .unused,
161672161620 .unused,
......@@ -161703,7 +161651,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
161703161651 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
161704161652 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
161705161653 .{ .type = .f16, .kind = .{ .reg = .xmm2 } },
161706 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmah" } } },
161654 .{ .type = .usize, .kind = .{ .extern_func = "__fmah" } },
161707161655 .unused,
161708161656 .unused,
161709161657 .unused,
......@@ -161742,7 +161690,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
161742161690 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
161743161691 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
161744161692 .{ .type = .f16, .kind = .{ .reg = .xmm2 } },
161745 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmah" } } },
161693 .{ .type = .usize, .kind = .{ .extern_func = "__fmah" } },
161746161694 .{ .type = .f16, .kind = .{ .reg = .ax } },
161747161695 .unused,
161748161696 .unused,
......@@ -161784,7 +161732,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
161784161732 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
161785161733 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
161786161734 .{ .type = .f16, .kind = .{ .reg = .xmm2 } },
161787 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmah" } } },
161735 .{ .type = .usize, .kind = .{ .extern_func = "__fmah" } },
161788161736 .unused,
161789161737 .unused,
161790161738 .unused,
......@@ -161872,7 +161820,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
161872161820 },
161873161821 .call_frame = .{ .alignment = .@"16" },
161874161822 .extra_temps = .{
161875 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmaf" } } },
161823 .{ .type = .usize, .kind = .{ .extern_func = "fmaf" } },
161876161824 .unused,
161877161825 .unused,
161878161826 .unused,
......@@ -162038,7 +161986,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
162038161986 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
162039161987 .{ .type = .f32, .kind = .{ .reg = .xmm1 } },
162040161988 .{ .type = .f32, .kind = .{ .reg = .xmm2 } },
162041 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmaf" } } },
161989 .{ .type = .usize, .kind = .{ .extern_func = "fmaf" } },
162042161990 .unused,
162043161991 .unused,
162044161992 .unused,
......@@ -162074,7 +162022,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
162074162022 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
162075162023 .{ .type = .f32, .kind = .{ .reg = .xmm1 } },
162076162024 .{ .type = .f32, .kind = .{ .reg = .xmm2 } },
162077 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmaf" } } },
162025 .{ .type = .usize, .kind = .{ .extern_func = "fmaf" } },
162078162026 .unused,
162079162027 .unused,
162080162028 .unused,
......@@ -162156,7 +162104,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
162156162104 },
162157162105 .call_frame = .{ .alignment = .@"16" },
162158162106 .extra_temps = .{
162159 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fma" } } },
162107 .{ .type = .usize, .kind = .{ .extern_func = "fma" } },
162160162108 .unused,
162161162109 .unused,
162162162110 .unused,
......@@ -162322,7 +162270,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
162322162270 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
162323162271 .{ .type = .f64, .kind = .{ .reg = .xmm1 } },
162324162272 .{ .type = .f64, .kind = .{ .reg = .xmm2 } },
162325 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fma" } } },
162273 .{ .type = .usize, .kind = .{ .extern_func = "fma" } },
162326162274 .unused,
162327162275 .unused,
162328162276 .unused,
......@@ -162358,7 +162306,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
162358162306 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
162359162307 .{ .type = .f64, .kind = .{ .reg = .xmm1 } },
162360162308 .{ .type = .f64, .kind = .{ .reg = .xmm2 } },
162361 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fma" } } },
162309 .{ .type = .usize, .kind = .{ .extern_func = "fma" } },
162362162310 .unused,
162363162311 .unused,
162364162312 .unused,
......@@ -162394,7 +162342,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
162394162342 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
162395162343 .{ .type = .f64, .kind = .{ .reg = .xmm1 } },
162396162344 .{ .type = .f64, .kind = .{ .reg = .xmm2 } },
162397 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fma" } } },
162345 .{ .type = .usize, .kind = .{ .extern_func = "fma" } },
162398162346 .unused,
162399162347 .unused,
162400162348 .unused,
......@@ -162431,7 +162379,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
162431162379 .extra_temps = .{
162432162380 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
162433162381 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
162434 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmax" } } },
162382 .{ .type = .usize, .kind = .{ .extern_func = "__fmax" } },
162435162383 .unused,
162436162384 .unused,
162437162385 .unused,
......@@ -162467,7 +162415,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
162467162415 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
162468162416 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
162469162417 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
162470 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmax" } } },
162418 .{ .type = .usize, .kind = .{ .extern_func = "__fmax" } },
162471162419 .unused,
162472162420 .unused,
162473162421 .unused,
......@@ -162504,7 +162452,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
162504162452 },
162505162453 .call_frame = .{ .alignment = .@"16" },
162506162454 .extra_temps = .{
162507 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmaq" } } },
162455 .{ .type = .usize, .kind = .{ .extern_func = "fmaq" } },
162508162456 .unused,
162509162457 .unused,
162510162458 .unused,
......@@ -162537,7 +162485,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
162537162485 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
162538162486 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
162539162487 .{ .type = .f128, .kind = .{ .reg = .xmm2 } },
162540 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmaq" } } },
162488 .{ .type = .usize, .kind = .{ .extern_func = "fmaq" } },
162541162489 .unused,
162542162490 .unused,
162543162491 .unused,
......@@ -162573,7 +162521,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
162573162521 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
162574162522 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
162575162523 .{ .type = .f128, .kind = .{ .reg = .xmm2 } },
162576 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmaq" } } },
162524 .{ .type = .usize, .kind = .{ .extern_func = "fmaq" } },
162577162525 .unused,
162578162526 .unused,
162579162527 .unused,
......@@ -162609,7 +162557,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
162609162557 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
162610162558 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
162611162559 .{ .type = .f128, .kind = .{ .reg = .xmm2 } },
162612 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmaq" } } },
162560 .{ .type = .usize, .kind = .{ .extern_func = "fmaq" } },
162613162561 .unused,
162614162562 .unused,
162615162563 .unused,
......@@ -162663,7 +162611,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
162663162611 .{ .src = .{ .to_gpr, .none, .none } },
162664162612 },
162665162613 .extra_temps = .{
162666 .{ .type = .anyerror, .kind = .{ .lazy_symbol = .{ .kind = .const_data } } },
162614 .{ .type = .anyerror, .kind = .{ .lazy_sym = .{ .kind = .const_data } } },
162667162615 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
162668162616 .unused,
162669162617 .unused,
......@@ -162687,7 +162635,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
162687162635 .{ .src = .{ .to_gpr, .none, .none } },
162688162636 },
162689162637 .extra_temps = .{
162690 .{ .type = .anyerror, .kind = .{ .lazy_symbol = .{ .kind = .const_data } } },
162638 .{ .type = .anyerror, .kind = .{ .lazy_sym = .{ .kind = .const_data } } },
162691162639 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
162692162640 .unused,
162693162641 .unused,
......@@ -162711,7 +162659,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
162711162659 .{ .src = .{ .to_gpr, .none, .none } },
162712162660 },
162713162661 .extra_temps = .{
162714 .{ .type = .anyerror, .kind = .{ .lazy_symbol = .{ .kind = .const_data } } },
162662 .{ .type = .anyerror, .kind = .{ .lazy_sym = .{ .kind = .const_data } } },
162715162663 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
162716162664 .unused,
162717162665 .unused,
......@@ -163402,65 +163350,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
163402163350 };
163403163351 for (ops) |op| try op.die(cg);
163404163352 },
163405 .runtime_nav_ptr => switch (cg.bin_file.tag) {
163406 .elf, .macho => {
163407 const ty_nav = air_datas[@intFromEnum(inst)].ty_nav;
163408
163409 const nav = ip.getNav(ty_nav.nav);
163410 const sym_index, const relocation = sym: {
163411 if (cg.bin_file.cast(.elf)) |elf_file| {
163412 const zo = elf_file.zigObjectPtr().?;
163413 if (nav.getExtern(ip)) |e| {
163414 const sym = try elf_file.getGlobalSymbol(nav.name.toSlice(ip), e.lib_name.toSlice(ip));
163415 linkage: switch (e.linkage) {
163416 .internal => {},
163417 .strong => switch (e.visibility) {
163418 .default => zo.symbol(sym).flags.is_extern_ptr = true,
163419 .hidden, .protected => {},
163420 },
163421 .weak => {
163422 zo.symbol(sym).flags.weak = true;
163423 continue :linkage .strong;
163424 },
163425 .link_once => unreachable,
163426 }
163427 break :sym .{ sym, e.relocation };
163428 } else break :sym .{ try zo.getOrCreateMetadataForNav(zcu, ty_nav.nav), .any };
163429 } else if (cg.bin_file.cast(.macho)) |macho_file| {
163430 const zo = macho_file.getZigObject().?;
163431 if (nav.getExtern(ip)) |e| {
163432 const sym = try macho_file.getGlobalSymbol(nav.name.toSlice(ip), e.lib_name.toSlice(ip));
163433 linkage: switch (e.linkage) {
163434 .internal => {},
163435 .strong => switch (e.visibility) {
163436 .default => zo.symbols.items[sym].flags.is_extern_ptr = true,
163437 .hidden, .protected => {},
163438 },
163439 .weak => {
163440 zo.symbols.items[sym].flags.weak = true;
163441 continue :linkage .strong;
163442 },
163443 .link_once => unreachable,
163444 }
163445 break :sym .{ sym, e.relocation };
163446 } else break :sym .{ try zo.getOrCreateMetadataForNav(macho_file, ty_nav.nav), .any };
163447 } else unreachable;
163448 };
163449
163450 if (cg.mod.pic) {
163451 try cg.spillRegisters(&.{ .rdi, .rax });
163452 } else {
163453 try cg.spillRegisters(&.{.rax});
163454 }
163455
163456 var slot = try cg.tempInit(.usize, switch (relocation) {
163457 .any => .{ .lea_symbol = .{ .sym_index = sym_index } },
163458 .pcrel => .{ .lea_pcrel = .{ .sym_index = sym_index } },
163459 });
163460 while (try slot.toRegClass(true, .general_purpose, cg)) {}
163461 try slot.finish(inst, &.{}, &.{}, cg);
163462 },
163463 else => return cg.fail("TODO implement runtime_nav_ptr on {}", .{cg.bin_file.tag}),
163353 .runtime_nav_ptr => {
163354 const ty_nav = air_datas[@intFromEnum(inst)].ty_nav;
163355 const is_threadlocal = ip.getNav(ty_nav.nav).isThreadlocal(ip);
163356 if (is_threadlocal) if (cg.mod.pic) {
163357 try cg.spillRegisters(&.{ .rdi, .rax });
163358 } else {
163359 try cg.spillRegisters(&.{.rax});
163360 };
163361 var res = try cg.tempInit(.fromInterned(ty_nav.ty), .{ .lea_nav = ty_nav.nav });
163362 if (is_threadlocal) while (try res.toRegClass(true, .general_purpose, cg)) {};
163363 try res.finish(inst, &.{}, &.{}, cg);
163464163364 },
163465163365 .c_va_arg => try cg.airVaArg(inst),
163466163366 .c_va_copy => try cg.airVaCopy(inst),
......@@ -164116,11 +164016,11 @@ fn airFptrunc(self: *CodeGen, inst: Air.Inst.Index) !void {
164116164016 },
164117164017 else => unreachable,
164118164018 }) {
164119 var callee_buf: ["__trunc?f?f2".len]u8 = undefined;
164120 break :result try self.genCall(.{ .lib = .{
164019 var sym_buf: ["__trunc?f?f2".len]u8 = undefined;
164020 break :result try self.genCall(.{ .extern_func = .{
164121164021 .return_type = self.floatCompilerRtAbiType(dst_ty, src_ty).toIntern(),
164122164022 .param_types = &.{self.floatCompilerRtAbiType(src_ty, dst_ty).toIntern()},
164123 .callee = std.fmt.bufPrint(&callee_buf, "__trunc{c}f{c}f2", .{
164023 .sym = std.fmt.bufPrint(&sym_buf, "__trunc{c}f{c}f2", .{
164124164024 floatCompilerRtAbiName(src_bits),
164125164025 floatCompilerRtAbiName(dst_bits),
164126164026 }) catch unreachable,
......@@ -164220,11 +164120,11 @@ fn airFpext(self: *CodeGen, inst: Air.Inst.Index) !void {
164220164120 else => unreachable,
164221164121 }) {
164222164122 if (dst_ty.isVector(zcu)) break :result null;
164223 var callee_buf: ["__extend?f?f2".len]u8 = undefined;
164224 break :result try self.genCall(.{ .lib = .{
164123 var sym_buf: ["__extend?f?f2".len]u8 = undefined;
164124 break :result try self.genCall(.{ .extern_func = .{
164225164125 .return_type = self.floatCompilerRtAbiType(dst_scalar_ty, src_scalar_ty).toIntern(),
164226164126 .param_types = &.{self.floatCompilerRtAbiType(src_scalar_ty, dst_scalar_ty).toIntern()},
164227 .callee = std.fmt.bufPrint(&callee_buf, "__extend{c}f{c}f2", .{
164127 .sym = std.fmt.bufPrint(&sym_buf, "__extend{c}f{c}f2", .{
164228164128 floatCompilerRtAbiName(src_bits),
164229164129 floatCompilerRtAbiName(dst_bits),
164230164130 }) catch unreachable,
......@@ -164661,7 +164561,7 @@ fn airTrunc(self: *CodeGen, inst: Air.Inst.Index) !void {
164661164561 .storage = .{ .repeated_elem = mask_val.ip_index },
164662164562 } });
164663164563
164664 const splat_mcv = try self.genTypedValue(.fromInterned(splat_val));
164564 const splat_mcv = try self.lowerValue(.fromInterned(splat_val));
164665164565 const splat_addr_mcv: MCValue = switch (splat_mcv) {
164666164566 .memory, .indirect, .load_frame => splat_mcv.address(),
164667164567 else => .{ .register = try self.copyToTmpRegister(.usize, splat_mcv.address()) },
......@@ -164860,7 +164760,7 @@ fn airMulDivBinOp(self: *CodeGen, inst: Air.Inst.Index, tag: Air.Inst.Tag) !void
164860164760 .mul, .mul_wrap => {},
164861164761 .div_trunc, .div_floor, .div_exact, .rem, .mod => {
164862164762 const signed = dst_ty.isSignedInt(zcu);
164863 var callee_buf: ["__udiv?i3".len]u8 = undefined;
164763 var sym_buf: ["__udiv?i3".len]u8 = undefined;
164864164764 const signed_div_floor_state: struct {
164865164765 frame_index: FrameIndex,
164866164766 state: State,
......@@ -164879,7 +164779,7 @@ fn airMulDivBinOp(self: *CodeGen, inst: Air.Inst.Index, tag: Air.Inst.Tag) !void
164879164779
164880164780 const lhs_mcv = try self.resolveInst(bin_op.lhs);
164881164781 const mat_lhs_mcv = switch (lhs_mcv) {
164882 .load_symbol => mat_lhs_mcv: {
164782 .load_nav, .load_uav, .load_lazy_sym => mat_lhs_mcv: {
164883164783 // TODO clean this up!
164884164784 const addr_reg = try self.copyToTmpRegister(.usize, lhs_mcv.address());
164885164785 break :mat_lhs_mcv MCValue{ .indirect = .{ .reg = addr_reg } };
......@@ -164903,7 +164803,7 @@ fn airMulDivBinOp(self: *CodeGen, inst: Air.Inst.Index, tag: Air.Inst.Tag) !void
164903164803
164904164804 const rhs_mcv = try self.resolveInst(bin_op.rhs);
164905164805 const mat_rhs_mcv = switch (rhs_mcv) {
164906 .load_symbol => mat_rhs_mcv: {
164806 .load_nav, .load_uav, .load_lazy_sym => mat_rhs_mcv: {
164907164807 // TODO clean this up!
164908164808 const addr_reg = try self.copyToTmpRegister(.usize, rhs_mcv.address());
164909164809 break :mat_rhs_mcv MCValue{ .indirect = .{ .reg = addr_reg } };
......@@ -164930,10 +164830,10 @@ fn airMulDivBinOp(self: *CodeGen, inst: Air.Inst.Index, tag: Air.Inst.Tag) !void
164930164830 break :state .{ .frame_index = frame_index, .state = state, .reloc = reloc };
164931164831 } else undefined;
164932164832 const call_mcv = try self.genCall(
164933 .{ .lib = .{
164833 .{ .extern_func = .{
164934164834 .return_type = dst_ty.toIntern(),
164935164835 .param_types = &.{ src_ty.toIntern(), src_ty.toIntern() },
164936 .callee = std.fmt.bufPrint(&callee_buf, "__{s}{s}{c}i3", .{
164836 .sym = std.fmt.bufPrint(&sym_buf, "__{s}{s}{c}i3", .{
164937164837 if (signed) "" else "u",
164938164838 switch (tag) {
164939164839 .div_trunc, .div_exact => "div",
......@@ -164967,10 +164867,10 @@ fn airMulDivBinOp(self: *CodeGen, inst: Air.Inst.Index, tag: Air.Inst.Tag) !void
164967164867 });
164968164868 self.performReloc(signed_div_floor_state.reloc);
164969164869 const dst_mcv = try self.genCall(
164970 .{ .lib = .{
164870 .{ .extern_func = .{
164971164871 .return_type = dst_ty.toIntern(),
164972164872 .param_types = &.{ src_ty.toIntern(), src_ty.toIntern() },
164973 .callee = std.fmt.bufPrint(&callee_buf, "__div{c}i3", .{
164873 .sym = std.fmt.bufPrint(&sym_buf, "__div{c}i3", .{
164974164874 intCompilerRtAbiName(@intCast(dst_ty.bitSize(zcu))),
164975164875 }) catch unreachable,
164976164876 } },
......@@ -165004,7 +164904,7 @@ fn airMulDivBinOp(self: *CodeGen, inst: Air.Inst.Index, tag: Air.Inst.Tag) !void
165004164904
165005164905 const rhs_mcv = try self.resolveInst(bin_op.rhs);
165006164906 const mat_rhs_mcv = switch (rhs_mcv) {
165007 .load_symbol => mat_rhs_mcv: {
164907 .load_nav, .load_uav, .load_lazy_sym => mat_rhs_mcv: {
165008164908 // TODO clean this up!
165009164909 const addr_reg = try self.copyToTmpRegister(.usize, rhs_mcv.address());
165010164910 break :mat_rhs_mcv MCValue{ .indirect = .{ .reg = addr_reg } };
......@@ -165218,10 +165118,10 @@ fn airMulSat(self: *CodeGen, inst: Air.Inst.Index) !void {
165218165118 const ptr_c_int = try pt.singleMutPtrType(.c_int);
165219165119 const overflow = try self.allocTempRegOrMem(.c_int, false);
165220165120
165221 const dst_mcv = try self.genCall(.{ .lib = .{
165121 const dst_mcv = try self.genCall(.{ .extern_func = .{
165222165122 .return_type = .i128_type,
165223165123 .param_types = &.{ .i128_type, .i128_type, ptr_c_int.toIntern() },
165224 .callee = "__muloti4",
165124 .sym = "__muloti4",
165225165125 } }, &.{ .i128, .i128, ptr_c_int }, &.{
165226165126 .{ .air_ref = bin_op.lhs },
165227165127 .{ .air_ref = bin_op.rhs },
......@@ -165236,7 +165136,7 @@ fn airMulSat(self: *CodeGen, inst: Air.Inst.Index) !void {
165236165136
165237165137 const lhs_mcv = try self.resolveInst(bin_op.lhs);
165238165138 const mat_lhs_mcv = switch (lhs_mcv) {
165239 .load_symbol => mat_lhs_mcv: {
165139 .load_nav, .load_uav, .load_lazy_sym => mat_lhs_mcv: {
165240165140 // TODO clean this up!
165241165141 const addr_reg = try self.copyToTmpRegister(.usize, lhs_mcv.address());
165242165142 break :mat_lhs_mcv MCValue{ .indirect = .{ .reg = addr_reg } };
......@@ -165260,7 +165160,7 @@ fn airMulSat(self: *CodeGen, inst: Air.Inst.Index) !void {
165260165160
165261165161 const rhs_mcv = try self.resolveInst(bin_op.rhs);
165262165162 const mat_rhs_mcv = switch (rhs_mcv) {
165263 .load_symbol => mat_rhs_mcv: {
165163 .load_nav, .load_uav, .load_lazy_sym => mat_rhs_mcv: {
165264165164 // TODO clean this up!
165265165165 const addr_reg = try self.copyToTmpRegister(.usize, rhs_mcv.address());
165266165166 break :mat_rhs_mcv MCValue{ .indirect = .{ .reg = addr_reg } };
......@@ -165734,10 +165634,10 @@ fn airMulWithOverflow(self: *CodeGen, inst: Air.Inst.Index) !void {
165734165634 .signed => {
165735165635 const ptr_c_int = try pt.singleMutPtrType(.c_int);
165736165636 const overflow = try self.allocTempRegOrMem(.c_int, false);
165737 const result = try self.genCall(.{ .lib = .{
165637 const result = try self.genCall(.{ .extern_func = .{
165738165638 .return_type = .i128_type,
165739165639 .param_types = &.{ .i128_type, .i128_type, ptr_c_int.toIntern() },
165740 .callee = "__muloti4",
165640 .sym = "__muloti4",
165741165641 } }, &.{ .i128, .i128, ptr_c_int }, &.{
165742165642 .{ .air_ref = bin_op.lhs },
165743165643 .{ .air_ref = bin_op.rhs },
......@@ -165791,7 +165691,7 @@ fn airMulWithOverflow(self: *CodeGen, inst: Air.Inst.Index) !void {
165791165691 break :mat_lhs_mcv mat_lhs_mcv;
165792165692 },
165793165693 },
165794 .load_symbol => {
165694 .load_nav, .load_uav, .load_lazy_sym => {
165795165695 // TODO clean this up!
165796165696 const addr_reg = try self.copyToTmpRegister(.usize, lhs_mcv.address());
165797165697 break :mat_lhs_mcv MCValue{ .indirect = .{ .reg = addr_reg } };
......@@ -165815,7 +165715,7 @@ fn airMulWithOverflow(self: *CodeGen, inst: Air.Inst.Index) !void {
165815165715 break :mat_rhs_mcv mat_rhs_mcv;
165816165716 },
165817165717 },
165818 .load_symbol => {
165718 .load_nav, .load_uav, .load_lazy_sym => {
165819165719 // TODO clean this up!
165820165720 const addr_reg = try self.copyToTmpRegister(.usize, rhs_mcv.address());
165821165721 break :mat_rhs_mcv MCValue{ .indirect = .{ .reg = addr_reg } };
......@@ -166291,7 +166191,7 @@ fn airShlShrBinOp(self: *CodeGen, inst: Air.Inst.Index) !void {
166291166191 defer self.register_manager.unlockReg(shift_lock);
166292166192
166293166193 const mask_ty = try pt.vectorType(.{ .len = 16, .child = .u8_type });
166294 const mask_mcv = try self.genTypedValue(.fromInterned(try pt.intern(.{ .aggregate = .{
166194 const mask_mcv = try self.lowerValue(.fromInterned(try pt.intern(.{ .aggregate = .{
166295166195 .ty = mask_ty.toIntern(),
166296166196 .storage = .{ .elems = &([1]InternPool.Index{
166297166197 (try rhs_ty.childType(zcu).maxIntScalar(pt, .u8)).toIntern(),
......@@ -166432,7 +166332,7 @@ fn airShlSat(self: *CodeGen, inst: Air.Inst.Index) !void {
166432166332 // if lhs is negative, it is min
166433166333 switch (lhs_ty.intInfo(zcu).signedness) {
166434166334 .unsigned => {
166435 const bound_mcv = try self.genTypedValue(try lhs_ty.maxIntScalar(self.pt, lhs_ty));
166335 const bound_mcv = try self.lowerValue(try lhs_ty.maxIntScalar(self.pt, lhs_ty));
166436166336 try self.genCopy(lhs_ty, dst_mcv, bound_mcv, .{});
166437166337 },
166438166338 .signed => {
......@@ -166441,7 +166341,7 @@ fn airShlSat(self: *CodeGen, inst: Air.Inst.Index) !void {
166441166341 // we only need the highest bit so shifting the highest part of lhs_mcv
166442166342 // is enough to check the signedness. other parts can be skipped here.
166443166343 var lhs_temp2 = try self.tempInit(lhs_ty, lhs_mcv);
166444 var zero_temp = try self.tempInit(lhs_ty, try self.genTypedValue(try self.pt.intValue(lhs_ty, 0)));
166344 var zero_temp = try self.tempInit(lhs_ty, try self.lowerValue(try self.pt.intValue(lhs_ty, 0)));
166445166345 const sign_cc_temp = lhs_temp2.cmpInts(.lt, &zero_temp, self) catch |err| switch (err) {
166446166346 error.SelectFailed => unreachable,
166447166347 else => |e| return e,
......@@ -166452,13 +166352,13 @@ fn airShlSat(self: *CodeGen, inst: Air.Inst.Index) !void {
166452166352 try sign_cc_temp.die(self);
166453166353
166454166354 // if it is negative
166455 const min_mcv = try self.genTypedValue(try lhs_ty.minIntScalar(self.pt, lhs_ty));
166355 const min_mcv = try self.lowerValue(try lhs_ty.minIntScalar(self.pt, lhs_ty));
166456166356 try self.genCopy(lhs_ty, dst_mcv, min_mcv, .{});
166457166357 const sign_reloc_br = try self.asmJmpReloc(undefined);
166458166358 self.performReloc(sign_reloc_condbr);
166459166359
166460166360 // if it is positive
166461 const max_mcv = try self.genTypedValue(try lhs_ty.maxIntScalar(self.pt, lhs_ty));
166361 const max_mcv = try self.lowerValue(try lhs_ty.maxIntScalar(self.pt, lhs_ty));
166462166362 try self.genCopy(lhs_ty, dst_mcv, max_mcv, .{});
166463166363 self.performReloc(sign_reloc_br);
166464166364 },
......@@ -167179,7 +167079,12 @@ fn airArrayElemVal(self: *CodeGen, inst: Air.Inst.Index) !void {
167179167079 }.to64(),
167180167080 ),
167181167081 },
167182 .memory, .load_symbol, .load_direct, .load_got => switch (index_mcv) {
167082 .memory,
167083 .load_nav,
167084 .load_uav,
167085 .load_lazy_sym,
167086 .load_extern_func,
167087 => switch (index_mcv) {
167183167088 .immediate => |index_imm| try self.asmMemoryImmediate(
167184167089 .{ ._, .bt },
167185167090 .{
......@@ -167241,11 +167146,15 @@ fn airArrayElemVal(self: *CodeGen, inst: Air.Inst.Index) !void {
167241167146 },
167242167147 ),
167243167148 .memory,
167244 .load_symbol,
167245 .load_direct,
167246 .load_got,
167149 .load_nav,
167150 .lea_nav,
167151 .load_uav,
167152 .lea_uav,
167153 .load_lazy_sym,
167154 .lea_lazy_sym,
167155 .load_extern_func,
167156 .lea_extern_func,
167247167157 => try self.genSetReg(addr_reg, .usize, array_mcv.address(), .{}),
167248 .lea_symbol, .lea_direct => unreachable,
167249167158 else => return self.fail("TODO airArrayElemVal_val for {s} of {}", .{
167250167159 @tagName(array_mcv), array_ty.fmt(pt),
167251167160 }),
......@@ -168346,7 +168255,7 @@ fn floatSign(self: *CodeGen, inst: Air.Inst.Index, tag: Air.Inst.Tag, operand: A
168346168255 .child = (try pt.intType(.signed, scalar_bits)).ip_index,
168347168256 });
168348168257
168349 const sign_mcv = try self.genTypedValue(switch (tag) {
168258 const sign_mcv = try self.lowerValue(switch (tag) {
168350168259 .neg => try vec_ty.minInt(pt, vec_ty),
168351168260 .abs => try vec_ty.maxInt(pt, vec_ty),
168352168261 else => unreachable,
......@@ -168488,11 +168397,11 @@ fn genRoundLibcall(self: *CodeGen, ty: Type, src_mcv: MCValue, mode: bits.RoundM
168488168397 if (ty.zigTypeTag(zcu) != .float)
168489168398 return self.fail("TODO implement genRound for {}", .{ty.fmt(pt)});
168490168399
168491 var callee_buf: ["__trunc?".len]u8 = undefined;
168492 return try self.genCall(.{ .lib = .{
168400 var sym_buf: ["__trunc?".len]u8 = undefined;
168401 return try self.genCall(.{ .extern_func = .{
168493168402 .return_type = ty.toIntern(),
168494168403 .param_types = &.{ty.toIntern()},
168495 .callee = std.fmt.bufPrint(&callee_buf, "{s}{s}{s}", .{
168404 .sym = std.fmt.bufPrint(&sym_buf, "{s}{s}{s}", .{
168496168405 floatLibcAbiPrefix(ty),
168497168406 switch (mode.direction) {
168498168407 .down => "floor",
......@@ -168765,11 +168674,11 @@ fn airSqrt(self: *CodeGen, inst: Air.Inst.Index) !void {
168765168674 80, 128 => true,
168766168675 else => unreachable,
168767168676 }) {
168768 var callee_buf: ["__sqrt?".len]u8 = undefined;
168769 break :result try self.genCall(.{ .lib = .{
168677 var sym_buf: ["__sqrt?".len]u8 = undefined;
168678 break :result try self.genCall(.{ .extern_func = .{
168770168679 .return_type = ty.toIntern(),
168771168680 .param_types = &.{ty.toIntern()},
168772 .callee = std.fmt.bufPrint(&callee_buf, "{s}sqrt{s}", .{
168681 .sym = std.fmt.bufPrint(&sym_buf, "{s}sqrt{s}", .{
168773168682 floatLibcAbiPrefix(ty),
168774168683 floatLibcAbiSuffix(ty),
168775168684 }) catch unreachable,
......@@ -168918,11 +168827,11 @@ fn airSqrt(self: *CodeGen, inst: Air.Inst.Index) !void {
168918168827fn airUnaryMath(self: *CodeGen, inst: Air.Inst.Index, tag: Air.Inst.Tag) !void {
168919168828 const un_op = self.air.instructions.items(.data)[@intFromEnum(inst)].un_op;
168920168829 const ty = self.typeOf(un_op);
168921 var callee_buf: ["__round?".len]u8 = undefined;
168922 const result = try self.genCall(.{ .lib = .{
168830 var sym_buf: ["__round?".len]u8 = undefined;
168831 const result = try self.genCall(.{ .extern_func = .{
168923168832 .return_type = ty.toIntern(),
168924168833 .param_types = &.{ty.toIntern()},
168925 .callee = std.fmt.bufPrint(&callee_buf, "{s}{s}{s}", .{
168834 .sym = std.fmt.bufPrint(&sym_buf, "{s}{s}{s}", .{
168926168835 floatLibcAbiPrefix(ty),
168927168836 switch (tag) {
168928168837 .sin,
......@@ -169122,19 +169031,19 @@ fn load(self: *CodeGen, dst_mcv: MCValue, ptr_ty: Type, ptr_mcv: MCValue) InnerE
169122169031 .immediate,
169123169032 .register,
169124169033 .register_offset,
169125 .lea_symbol,
169126 .lea_pcrel,
169127 .lea_direct,
169128 .lea_got,
169129169034 .lea_frame,
169035 .lea_nav,
169036 .lea_uav,
169037 .lea_lazy_sym,
169038 .lea_extern_func,
169130169039 => try self.genCopy(dst_ty, dst_mcv, ptr_mcv.deref(), .{}),
169131169040 .memory,
169132169041 .indirect,
169133 .load_symbol,
169134 .load_pcrel,
169135 .load_direct,
169136 .load_got,
169137169042 .load_frame,
169043 .load_nav,
169044 .load_uav,
169045 .load_lazy_sym,
169046 .load_extern_func,
169138169047 => {
169139169048 const addr_reg = try self.copyToTmpRegister(ptr_ty, ptr_mcv);
169140169049 const addr_lock = self.register_manager.lockRegAssumeUnused(addr_reg);
......@@ -169342,19 +169251,19 @@ fn store(
169342169251 .immediate,
169343169252 .register,
169344169253 .register_offset,
169345 .lea_symbol,
169346 .lea_pcrel,
169347 .lea_direct,
169348 .lea_got,
169349169254 .lea_frame,
169255 .lea_nav,
169256 .lea_uav,
169257 .lea_lazy_sym,
169258 .lea_extern_func,
169350169259 => try self.genCopy(src_ty, ptr_mcv.deref(), src_mcv, opts),
169351169260 .memory,
169352169261 .indirect,
169353 .load_symbol,
169354 .load_pcrel,
169355 .load_direct,
169356 .load_got,
169357169262 .load_frame,
169263 .load_nav,
169264 .load_uav,
169265 .load_lazy_sym,
169266 .load_extern_func,
169358169267 => {
169359169268 const addr_reg = try self.copyToTmpRegister(ptr_ty, ptr_mcv);
169360169269 const addr_lock = self.register_manager.lockRegAssumeUnused(addr_reg);
......@@ -169820,18 +169729,18 @@ fn genUnOpMir(self: *CodeGen, mir_tag: Mir.Inst.FixedTag, dst_ty: Type, dst_mcv:
169820169729 .eflags,
169821169730 .register_overflow,
169822169731 .register_mask,
169823 .lea_symbol,
169824 .lea_pcrel,
169825 .lea_direct,
169826 .lea_got,
169827169732 .lea_frame,
169733 .lea_nav,
169734 .lea_uav,
169735 .lea_lazy_sym,
169736 .lea_extern_func,
169828169737 .elementwise_args,
169829169738 .reserved_frame,
169830169739 .air_ref,
169831169740 => unreachable, // unmodifiable destination
169832169741 .register => |dst_reg| try self.asmRegister(mir_tag, registerAlias(dst_reg, abi_size)),
169833169742 .register_pair, .register_triple, .register_quadruple => unreachable, // unimplemented
169834 .memory, .load_symbol, .load_pcrel, .load_got, .load_direct => {
169743 .memory, .load_nav, .load_uav, .load_lazy_sym, .load_extern_func => {
169835169744 const addr_reg = try self.register_manager.allocReg(null, abi.RegisterClass.gp);
169836169745 const addr_reg_lock = self.register_manager.lockRegAssumeUnused(addr_reg);
169837169746 defer self.register_manager.unlockReg(addr_reg_lock);
......@@ -170591,7 +170500,7 @@ fn genMulDivBinOp(
170591170500 defer for (reg_locks) |reg_lock| if (reg_lock) |lock| self.register_manager.unlockReg(lock);
170592170501
170593170502 const mat_lhs_mcv = switch (lhs_mcv) {
170594 .load_symbol => mat_lhs_mcv: {
170503 .load_nav, .load_uav, .load_lazy_sym => mat_lhs_mcv: {
170595170504 // TODO clean this up!
170596170505 const addr_reg = try self.copyToTmpRegister(.usize, lhs_mcv.address());
170597170506 break :mat_lhs_mcv MCValue{ .indirect = .{ .reg = addr_reg } };
......@@ -170604,7 +170513,7 @@ fn genMulDivBinOp(
170604170513 };
170605170514 defer if (mat_lhs_lock) |lock| self.register_manager.unlockReg(lock);
170606170515 const mat_rhs_mcv = switch (rhs_mcv) {
170607 .load_symbol => mat_rhs_mcv: {
170516 .load_nav, .load_uav, .load_lazy_sym => mat_rhs_mcv: {
170608170517 // TODO clean this up!
170609170518 const addr_reg = try self.copyToTmpRegister(.usize, rhs_mcv.address());
170610170519 break :mat_rhs_mcv MCValue{ .indirect = .{ .reg = addr_reg } };
......@@ -170772,7 +170681,7 @@ fn genMulDivBinOp(
170772170681 .is_const = true,
170773170682 },
170774170683 });
170775 _ = try self.genCall(.{ .lib = .{
170684 _ = try self.genCall(.{ .extern_func = .{
170776170685 .return_type = .void_type,
170777170686 .param_types = &.{
170778170687 manyptr_u32_ty.toIntern(),
......@@ -170780,7 +170689,7 @@ fn genMulDivBinOp(
170780170689 manyptr_const_u32_ty.toIntern(),
170781170690 .usize_type,
170782170691 },
170783 .callee = switch (tag) {
170692 .sym = switch (tag) {
170784170693 .div_trunc,
170785170694 .div_floor,
170786170695 .div_exact,
......@@ -171003,8 +170912,8 @@ fn genBinOp(
171003170912 .rem, .mod => {},
171004170913 else => if (!type_needs_libcall) break :libcall,
171005170914 }
171006 var callee_buf: ["__mod?f3".len]u8 = undefined;
171007 const callee = switch (air_tag) {
170915 var sym_buf: ["__mod?f3".len]u8 = undefined;
170916 const sym = switch (air_tag) {
171008170917 .add,
171009170918 .sub,
171010170919 .mul,
......@@ -171012,11 +170921,11 @@ fn genBinOp(
171012170921 .div_trunc,
171013170922 .div_floor,
171014170923 .div_exact,
171015 => std.fmt.bufPrint(&callee_buf, "__{s}{c}f3", .{
170924 => std.fmt.bufPrint(&sym_buf, "__{s}{c}f3", .{
171016170925 @tagName(air_tag)[0..3],
171017170926 floatCompilerRtAbiName(float_bits),
171018170927 }),
171019 .rem, .mod, .min, .max => std.fmt.bufPrint(&callee_buf, "{s}f{s}{s}", .{
170928 .rem, .mod, .min, .max => std.fmt.bufPrint(&sym_buf, "{s}f{s}{s}", .{
171020170929 floatLibcAbiPrefix(lhs_ty),
171021170930 switch (air_tag) {
171022170931 .rem, .mod => "mod",
......@@ -171030,22 +170939,22 @@ fn genBinOp(
171030170939 @tagName(air_tag), lhs_ty.fmt(pt),
171031170940 }),
171032170941 } catch unreachable;
171033 const result = try self.genCall(.{ .lib = .{
170942 const result = try self.genCall(.{ .extern_func = .{
171034170943 .return_type = lhs_ty.toIntern(),
171035170944 .param_types = &.{ lhs_ty.toIntern(), rhs_ty.toIntern() },
171036 .callee = callee,
170945 .sym = sym,
171037170946 } }, &.{ lhs_ty, rhs_ty }, &.{ .{ .air_ref = lhs_air }, .{ .air_ref = rhs_air } }, .{});
171038170947 return switch (air_tag) {
171039170948 .mod => result: {
171040170949 const adjusted: MCValue = if (type_needs_libcall) adjusted: {
171041 var add_callee_buf: ["__add?f3".len]u8 = undefined;
171042 break :adjusted try self.genCall(.{ .lib = .{
170950 var add_sym_buf: ["__add?f3".len]u8 = undefined;
170951 break :adjusted try self.genCall(.{ .extern_func = .{
171043170952 .return_type = lhs_ty.toIntern(),
171044170953 .param_types = &.{
171045170954 lhs_ty.toIntern(),
171046170955 rhs_ty.toIntern(),
171047170956 },
171048 .callee = std.fmt.bufPrint(&add_callee_buf, "__add{c}f3", .{
170957 .sym = std.fmt.bufPrint(&add_sym_buf, "__add{c}f3", .{
171049170958 floatCompilerRtAbiName(float_bits),
171050170959 }) catch unreachable,
171051170960 } }, &.{ lhs_ty, rhs_ty }, &.{ result, .{ .air_ref = rhs_air } }, .{});
......@@ -171144,10 +171053,10 @@ fn genBinOp(
171144171053 }),
171145171054 else => unreachable,
171146171055 };
171147 break :result try self.genCall(.{ .lib = .{
171056 break :result try self.genCall(.{ .extern_func = .{
171148171057 .return_type = lhs_ty.toIntern(),
171149171058 .param_types = &.{ lhs_ty.toIntern(), rhs_ty.toIntern() },
171150 .callee = callee,
171059 .sym = sym,
171151171060 } }, &.{ lhs_ty, rhs_ty }, &.{ adjusted, .{ .air_ref = rhs_air } }, .{});
171152171061 },
171153171062 .div_trunc, .div_floor => try self.genRoundLibcall(lhs_ty, result, .{
......@@ -171430,13 +171339,15 @@ fn genBinOp(
171430171339 .immediate,
171431171340 .eflags,
171432171341 .register_offset,
171433 .load_symbol,
171434 .lea_symbol,
171435 .load_direct,
171436 .lea_direct,
171437 .load_got,
171438 .lea_got,
171439171342 .lea_frame,
171343 .load_nav,
171344 .lea_nav,
171345 .load_uav,
171346 .lea_uav,
171347 .load_lazy_sym,
171348 .lea_lazy_sym,
171349 .load_extern_func,
171350 .lea_extern_func,
171440171351 => true,
171441171352 .memory => |addr| std.math.cast(i32, @as(i64, @bitCast(addr))) == null,
171442171353 else => false,
......@@ -171489,15 +171400,15 @@ fn genBinOp(
171489171400 .register_offset,
171490171401 .register_overflow,
171491171402 .register_mask,
171492 .load_symbol,
171493 .lea_symbol,
171494 .load_pcrel,
171495 .lea_pcrel,
171496 .load_direct,
171497 .lea_direct,
171498 .load_got,
171499 .lea_got,
171500171403 .lea_frame,
171404 .load_nav,
171405 .lea_nav,
171406 .load_uav,
171407 .lea_uav,
171408 .load_lazy_sym,
171409 .lea_lazy_sym,
171410 .load_extern_func,
171411 .lea_extern_func,
171501171412 .elementwise_args,
171502171413 .reserved_frame,
171503171414 .air_ref,
......@@ -172595,7 +172506,7 @@ fn genBinOp(
172595172506 .cmp_neq,
172596172507 => {
172597172508 const unsigned_ty = try lhs_ty.toUnsigned(pt);
172598 const not_mcv = try self.genTypedValue(try unsigned_ty.maxInt(pt, unsigned_ty));
172509 const not_mcv = try self.lowerValue(try unsigned_ty.maxInt(pt, unsigned_ty));
172599172510 const not_mem: Memory = if (not_mcv.isBase())
172600172511 try not_mcv.mem(self, .{ .size = .fromSize(abi_size) })
172601172512 else
......@@ -172677,11 +172588,11 @@ fn genBinOpMir(
172677172588 .eflags,
172678172589 .register_overflow,
172679172590 .register_mask,
172680 .lea_direct,
172681 .lea_got,
172682172591 .lea_frame,
172683 .lea_symbol,
172684 .lea_pcrel,
172592 .lea_nav,
172593 .lea_uav,
172594 .lea_lazy_sym,
172595 .lea_extern_func,
172685172596 .elementwise_args,
172686172597 .reserved_frame,
172687172598 .air_ref,
......@@ -172771,16 +172682,16 @@ fn genBinOpMir(
172771172682 .register_offset,
172772172683 .memory,
172773172684 .indirect,
172774 .load_symbol,
172775 .lea_symbol,
172776 .load_pcrel,
172777 .lea_pcrel,
172778 .load_direct,
172779 .lea_direct,
172780 .load_got,
172781 .lea_got,
172782172685 .load_frame,
172783172686 .lea_frame,
172687 .load_nav,
172688 .lea_nav,
172689 .load_uav,
172690 .lea_uav,
172691 .load_lazy_sym,
172692 .lea_lazy_sym,
172693 .load_extern_func,
172694 .lea_extern_func,
172784172695 => {
172785172696 direct: {
172786172697 try self.asmRegisterMemory(mir_limb_tag, dst_alias, switch (src_mcv) {
......@@ -172813,10 +172724,11 @@ fn genBinOpMir(
172813172724 switch (src_mcv) {
172814172725 .eflags,
172815172726 .register_offset,
172816 .lea_symbol,
172817 .lea_direct,
172818 .lea_got,
172819172727 .lea_frame,
172728 .lea_nav,
172729 .lea_uav,
172730 .lea_lazy_sym,
172731 .lea_extern_func,
172820172732 => {
172821172733 assert(off == 0);
172822172734 const reg = try self.copyToTmpRegister(ty, src_mcv);
......@@ -172828,9 +172740,10 @@ fn genBinOpMir(
172828172740 );
172829172741 },
172830172742 .memory,
172831 .load_symbol,
172832 .load_direct,
172833 .load_got,
172743 .load_nav,
172744 .load_uav,
172745 .load_lazy_sym,
172746 .load_extern_func,
172834172747 => {
172835172748 const ptr_ty = try pt.singleConstPtrType(ty);
172836172749 const addr_reg = try self.copyToTmpRegister(ptr_ty, src_mcv.address());
......@@ -172850,13 +172763,20 @@ fn genBinOpMir(
172850172763 }
172851172764 }
172852172765 },
172853 .memory, .indirect, .load_symbol, .load_pcrel, .load_got, .load_direct, .load_frame => {
172766 .memory,
172767 .indirect,
172768 .load_frame,
172769 .load_nav,
172770 .load_uav,
172771 .load_lazy_sym,
172772 .load_extern_func,
172773 => {
172854172774 const OpInfo = ?struct { addr_reg: Register, addr_lock: RegisterLock };
172855172775 const limb_abi_size: u32 = @min(abi_size, 8);
172856172776
172857172777 const dst_info: OpInfo = switch (dst_mcv) {
172858172778 else => unreachable,
172859 .memory, .load_symbol, .load_got, .load_direct => dst: {
172779 .memory, .load_nav, .load_uav, .load_lazy_sym, .load_extern_func => dst: {
172860172780 const dst_addr_reg =
172861172781 (try self.register_manager.allocReg(null, abi.RegisterClass.gp)).to64();
172862172782 const dst_addr_lock = self.register_manager.lockRegAssumeUnused(dst_addr_reg);
......@@ -172892,19 +172812,24 @@ fn genBinOpMir(
172892172812 .register_quadruple,
172893172813 .register_offset,
172894172814 .indirect,
172895 .lea_direct,
172896 .lea_got,
172897172815 .load_frame,
172898172816 .lea_frame,
172899 .lea_symbol,
172900 .lea_pcrel,
172817 .lea_nav,
172818 .lea_uav,
172819 .lea_lazy_sym,
172820 .lea_extern_func,
172901172821 => null,
172902 .memory, .load_symbol, .load_pcrel, .load_got, .load_direct => src: {
172822 .memory,
172823 .load_nav,
172824 .load_uav,
172825 .load_lazy_sym,
172826 .load_extern_func,
172827 => src: {
172903172828 switch (resolved_src_mcv) {
172904172829 .memory => |addr| if (std.math.cast(i32, @as(i64, @bitCast(addr))) != null and
172905172830 std.math.cast(i32, @as(i64, @bitCast(addr)) + abi_size - limb_abi_size) != null)
172906172831 break :src null,
172907 .load_symbol, .load_got, .load_direct => {},
172832 .load_nav, .load_uav, .load_lazy_sym, .load_extern_func => {},
172908172833 else => unreachable,
172909172834 }
172910172835
......@@ -172944,9 +172869,10 @@ fn genBinOpMir(
172944172869 };
172945172870 const dst_limb_mem: Memory = switch (dst_mcv) {
172946172871 .memory,
172947 .load_symbol,
172948 .load_got,
172949 .load_direct,
172872 .load_nav,
172873 .load_uav,
172874 .load_lazy_sym,
172875 .load_extern_func,
172950172876 => .{
172951172877 .base = .{ .reg = dst_info.?.addr_reg },
172952172878 .mod = .{ .rm = .{
......@@ -173036,16 +172962,16 @@ fn genBinOpMir(
173036172962 .eflags,
173037172963 .memory,
173038172964 .indirect,
173039 .load_symbol,
173040 .lea_symbol,
173041 .load_pcrel,
173042 .lea_pcrel,
173043 .load_direct,
173044 .lea_direct,
173045 .load_got,
173046 .lea_got,
173047172965 .load_frame,
173048172966 .lea_frame,
172967 .load_nav,
172968 .lea_nav,
172969 .load_uav,
172970 .lea_uav,
172971 .load_lazy_sym,
172972 .lea_lazy_sym,
172973 .load_extern_func,
172974 .lea_extern_func,
173049172975 => {
173050172976 const src_limb_mcv: MCValue = if (src_info) |info| .{
173051172977 .indirect = .{ .reg = info.addr_reg, .off = off },
......@@ -173055,10 +172981,11 @@ fn genBinOpMir(
173055172981 },
173056172982 .eflags,
173057172983 .register_offset,
173058 .lea_symbol,
173059 .lea_direct,
173060 .lea_got,
173061172984 .lea_frame,
172985 .lea_nav,
172986 .lea_uav,
172987 .lea_lazy_sym,
172988 .lea_extern_func,
173062172989 => switch (limb_i) {
173063172990 0 => resolved_src_mcv,
173064172991 else => .{ .immediate = 0 },
......@@ -173106,11 +173033,11 @@ fn genIntMulComplexOpMir(self: *CodeGen, dst_ty: Type, dst_mcv: MCValue, src_mcv
173106173033 .register_offset,
173107173034 .register_overflow,
173108173035 .register_mask,
173109 .lea_symbol,
173110 .lea_pcrel,
173111 .lea_direct,
173112 .lea_got,
173113173036 .lea_frame,
173037 .lea_nav,
173038 .lea_uav,
173039 .lea_lazy_sym,
173040 .lea_extern_func,
173114173041 .elementwise_args,
173115173042 .reserved_frame,
173116173043 .air_ref,
......@@ -173168,15 +173095,15 @@ fn genIntMulComplexOpMir(self: *CodeGen, dst_ty: Type, dst_mcv: MCValue, src_mcv
173168173095 },
173169173096 .register_offset,
173170173097 .eflags,
173171 .load_symbol,
173172 .lea_symbol,
173173 .load_pcrel,
173174 .lea_pcrel,
173175 .load_direct,
173176 .lea_direct,
173177 .load_got,
173178 .lea_got,
173179173098 .lea_frame,
173099 .load_nav,
173100 .lea_nav,
173101 .load_uav,
173102 .lea_uav,
173103 .load_lazy_sym,
173104 .lea_lazy_sym,
173105 .load_extern_func,
173106 .lea_extern_func,
173180173107 => {
173181173108 const src_reg = try self.copyToTmpRegister(dst_ty, resolved_src_mcv);
173182173109 switch (abi_size) {
......@@ -173231,7 +173158,14 @@ fn genIntMulComplexOpMir(self: *CodeGen, dst_ty: Type, dst_mcv: MCValue, src_mcv
173231173158 }
173232173159 },
173233173160 .register_pair, .register_triple, .register_quadruple => unreachable, // unimplemented
173234 .memory, .indirect, .load_symbol, .load_pcrel, .load_direct, .load_got, .load_frame => {
173161 .memory,
173162 .indirect,
173163 .load_frame,
173164 .load_nav,
173165 .load_uav,
173166 .load_lazy_sym,
173167 .load_extern_func,
173168 => {
173235173169 const tmp_reg = try self.copyToTmpRegister(dst_ty, dst_mcv);
173236173170 const tmp_mcv = MCValue{ .register = tmp_reg };
173237173171 const tmp_lock = self.register_manager.lockRegAssumeUnused(tmp_reg);
......@@ -173382,15 +173316,6 @@ fn genLocalDebugInfo(cg: *CodeGen, air_tag: Air.Inst.Tag, ty: Type, mcv: MCValue
173382173316 },
173383173317 .data = .{ .fa = frame_addr },
173384173318 }),
173385 .lea_symbol => |sym_off| try cg.addInst(.{
173386 .tag = .pseudo,
173387 .ops = switch (air_tag) {
173388 else => unreachable,
173389 .arg, .dbg_arg_inline => .pseudo_dbg_arg_reloc,
173390 .dbg_var_val => .pseudo_dbg_var_reloc,
173391 },
173392 .data = .{ .reloc = sym_off },
173393 }),
173394173319 else => {
173395173320 const frame_index = try cg.allocFrameIndex(.initSpill(ty, cg.pt.zcu));
173396173321 try cg.genSetMem(.{ .frame = frame_index }, 0, ty, mcv, .{});
......@@ -173426,26 +173351,42 @@ fn genLocalDebugInfo(cg: *CodeGen, air_tag: Air.Inst.Tag, ty: Type, mcv: MCValue
173426173351 })),
173427173352 } },
173428173353 }),
173429 // debug info should explicitly ignore pcrel requirements
173430 .lea_symbol, .lea_pcrel => |sym_off| try cg.addInst(.{
173354 .lea_nav => |nav| try cg.addInst(.{
173431173355 .tag = .pseudo,
173432173356 .ops = .pseudo_dbg_var_m,
173433173357 .data = .{ .x = .{
173434173358 .payload = try cg.addExtra(Mir.Memory.encode(.{
173435 .base = .{ .reloc = sym_off.sym_index },
173436 .mod = .{ .rm = .{
173437 .size = .qword,
173438 .disp = sym_off.off,
173439 } },
173359 .base = .{ .nav = nav },
173360 .mod = .{ .rm = .{ .size = .qword } },
173440173361 })),
173441173362 } },
173442173363 }),
173443 .lea_direct, .lea_got => |sym_index| try cg.addInst(.{
173364 .lea_uav => |uav| try cg.addInst(.{
173444173365 .tag = .pseudo,
173445173366 .ops = .pseudo_dbg_var_m,
173446173367 .data = .{ .x = .{
173447173368 .payload = try cg.addExtra(Mir.Memory.encode(.{
173448 .base = .{ .reloc = sym_index },
173369 .base = .{ .uav = uav },
173370 .mod = .{ .rm = .{ .size = .qword } },
173371 })),
173372 } },
173373 }),
173374 .lea_lazy_sym => |lazy_sym| try cg.addInst(.{
173375 .tag = .pseudo,
173376 .ops = .pseudo_dbg_var_m,
173377 .data = .{ .x = .{
173378 .payload = try cg.addExtra(Mir.Memory.encode(.{
173379 .base = .{ .lazy_sym = lazy_sym },
173380 .mod = .{ .rm = .{ .size = .qword } },
173381 })),
173382 } },
173383 }),
173384 .lea_extern_func => |extern_func| try cg.addInst(.{
173385 .tag = .pseudo,
173386 .ops = .pseudo_dbg_var_m,
173387 .data = .{ .x = .{
173388 .payload = try cg.addExtra(Mir.Memory.encode(.{
173389 .base = .{ .extern_func = extern_func },
173449173390 .mod = .{ .rm = .{ .size = .qword } },
173450173391 })),
173451173392 } },
......@@ -173502,11 +173443,10 @@ fn airCall(self: *CodeGen, inst: Air.Inst.Index, modifier: std.builtin.CallModif
173502173443
173503173444fn genCall(self: *CodeGen, info: union(enum) {
173504173445 air: Air.Inst.Ref,
173505 lib: struct {
173446 extern_func: struct {
173506173447 return_type: InternPool.Index,
173507173448 param_types: []const InternPool.Index,
173508 lib: ?[]const u8 = null,
173509 callee: []const u8,
173449 sym: []const u8,
173510173450 },
173511173451}, arg_types: []const Type, args: []const MCValue, opts: CopyOptions) !MCValue {
173512173452 const pt = self.pt;
......@@ -173522,9 +173462,9 @@ fn genCall(self: *CodeGen, info: union(enum) {
173522173462 else => unreachable,
173523173463 };
173524173464 },
173525 .lib => |lib| try pt.funcType(.{
173526 .param_types = lib.param_types,
173527 .return_type = lib.return_type,
173465 .extern_func => |extern_func| try pt.funcType(.{
173466 .param_types = extern_func.param_types,
173467 .return_type = extern_func.return_type,
173528173468 .cc = self.target.cCallingConvention().?,
173529173469 }),
173530173470 };
......@@ -173753,52 +173693,9 @@ fn genCall(self: *CodeGen, info: union(enum) {
173753173693 else => func_key,
173754173694 } else func_key,
173755173695 }) {
173756 .func => |func| {
173757 if (self.bin_file.cast(.elf)) |elf_file| {
173758 const zo = elf_file.zigObjectPtr().?;
173759 const sym_index = try zo.getOrCreateMetadataForNav(zcu, func.owner_nav);
173760 try self.asmImmediate(.{ ._, .call }, .rel(.{ .sym_index = sym_index }));
173761 } else if (self.bin_file.cast(.coff)) |coff_file| {
173762 const atom = try coff_file.getOrCreateAtomForNav(func.owner_nav);
173763 const sym_index = coff_file.getAtom(atom).getSymbolIndex().?;
173764 const scratch_reg = abi.getCAbiLinkerScratchReg(fn_info.cc);
173765 try self.genSetReg(scratch_reg, .usize, .{ .lea_got = sym_index }, .{});
173766 try self.asmRegister(.{ ._, .call }, scratch_reg);
173767 } else if (self.bin_file.cast(.macho)) |macho_file| {
173768 const zo = macho_file.getZigObject().?;
173769 const sym_index = try zo.getOrCreateMetadataForNav(macho_file, func.owner_nav);
173770 const sym = zo.symbols.items[sym_index];
173771 try self.asmImmediate(.{ ._, .call }, .rel(.{ .sym_index = sym.nlist_idx }));
173772 } else if (self.bin_file.cast(.plan9)) |p9| {
173773 const atom_index = try p9.seeNav(pt, func.owner_nav);
173774 const atom = p9.getAtom(atom_index);
173775 try self.asmMemory(.{ ._, .call }, .{
173776 .base = .{ .reg = .ds },
173777 .mod = .{ .rm = .{
173778 .size = .qword,
173779 .disp = @intCast(atom.getOffsetTableAddress(p9)),
173780 } },
173781 });
173782 } else unreachable;
173783 },
173784 .@"extern" => |@"extern"| if (self.bin_file.cast(.elf)) |elf_file| {
173785 const target_sym_index = try elf_file.getGlobalSymbol(
173786 @"extern".name.toSlice(ip),
173787 @"extern".lib_name.toSlice(ip),
173788 );
173789 try self.asmImmediate(.{ ._, .call }, .rel(.{ .sym_index = target_sym_index }));
173790 } else if (self.bin_file.cast(.macho)) |macho_file| {
173791 const target_sym_index = try macho_file.getGlobalSymbol(
173792 @"extern".name.toSlice(ip),
173793 @"extern".lib_name.toSlice(ip),
173794 );
173795 try self.asmImmediate(.{ ._, .call }, .rel(.{ .sym_index = target_sym_index }));
173796 } else try self.genExternSymbolRef(
173797 .call,
173798 @"extern".lib_name.toSlice(ip),
173799 @"extern".name.toSlice(ip),
173800 ),
173801 else => return self.fail("TODO implement calling bitcasted functions", .{}),
173696 else => unreachable,
173697 .func => |func| try self.asmImmediate(.{ ._, .call }, .{ .nav = .{ .index = func.owner_nav } }),
173698 .@"extern" => |@"extern"| try self.asmImmediate(.{ ._, .call }, .{ .nav = .{ .index = @"extern".owner_nav } }),
173802173699 }
173803173700 } else {
173804173701 assert(self.typeOf(callee).zigTypeTag(zcu) == .pointer);
......@@ -173806,13 +173703,7 @@ fn genCall(self: *CodeGen, info: union(enum) {
173806173703 try self.genSetReg(scratch_reg, .usize, .{ .air_ref = callee }, .{});
173807173704 try self.asmRegister(.{ ._, .call }, scratch_reg);
173808173705 },
173809 .lib => |lib| if (self.bin_file.cast(.elf)) |elf_file| {
173810 const target_sym_index = try elf_file.getGlobalSymbol(lib.callee, lib.lib);
173811 try self.asmImmediate(.{ ._, .call }, .rel(.{ .sym_index = target_sym_index }));
173812 } else if (self.bin_file.cast(.macho)) |macho_file| {
173813 const target_sym_index = try macho_file.getGlobalSymbol(lib.callee, lib.lib);
173814 try self.asmImmediate(.{ ._, .call }, .rel(.{ .sym_index = target_sym_index }));
173815 } else try self.genExternSymbolRef(.call, lib.lib, lib.callee),
173706 .extern_func => |extern_func| try self.asmImmediate(.{ ._, .call }, .{ .extern_func = try self.addString(extern_func.sym) }),
173816173707 }
173817173708 return call_info.return_value.short;
173818173709}
......@@ -173946,11 +173837,11 @@ fn airCmp(self: *CodeGen, inst: Air.Inst.Index, op: std.math.CompareOperator) !v
173946173837 80, 128 => false,
173947173838 else => unreachable,
173948173839 }) {
173949 var callee_buf: ["__???f2".len]u8 = undefined;
173950 const ret = try self.genCall(.{ .lib = .{
173840 var sym_buf: ["__???f2".len]u8 = undefined;
173841 const ret = try self.genCall(.{ .extern_func = .{
173951173842 .return_type = .i32_type,
173952173843 .param_types = &.{ ty.toIntern(), ty.toIntern() },
173953 .callee = std.fmt.bufPrint(&callee_buf, "__{s}{c}f2", .{
173844 .sym = std.fmt.bufPrint(&sym_buf, "__{s}{c}f2", .{
173954173845 switch (op) {
173955173846 .eq => "eq",
173956173847 .neq => "ne",
......@@ -174093,17 +173984,27 @@ fn airCmp(self: *CodeGen, inst: Air.Inst.Index, op: std.math.CompareOperator) !v
174093173984 .register_overflow,
174094173985 .register_mask,
174095173986 .indirect,
174096 .lea_direct,
174097 .lea_got,
174098173987 .lea_frame,
174099 .lea_symbol,
174100 .lea_pcrel,
173988 .lea_nav,
173989 .lea_uav,
173990 .lea_lazy_sym,
173991 .lea_extern_func,
174101173992 .elementwise_args,
174102173993 .reserved_frame,
174103173994 .air_ref,
174104173995 => unreachable,
174105 .register, .register_pair, .register_triple, .register_quadruple, .load_frame => null,
174106 .memory, .load_symbol, .load_pcrel, .load_got, .load_direct => dst: {
173996 .register,
173997 .register_pair,
173998 .register_triple,
173999 .register_quadruple,
174000 .load_frame,
174001 => null,
174002 .memory,
174003 .load_nav,
174004 .load_uav,
174005 .load_lazy_sym,
174006 .load_extern_func,
174007 => dst: {
174107174008 switch (resolved_dst_mcv) {
174108174009 .memory => |addr| if (std.math.cast(
174109174010 i32,
......@@ -174112,7 +174013,7 @@ fn airCmp(self: *CodeGen, inst: Air.Inst.Index, op: std.math.CompareOperator) !v
174112174013 i32,
174113174014 @as(i64, @bitCast(addr)) + abi_size - 8,
174114174015 ) != null) break :dst null,
174115 .load_symbol, .load_pcrel, .load_got, .load_direct => {},
174016 .load_nav, .load_uav, .load_lazy_sym, .load_extern_func => {},
174116174017 else => unreachable,
174117174018 }
174118174019
......@@ -174149,17 +174050,26 @@ fn airCmp(self: *CodeGen, inst: Air.Inst.Index, op: std.math.CompareOperator) !v
174149174050 .register_overflow,
174150174051 .register_mask,
174151174052 .indirect,
174152 .lea_symbol,
174153 .lea_pcrel,
174154 .lea_direct,
174155 .lea_got,
174156174053 .lea_frame,
174054 .lea_nav,
174055 .lea_uav,
174056 .lea_lazy_sym,
174057 .lea_extern_func,
174157174058 .elementwise_args,
174158174059 .reserved_frame,
174159174060 .air_ref,
174160174061 => unreachable,
174161 .register_pair, .register_triple, .register_quadruple, .load_frame => null,
174162 .memory, .load_symbol, .load_pcrel, .load_got, .load_direct => src: {
174062 .register_pair,
174063 .register_triple,
174064 .register_quadruple,
174065 .load_frame,
174066 => null,
174067 .memory,
174068 .load_nav,
174069 .load_uav,
174070 .load_lazy_sym,
174071 .load_extern_func,
174072 => src: {
174163174073 switch (resolved_src_mcv) {
174164174074 .memory => |addr| if (std.math.cast(
174165174075 i32,
......@@ -174168,7 +174078,7 @@ fn airCmp(self: *CodeGen, inst: Air.Inst.Index, op: std.math.CompareOperator) !v
174168174078 i32,
174169174079 @as(i64, @bitCast(addr)) + abi_size - 8,
174170174080 ) != null) break :src null,
174171 .load_symbol, .load_pcrel, .load_got, .load_direct => {},
174081 .load_nav, .load_uav, .load_lazy_sym, .load_extern_func => {},
174172174082 else => unreachable,
174173174083 }
174174174084
......@@ -174453,14 +174363,19 @@ fn airDbgVar(cg: *CodeGen, inst: Air.Inst.Index) !void {
174453174363 if (cg.mod.strip) return;
174454174364 const air_tag = cg.air.instructions.items(.tag)[@intFromEnum(inst)];
174455174365 const pl_op = cg.air.instructions.items(.data)[@intFromEnum(inst)].pl_op;
174456
174457 const name_nts: Air.NullTerminatedString = @enumFromInt(pl_op.payload);
174458 assert(name_nts != .none);
174459 const name = name_nts.toSlice(cg.air);
174460 try cg.mir_local_name_bytes.appendSlice(cg.gpa, name[0 .. name.len + 1]);
174461
174366 const air_name: Air.NullTerminatedString = @enumFromInt(pl_op.payload);
174462174367 const ty = cg.typeOf(pl_op.operand);
174463 try cg.mir_local_types.append(cg.gpa, ty.toIntern());
174368
174369 try cg.mir_locals.append(cg.gpa, .{
174370 .name = switch (air_name) {
174371 .none => switch (air_tag) {
174372 else => unreachable,
174373 .dbg_arg_inline => .none,
174374 },
174375 else => try cg.addString(air_name.toSlice(cg.air)),
174376 },
174377 .type = ty.toIntern(),
174378 });
174464174379
174465174380 try cg.genLocalDebugInfo(air_tag, ty, try cg.resolveInst(pl_op.operand));
174466174381 return cg.finishAir(inst, .unreach, .{ pl_op.operand, .none, .none });
......@@ -174567,10 +174482,10 @@ fn isNull(self: *CodeGen, inst: Air.Inst.Index, opt_ty: Type, opt_mcv: MCValue)
174567174482 .register_offset,
174568174483 .register_overflow,
174569174484 .register_mask,
174570 .lea_direct,
174571 .lea_got,
174572 .lea_symbol,
174573 .lea_pcrel,
174485 .lea_nav,
174486 .lea_uav,
174487 .lea_lazy_sym,
174488 .lea_extern_func,
174574174489 .elementwise_args,
174575174490 .reserved_frame,
174576174491 .air_ref,
......@@ -174618,10 +174533,10 @@ fn isNull(self: *CodeGen, inst: Air.Inst.Index, opt_ty: Type, opt_mcv: MCValue)
174618174533 },
174619174534
174620174535 .memory,
174621 .load_symbol,
174622 .load_pcrel,
174623 .load_got,
174624 .load_direct,
174536 .load_nav,
174537 .load_uav,
174538 .load_lazy_sym,
174539 .load_extern_func,
174625174540 => {
174626174541 const addr_reg = (try self.register_manager.allocReg(null, abi.RegisterClass.gp)).to64();
174627174542 const addr_reg_lock = self.register_manager.lockRegAssumeUnused(addr_reg);
......@@ -175655,7 +175570,7 @@ fn airAsm(self: *CodeGen, inst: Air.Inst.Index) !void {
175655175570 .memory => |addr| if (std.math.cast(i32, @as(i64, @bitCast(addr)))) |_|
175656175571 break :arg input_mcv,
175657175572 .indirect, .load_frame => break :arg input_mcv,
175658 .load_symbol, .load_direct, .load_got => {},
175573 .load_nav, .load_uav, .load_lazy_sym, .load_extern_func => {},
175659175574 else => {
175660175575 const temp_mcv = try self.allocTempRegOrMem(ty, false);
175661175576 try self.genCopy(ty, temp_mcv, input_mcv, .{});
......@@ -175934,12 +175849,20 @@ fn airAsm(self: *CodeGen, inst: Air.Inst.Index) !void {
175934175849 } }
175935175850 else
175936175851 return self.fail("invalid modifier: '{s}'", .{modifier}),
175937 .lea_got => |sym_index| if (std.mem.eql(u8, modifier, "P"))
175938 .{ .reg = try self.copyToTmpRegister(.usize, .{ .lea_got = sym_index }) }
175852 .lea_nav => |nav| if (std.mem.eql(u8, modifier, "P"))
175853 .{ .reg = try self.copyToTmpRegister(.usize, .{ .lea_nav = nav }) }
175854 else
175855 return self.fail("invalid modifier: '{s}'", .{modifier}),
175856 .lea_uav => |uav| if (std.mem.eql(u8, modifier, "P"))
175857 .{ .reg = try self.copyToTmpRegister(.usize, .{ .lea_uav = uav }) }
175858 else
175859 return self.fail("invalid modifier: '{s}'", .{modifier}),
175860 .lea_lazy_sym => |lazy_sym| if (std.mem.eql(u8, modifier, "P"))
175861 .{ .reg = try self.copyToTmpRegister(.usize, .{ .lea_lazy_sym = lazy_sym }) }
175939175862 else
175940175863 return self.fail("invalid modifier: '{s}'", .{modifier}),
175941 .lea_symbol => |sym_off| if (std.mem.eql(u8, modifier, "P"))
175942 .{ .reg = try self.copyToTmpRegister(.usize, .{ .lea_symbol = sym_off }) }
175864 .lea_extern_func => |extern_func| if (std.mem.eql(u8, modifier, "P"))
175865 .{ .reg = try self.copyToTmpRegister(.usize, .{ .lea_extern_func = extern_func }) }
175943175866 else
175944175867 return self.fail("invalid modifier: '{s}'", .{modifier}),
175945175868 else => return self.fail("invalid constraint: '{s}'", .{op_str}),
......@@ -176623,11 +176546,11 @@ fn genCopy(self: *CodeGen, ty: Type, dst_mcv: MCValue, src_mcv: MCValue, opts: C
176623176546 .eflags,
176624176547 .register_overflow,
176625176548 .register_mask,
176626 .lea_direct,
176627 .lea_got,
176628176549 .lea_frame,
176629 .lea_symbol,
176630 .lea_pcrel,
176550 .lea_nav,
176551 .lea_uav,
176552 .lea_lazy_sym,
176553 .lea_extern_func,
176631176554 .elementwise_args,
176632176555 .reserved_frame,
176633176556 .air_ref,
......@@ -176722,7 +176645,7 @@ fn genCopy(self: *CodeGen, ty: Type, dst_mcv: MCValue, src_mcv: MCValue, opts: C
176722176645 }
176723176646 return;
176724176647 },
176725 .load_symbol, .load_pcrel, .load_direct, .load_got => {
176648 .load_nav, .load_uav, .load_lazy_sym, .load_extern_func => {
176726176649 const src_addr_reg =
176727176650 (try self.register_manager.allocReg(null, abi.RegisterClass.gp)).to64();
176728176651 const src_addr_lock = self.register_manager.lockRegAssumeUnused(src_addr_reg);
......@@ -176755,7 +176678,11 @@ fn genCopy(self: *CodeGen, ty: Type, dst_mcv: MCValue, src_mcv: MCValue, opts: C
176755176678 .undef => if (opts.safety and part_i > 0) .{ .register = dst_regs[0] } else .undef,
176756176679 dst_tag => |src_regs| .{ .register = src_regs[part_i] },
176757176680 .memory, .indirect, .load_frame => src_mcv.address().offset(part_disp).deref(),
176758 .load_symbol, .load_pcrel, .load_direct, .load_got => .{ .indirect = .{
176681 .load_nav,
176682 .load_uav,
176683 .load_lazy_sym,
176684 .load_extern_func,
176685 => .{ .indirect = .{
176759176686 .reg = src_info.?.addr_reg,
176760176687 .off = part_disp,
176761176688 } },
......@@ -176776,11 +176703,11 @@ fn genCopy(self: *CodeGen, ty: Type, dst_mcv: MCValue, src_mcv: MCValue, opts: C
176776176703 src_mcv,
176777176704 opts,
176778176705 ),
176779 .memory, .load_symbol, .load_pcrel, .load_direct, .load_got => {
176706 .memory => {
176780176707 switch (dst_mcv) {
176781176708 .memory => |addr| if (std.math.cast(i32, @as(i64, @bitCast(addr)))) |small_addr|
176782176709 return self.genSetMem(.{ .reg = .ds }, small_addr, ty, src_mcv, opts),
176783 .load_symbol, .load_pcrel, .load_direct, .load_got => {},
176710 .load_nav, .load_uav, .load_lazy_sym, .load_extern_func => {},
176784176711 else => unreachable,
176785176712 }
176786176713
......@@ -176797,6 +176724,10 @@ fn genCopy(self: *CodeGen, ty: Type, dst_mcv: MCValue, src_mcv: MCValue, opts: C
176797176724 src_mcv,
176798176725 opts,
176799176726 ),
176727 .load_nav => |nav| try self.genSetMem(.{ .nav = nav }, 0, ty, src_mcv, opts),
176728 .load_uav => |uav| try self.genSetMem(.{ .uav = uav }, 0, ty, src_mcv, opts),
176729 .load_lazy_sym => |lazy_sym| try self.genSetMem(.{ .lazy_sym = lazy_sym }, 0, ty, src_mcv, opts),
176730 .load_extern_func => |extern_func| try self.genSetMem(.{ .extern_func = extern_func }, 0, ty, src_mcv, opts),
176800176731 }
176801176732}
176802176733
......@@ -176841,14 +176772,14 @@ fn genSetReg(
176841176772 .len = self.vectorSize(.float),
176842176773 .child = .u8_type,
176843176774 });
176844 try self.genSetReg(dst_reg, full_ty, try self.genTypedValue(
176775 try self.genSetReg(dst_reg, full_ty, try self.lowerValue(
176845176776 .fromInterned(try pt.intern(.{ .aggregate = .{
176846176777 .ty = full_ty.toIntern(),
176847176778 .storage = .{ .repeated_elem = (try pt.intValue(.u8, 0xaa)).toIntern() },
176848176779 } })),
176849176780 ), opts);
176850176781 },
176851 .x87 => try self.genSetReg(dst_reg, .f80, try self.genTypedValue(
176782 .x87 => try self.genSetReg(dst_reg, .f80, try self.lowerValue(
176852176783 try pt.floatValue(.f80, @as(f80, @bitCast(@as(u80, 0xaaaaaaaaaaaaaaaaaaaa)))),
176853176784 ), opts),
176854176785 .ip, .cr, .dr => unreachable,
......@@ -176878,12 +176809,24 @@ fn genSetReg(
176878176809 }
176879176810 },
176880176811 .register => |src_reg| if (dst_reg.id() != src_reg.id()) switch (dst_reg.class()) {
176881 .general_purpose, .gphi => switch (src_reg.class()) {
176882 .general_purpose, .gphi => try self.asmRegisterRegister(
176812 .general_purpose => switch (src_reg.class()) {
176813 .general_purpose => try self.asmRegisterRegister(
176883176814 .{ ._, .mov },
176884176815 dst_alias,
176885176816 registerAlias(src_reg, abi_size),
176886176817 ),
176818 .gphi => if (dst_reg.isClass(.gphi)) try self.asmRegisterRegister(
176819 .{ ._, .mov },
176820 dst_alias,
176821 registerAlias(src_reg, abi_size),
176822 ) else {
176823 const src_lock = self.register_manager.lockReg(src_reg);
176824 defer if (src_lock) |lock| self.register_manager.unlockReg(lock);
176825 const tmp_reg = try self.register_manager.allocReg(null, abi.RegisterClass.gphi);
176826
176827 try self.asmRegisterRegister(.{ ._, .mov }, tmp_reg.to8(), src_reg);
176828 try self.asmRegisterRegister(.{ ._, .mov }, dst_alias, tmp_reg.to8());
176829 },
176887176830 .segment => try self.asmRegisterRegister(
176888176831 .{ ._, .mov },
176889176832 dst_alias,
......@@ -176919,6 +176862,26 @@ fn genSetReg(
176919176862 });
176920176863 },
176921176864 },
176865 .gphi => switch (src_reg.class()) {
176866 .general_purpose => if (src_reg.isClass(.gphi)) try self.asmRegisterRegister(
176867 .{ ._, .mov },
176868 dst_alias,
176869 registerAlias(src_reg, abi_size),
176870 ) else {
176871 const dst_lock = self.register_manager.lockReg(dst_reg);
176872 defer if (dst_lock) |lock| self.register_manager.unlockReg(lock);
176873 const tmp_reg = try self.register_manager.allocReg(null, abi.RegisterClass.gphi);
176874
176875 try self.asmRegisterRegister(.{ ._, .mov }, tmp_reg.to8(), src_reg.to8());
176876 try self.asmRegisterRegister(.{ ._, .mov }, dst_reg, tmp_reg.to8());
176877 },
176878 .gphi => try self.asmRegisterRegister(
176879 .{ ._, .mov },
176880 dst_alias,
176881 registerAlias(src_reg, abi_size),
176882 ),
176883 .segment, .x87, .mmx, .ip, .cr, .dr, .sse => unreachable,
176884 },
176922176885 .segment => try self.asmRegisterRegister(
176923176886 .{ ._, .mov },
176924176887 dst_reg,
......@@ -177237,7 +177200,7 @@ fn genSetReg(
177237177200 if (src_reg_mask.info.inverted) try self.asmRegister(.{ ._, .not }, registerAlias(bits_reg, abi_size));
177238177201 try self.genSetReg(dst_reg, ty, .{ .register = bits_reg }, .{});
177239177202 },
177240 .memory, .load_symbol, .load_pcrel, .load_direct, .load_got => {
177203 .memory, .load_nav, .load_uav, .load_lazy_sym, .load_extern_func => {
177241177204 switch (src_mcv) {
177242177205 .memory => |addr| if (std.math.cast(i32, @as(i64, @bitCast(addr)))) |small_addr|
177243177206 return (try self.moveStrategy(
......@@ -177251,52 +177214,50 @@ fn genSetReg(
177251177214 .disp = small_addr,
177252177215 } },
177253177216 }),
177254 .load_symbol => |sym_off| switch (dst_reg.class()) {
177217 .load_nav => |nav| switch (dst_reg.class()) {
177255177218 .general_purpose, .gphi => {
177256 assert(sym_off.off == 0);
177257177219 try self.asmRegisterMemory(.{ ._, .mov }, dst_alias, .{
177258 .base = .{ .reloc = sym_off.sym_index },
177259 .mod = .{ .rm = .{
177260 .size = self.memSize(ty),
177261 .disp = sym_off.off,
177262 } },
177220 .base = .{ .nav = nav },
177221 .mod = .{ .rm = .{ .size = self.memSize(ty) } },
177263177222 });
177264177223 return;
177265177224 },
177266177225 .segment, .mmx, .ip, .cr, .dr => unreachable,
177267177226 .x87, .sse => {},
177268177227 },
177269 .load_pcrel => |sym_off| switch (dst_reg.class()) {
177228 .load_uav => |uav| switch (dst_reg.class()) {
177270177229 .general_purpose, .gphi => {
177271 assert(sym_off.off == 0);
177272177230 try self.asmRegisterMemory(.{ ._, .mov }, dst_alias, .{
177273 .base = .{ .pcrel = sym_off.sym_index },
177274 .mod = .{ .rm = .{
177275 .size = self.memSize(ty),
177276 .disp = sym_off.off,
177277 } },
177231 .base = .{ .uav = uav },
177232 .mod = .{ .rm = .{ .size = self.memSize(ty) } },
177278177233 });
177279177234 return;
177280177235 },
177281177236 .segment, .mmx, .ip, .cr, .dr => unreachable,
177282177237 .x87, .sse => {},
177283177238 },
177284 .load_direct => |sym_index| switch (dst_reg.class()) {
177239 .load_lazy_sym => |lazy_sym| switch (dst_reg.class()) {
177285177240 .general_purpose, .gphi => {
177286 _ = try self.addInst(.{
177287 .tag = .mov,
177288 .ops = .direct_reloc,
177289 .data = .{ .rx = .{
177290 .r1 = dst_alias,
177291 .payload = try self.addExtra(bits.SymbolOffset{ .sym_index = sym_index }),
177292 } },
177241 try self.asmRegisterMemory(.{ ._, .mov }, dst_alias, .{
177242 .base = .{ .lazy_sym = lazy_sym },
177243 .mod = .{ .rm = .{ .size = self.memSize(ty) } },
177244 });
177245 return;
177246 },
177247 .segment, .mmx, .ip, .cr, .dr => unreachable,
177248 .x87, .sse => {},
177249 },
177250 .load_extern_func => |extern_func| switch (dst_reg.class()) {
177251 .general_purpose, .gphi => {
177252 try self.asmRegisterMemory(.{ ._, .mov }, dst_alias, .{
177253 .base = .{ .extern_func = extern_func },
177254 .mod = .{ .rm = .{ .size = self.memSize(ty) } },
177293177255 });
177294177256 return;
177295177257 },
177296177258 .segment, .mmx, .ip, .cr, .dr => unreachable,
177297177259 .x87, .sse => {},
177298177260 },
177299 .load_got => {},
177300177261 else => unreachable,
177301177262 }
177302177263
......@@ -177309,65 +177270,17 @@ fn genSetReg(
177309177270 .mod = .{ .rm = .{ .size = self.memSize(ty) } },
177310177271 });
177311177272 },
177312 .lea_symbol => |sym_off| switch (self.bin_file.tag) {
177313 .elf, .macho => {
177314 try self.asmRegisterMemory(
177315 .{ ._, .lea },
177316 dst_reg.to64(),
177317 .{
177318 .base = .{ .reloc = sym_off.sym_index },
177319 },
177320 );
177321 if (sym_off.off != 0) try self.asmRegisterMemory(
177322 .{ ._, .lea },
177323 dst_reg.to64(),
177324 .{
177325 .base = .{ .reg = dst_reg.to64() },
177326 .mod = .{ .rm = .{ .disp = sym_off.off } },
177327 },
177328 );
177329 },
177330 else => return self.fail("TODO emit symbol sequence on {s}", .{
177331 @tagName(self.bin_file.tag),
177332 }),
177333 },
177334 .lea_pcrel => |sym_off| switch (self.bin_file.tag) {
177335 .elf, .macho => {
177336 try self.asmRegisterMemory(
177337 .{ ._, .lea },
177338 dst_reg.to64(),
177339 .{
177340 .base = .{ .pcrel = sym_off.sym_index },
177341 },
177342 );
177343 if (sym_off.off != 0) try self.asmRegisterMemory(
177344 .{ ._, .lea },
177345 dst_reg.to64(),
177346 .{
177347 .base = .{ .reg = dst_reg.to64() },
177348 .mod = .{ .rm = .{ .disp = sym_off.off } },
177349 },
177350 );
177351 },
177352 else => return self.fail("TODO emit symbol sequence on {s}", .{
177353 @tagName(self.bin_file.tag),
177354 }),
177355 },
177356 .lea_direct, .lea_got => |sym_index| _ = try self.addInst(.{
177357 .tag = switch (src_mcv) {
177358 .lea_direct => .lea,
177359 .lea_got => .mov,
177360 else => unreachable,
177361 },
177362 .ops = switch (src_mcv) {
177363 .lea_direct => .direct_reloc,
177364 .lea_got => .got_reloc,
177365 else => unreachable,
177366 },
177367 .data = .{ .rx = .{
177368 .r1 = dst_reg.to64(),
177369 .payload = try self.addExtra(bits.SymbolOffset{ .sym_index = sym_index }),
177370 } },
177273 .lea_nav => |nav| try self.asmRegisterMemory(.{ ._, .lea }, dst_reg.to64(), .{
177274 .base = .{ .nav = nav },
177275 }),
177276 .lea_uav => |uav| try self.asmRegisterMemory(.{ ._, .lea }, dst_reg.to64(), .{
177277 .base = .{ .uav = uav },
177278 }),
177279 .lea_lazy_sym => |lazy_sym| try self.asmRegisterMemory(.{ ._, .lea }, dst_reg.to64(), .{
177280 .base = .{ .lazy_sym = lazy_sym },
177281 }),
177282 .lea_extern_func => |lazy_sym| try self.asmRegisterMemory(.{ ._, .lea }, dst_reg.to64(), .{
177283 .base = .{ .extern_func = lazy_sym },
177371177284 }),
177372177285 .air_ref => |src_ref| try self.genSetReg(dst_reg, ty, try self.resolveInst(src_ref), opts),
177373177286 }
......@@ -177388,9 +177301,10 @@ fn genSetMem(
177388177301 .none => .{ .immediate = @bitCast(@as(i64, disp)) },
177389177302 .reg => |base_reg| .{ .register_offset = .{ .reg = base_reg, .off = disp } },
177390177303 .frame => |base_frame_index| .{ .lea_frame = .{ .index = base_frame_index, .off = disp } },
177391 .table, .rip_inst => unreachable,
177392 .reloc => |sym_index| .{ .lea_symbol = .{ .sym_index = sym_index, .off = disp } },
177393 .pcrel => |sym_index| .{ .lea_pcrel = .{ .sym_index = sym_index, .off = disp } },
177304 .table, .rip_inst, .lazy_sym => unreachable,
177305 .nav => |nav| .{ .lea_nav = nav },
177306 .uav => |uav| .{ .lea_uav = uav },
177307 .extern_func => |extern_func| .{ .lea_extern_func = extern_func },
177394177308 };
177395177309 switch (src_mcv) {
177396177310 .none,
......@@ -177453,6 +177367,7 @@ fn genSetMem(
177453177367 .rm = .{ .size = .byte, .disp = disp },
177454177368 } }),
177455177369 .register => |src_reg| {
177370 const ip = &zcu.intern_pool;
177456177371 const mem_size = switch (base) {
177457177372 .frame => |base_fi| mem_size: {
177458177373 assert(disp >= 0);
......@@ -177506,8 +177421,9 @@ fn genSetMem(
177506177421 .index = frame_index,
177507177422 .off = disp,
177508177423 }).compare(.gte, src_align),
177509 .table, .rip_inst => unreachable,
177510 .reloc, .pcrel => false,
177424 .table, .rip_inst, .lazy_sym, .extern_func => unreachable,
177425 .nav => |nav| ip.getNav(nav).getAlignment().compare(.gte, src_align),
177426 .uav => |uav| Type.fromInterned(uav.orig_ty).ptrAlignment(zcu).compare(.gte, src_align),
177511177427 })).write(
177512177428 self,
177513177429 .{ .base = base, .mod = .{ .rm = .{
......@@ -177590,16 +177506,16 @@ fn genSetMem(
177590177506 },
177591177507 .memory,
177592177508 .indirect,
177593 .load_direct,
177594 .lea_direct,
177595 .load_got,
177596 .lea_got,
177597177509 .load_frame,
177598177510 .lea_frame,
177599 .load_symbol,
177600 .lea_symbol,
177601 .load_pcrel,
177602 .lea_pcrel,
177511 .load_nav,
177512 .lea_nav,
177513 .load_uav,
177514 .lea_uav,
177515 .load_lazy_sym,
177516 .lea_lazy_sym,
177517 .load_extern_func,
177518 .lea_extern_func,
177603177519 => switch (abi_size) {
177604177520 0 => {},
177605177521 1, 2, 4, 8 => {
......@@ -177693,119 +177609,19 @@ fn genInlineMemset(
177693177609 try self.asmOpOnly(.{ .@"rep _sb", .sto });
177694177610}
177695177611
177696fn genExternSymbolRef(
177697 self: *CodeGen,
177698 comptime tag: Mir.Inst.Tag,
177699 lib: ?[]const u8,
177700 callee: []const u8,
177701) InnerError!void {
177702 if (self.bin_file.cast(.coff)) |coff_file| {
177703 const global_index = try coff_file.getGlobalSymbol(callee, lib);
177704 const scratch_reg = abi.getCAbiLinkerScratchReg(self.target.cCallingConvention().?);
177705 _ = try self.addInst(.{
177706 .tag = .mov,
177707 .ops = .import_reloc,
177708 .data = .{ .rx = .{
177709 .r1 = scratch_reg,
177710 .payload = try self.addExtra(bits.SymbolOffset{
177711 .sym_index = link.File.Coff.global_symbol_bit | global_index,
177712 }),
177713 } },
177714 });
177715 switch (tag) {
177716 .mov => {},
177717 .call => try self.asmRegister(.{ ._, .call }, scratch_reg),
177718 else => unreachable,
177719 }
177720 } else return self.fail("TODO implement calling extern functions", .{});
177721}
177722
177723177612fn genLazySymbolRef(
177724177613 self: *CodeGen,
177725177614 comptime tag: Mir.Inst.Tag,
177726177615 reg: Register,
177727177616 lazy_sym: link.File.LazySymbol,
177728177617) InnerError!void {
177729 const pt = self.pt;
177730 if (self.bin_file.cast(.elf)) |elf_file| {
177731 const zo = elf_file.zigObjectPtr().?;
177732 const sym_index = zo.getOrCreateMetadataForLazySymbol(elf_file, pt, lazy_sym) catch |err|
177733 return self.fail("{s} creating lazy symbol", .{@errorName(err)});
177734 if (self.mod.pic) {
177735 switch (tag) {
177736 .lea, .call => try self.genSetReg(reg, .usize, .{
177737 .lea_symbol = .{ .sym_index = sym_index },
177738 }, .{}),
177739 .mov => try self.genSetReg(reg, .usize, .{
177740 .load_symbol = .{ .sym_index = sym_index },
177741 }, .{}),
177742 else => unreachable,
177743 }
177744 switch (tag) {
177745 .lea, .mov => {},
177746 .call => try self.asmRegister(.{ ._, .call }, reg),
177747 else => unreachable,
177748 }
177749 } else switch (tag) {
177750 .lea, .mov => try self.asmRegisterMemory(.{ ._, tag }, reg.to64(), .{
177751 .base = .{ .reloc = sym_index },
177752 .mod = .{ .rm = .{ .size = .qword } },
177753 }),
177754 .call => try self.asmImmediate(.{ ._, .call }, .rel(.{ .sym_index = sym_index })),
177755 else => unreachable,
177756 }
177757 } else if (self.bin_file.cast(.plan9)) |p9_file| {
177758 const atom_index = p9_file.getOrCreateAtomForLazySymbol(pt, lazy_sym) catch |err|
177759 return self.fail("{s} creating lazy symbol", .{@errorName(err)});
177760 var atom = p9_file.getAtom(atom_index);
177761 _ = atom.getOrCreateOffsetTableEntry(p9_file);
177762 const got_addr = atom.getOffsetTableAddress(p9_file);
177763 const got_mem: Memory = .{
177764 .base = .{ .reg = .ds },
177765 .mod = .{ .rm = .{
177766 .size = .qword,
177767 .disp = @intCast(got_addr),
177768 } },
177769 };
177770 switch (tag) {
177771 .lea, .mov => try self.asmRegisterMemory(.{ ._, .mov }, reg.to64(), got_mem),
177772 .call => try self.asmMemory(.{ ._, .call }, got_mem),
177773 else => unreachable,
177774 }
177775 switch (tag) {
177776 .lea, .call => {},
177777 .mov => try self.asmRegisterMemory(
177778 .{ ._, tag },
177779 reg.to64(),
177780 .initSib(.qword, .{ .base = .{ .reg = reg.to64() } }),
177781 ),
177782 else => unreachable,
177783 }
177784 } else if (self.bin_file.cast(.coff)) |coff_file| {
177785 const atom_index = coff_file.getOrCreateAtomForLazySymbol(pt, lazy_sym) catch |err|
177786 return self.fail("{s} creating lazy symbol", .{@errorName(err)});
177787 const sym_index = coff_file.getAtom(atom_index).getSymbolIndex().?;
177788 switch (tag) {
177789 .lea, .call => try self.genSetReg(reg, .usize, .{ .lea_got = sym_index }, .{}),
177790 .mov => try self.genSetReg(reg, .usize, .{ .load_got = sym_index }, .{}),
177791 else => unreachable,
177792 }
177793 switch (tag) {
177794 .lea, .mov => {},
177795 .call => try self.asmRegister(.{ ._, .call }, reg),
177796 else => unreachable,
177797 }
177798 } else if (self.bin_file.cast(.macho)) |macho_file| {
177799 const zo = macho_file.getZigObject().?;
177800 const sym_index = zo.getOrCreateMetadataForLazySymbol(macho_file, pt, lazy_sym) catch |err|
177801 return self.fail("{s} creating lazy symbol", .{@errorName(err)});
177802 const sym = zo.symbols.items[sym_index];
177618 if (self.mod.pic) {
177803177619 switch (tag) {
177804177620 .lea, .call => try self.genSetReg(reg, .usize, .{
177805 .lea_symbol = .{ .sym_index = sym.nlist_idx },
177621 .lea_lazy_sym = lazy_sym,
177806177622 }, .{}),
177807177623 .mov => try self.genSetReg(reg, .usize, .{
177808 .load_symbol = .{ .sym_index = sym.nlist_idx },
177624 .lea_lazy_sym = lazy_sym,
177809177625 }, .{}),
177810177626 else => unreachable,
177811177627 }
......@@ -177814,8 +177630,13 @@ fn genLazySymbolRef(
177814177630 .call => try self.asmRegister(.{ ._, .call }, reg),
177815177631 else => unreachable,
177816177632 }
177817 } else {
177818 return self.fail("TODO implement genLazySymbol for x86_64 {s}", .{@tagName(self.bin_file.tag)});
177633 } else switch (tag) {
177634 .lea, .mov => try self.asmRegisterMemory(.{ ._, tag }, reg.to64(), .{
177635 .base = .{ .lazy_sym = lazy_sym },
177636 .mod = .{ .rm = .{ .size = .qword } },
177637 }),
177638 .call => try self.asmImmediate(.{ ._, .call }, .{ .lazy_sym = lazy_sym }),
177639 else => unreachable,
177819177640 }
177820177641}
177821177642
......@@ -177968,11 +177789,11 @@ fn airFloatFromInt(self: *CodeGen, inst: Air.Inst.Index) !void {
177968177789 src_ty.fmt(pt), dst_ty.fmt(pt),
177969177790 });
177970177791
177971 var callee_buf: ["__floatun?i?f".len]u8 = undefined;
177972 break :result try self.genCall(.{ .lib = .{
177792 var sym_buf: ["__floatun?i?f".len]u8 = undefined;
177793 break :result try self.genCall(.{ .extern_func = .{
177973177794 .return_type = dst_ty.toIntern(),
177974177795 .param_types = &.{src_ty.toIntern()},
177975 .callee = std.fmt.bufPrint(&callee_buf, "__float{s}{c}i{c}f", .{
177796 .sym = std.fmt.bufPrint(&sym_buf, "__float{s}{c}i{c}f", .{
177976177797 switch (src_signedness) {
177977177798 .signed => "",
177978177799 .unsigned => "un",
......@@ -178048,11 +177869,11 @@ fn airIntFromFloat(self: *CodeGen, inst: Air.Inst.Index) !void {
178048177869 src_ty.fmt(pt), dst_ty.fmt(pt),
178049177870 });
178050177871
178051 var callee_buf: ["__fixuns?f?i".len]u8 = undefined;
178052 break :result try self.genCall(.{ .lib = .{
177872 var sym_buf: ["__fixuns?f?i".len]u8 = undefined;
177873 break :result try self.genCall(.{ .extern_func = .{
178053177874 .return_type = dst_ty.toIntern(),
178054177875 .param_types = &.{src_ty.toIntern()},
178055 .callee = std.fmt.bufPrint(&callee_buf, "__fix{s}{c}f{c}i", .{
177876 .sym = std.fmt.bufPrint(&sym_buf, "__fix{s}{c}f{c}i", .{
178056177877 switch (dst_signedness) {
178057177878 .signed => "",
178058177879 .unsigned => "uns",
......@@ -178153,9 +177974,9 @@ fn airCmpxchg(self: *CodeGen, inst: Air.Inst.Index) !void {
178153177974 .off => return self.fail("TODO airCmpxchg with {s}", .{@tagName(ptr_mcv)}),
178154177975 }
178155177976 const ptr_lock = switch (ptr_mem.base) {
178156 .none, .frame, .reloc, .pcrel => null,
177977 .none, .frame, .nav, .uav => null,
178157177978 .reg => |reg| self.register_manager.lockReg(reg),
178158 .table, .rip_inst => unreachable,
177979 .table, .rip_inst, .lazy_sym, .extern_func => unreachable,
178159177980 };
178160177981 defer if (ptr_lock) |lock| self.register_manager.unlockReg(lock);
178161177982
......@@ -178236,9 +178057,9 @@ fn atomicOp(
178236178057 .off => return self.fail("TODO airCmpxchg with {s}", .{@tagName(ptr_mcv)}),
178237178058 }
178238178059 const mem_lock = switch (ptr_mem.base) {
178239 .none, .frame, .reloc, .pcrel => null,
178060 .none, .frame, .nav, .uav => null,
178240178061 .reg => |reg| self.register_manager.lockReg(reg),
178241 .table, .rip_inst => unreachable,
178062 .table, .rip_inst, .lazy_sym, .extern_func => unreachable,
178242178063 };
178243178064 defer if (mem_lock) |lock| self.register_manager.unlockReg(lock);
178244178065
......@@ -179627,7 +179448,7 @@ fn airSelect(self: *CodeGen, inst: Air.Inst.Index) !void {
179627179448 var mask_elems_buf: [32]u8 = undefined;
179628179449 const mask_elems = mask_elems_buf[0..mask_len];
179629179450 for (mask_elems, 0..) |*elem, bit| elem.* = @intCast(bit / elem_bits);
179630 const mask_mcv = try self.genTypedValue(.fromInterned(try pt.intern(.{ .aggregate = .{
179451 const mask_mcv = try self.lowerValue(.fromInterned(try pt.intern(.{ .aggregate = .{
179631179452 .ty = mask_ty.toIntern(),
179632179453 .storage = .{ .bytes = try zcu.intern_pool.getOrPutString(zcu.gpa, pt.tid, mask_elems, .maybe_embedded_nulls) },
179633179454 } })));
......@@ -179655,7 +179476,7 @@ fn airSelect(self: *CodeGen, inst: Air.Inst.Index) !void {
179655179476 mask_elem_ty,
179656179477 @as(u8, 1) << @truncate(bit),
179657179478 )).toIntern();
179658 const mask_mcv = try self.genTypedValue(.fromInterned(try pt.intern(.{ .aggregate = .{
179479 const mask_mcv = try self.lowerValue(.fromInterned(try pt.intern(.{ .aggregate = .{
179659179480 .ty = mask_ty.toIntern(),
179660179481 .storage = .{ .elems = mask_elems },
179661179482 } })));
......@@ -180386,7 +180207,7 @@ fn airShuffle(self: *CodeGen, inst: Air.Inst.Index) !void {
180386180207 else
180387180208 try select_mask_elem_ty.minIntScalar(pt, select_mask_elem_ty)).toIntern();
180388180209 }
180389 const select_mask_mcv = try self.genTypedValue(.fromInterned(try pt.intern(.{ .aggregate = .{
180210 const select_mask_mcv = try self.lowerValue(.fromInterned(try pt.intern(.{ .aggregate = .{
180390180211 .ty = select_mask_ty.toIntern(),
180391180212 .storage = .{ .elems = select_mask_elems[0..mask_elems.len] },
180392180213 } })));
......@@ -180531,7 +180352,7 @@ fn airShuffle(self: *CodeGen, inst: Air.Inst.Index) !void {
180531180352 })).toIntern();
180532180353 }
180533180354 const lhs_mask_ty = try pt.vectorType(.{ .len = max_abi_size, .child = .u8_type });
180534 const lhs_mask_mcv = try self.genTypedValue(.fromInterned(try pt.intern(.{ .aggregate = .{
180355 const lhs_mask_mcv = try self.lowerValue(.fromInterned(try pt.intern(.{ .aggregate = .{
180535180356 .ty = lhs_mask_ty.toIntern(),
180536180357 .storage = .{ .elems = lhs_mask_elems[0..max_abi_size] },
180537180358 } })));
......@@ -180562,7 +180383,7 @@ fn airShuffle(self: *CodeGen, inst: Air.Inst.Index) !void {
180562180383 })).toIntern();
180563180384 }
180564180385 const rhs_mask_ty = try pt.vectorType(.{ .len = max_abi_size, .child = .u8_type });
180565 const rhs_mask_mcv = try self.genTypedValue(.fromInterned(try pt.intern(.{ .aggregate = .{
180386 const rhs_mask_mcv = try self.lowerValue(.fromInterned(try pt.intern(.{ .aggregate = .{
180566180387 .ty = rhs_mask_ty.toIntern(),
180567180388 .storage = .{ .elems = rhs_mask_elems[0..max_abi_size] },
180568180389 } })));
......@@ -180896,7 +180717,7 @@ fn airAggregateInit(self: *CodeGen, inst: Air.Inst.Index) !void {
180896180717 .{ .frame = frame_index },
180897180718 @intCast(elem_size * elements.len),
180898180719 elem_ty,
180899 try self.genTypedValue(sentinel),
180720 try self.lowerValue(sentinel),
180900180721 .{},
180901180722 );
180902180723 break :result .{ .load_frame = .{ .index = frame_index } };
......@@ -180980,11 +180801,11 @@ fn airMulAdd(self: *CodeGen, inst: Air.Inst.Index) !void {
180980180801 ty.fmt(pt),
180981180802 });
180982180803
180983 var callee_buf: ["__fma?".len]u8 = undefined;
180984 break :result try self.genCall(.{ .lib = .{
180804 var sym_buf: ["__fma?".len]u8 = undefined;
180805 break :result try self.genCall(.{ .extern_func = .{
180985180806 .return_type = ty.toIntern(),
180986180807 .param_types = &.{ ty.toIntern(), ty.toIntern(), ty.toIntern() },
180987 .callee = std.fmt.bufPrint(&callee_buf, "{s}fma{s}", .{
180808 .sym = std.fmt.bufPrint(&sym_buf, "{s}fma{s}", .{
180988180809 floatLibcAbiPrefix(ty),
180989180810 floatLibcAbiSuffix(ty),
180990180811 }) catch unreachable,
......@@ -181384,7 +181205,7 @@ fn resolveInst(self: *CodeGen, ref: Air.Inst.Ref) InnerError!MCValue {
181384181205 const mcv: MCValue = if (ref.toIndex()) |inst| mcv: {
181385181206 break :mcv self.inst_tracking.getPtr(inst).?.short;
181386181207 } else mcv: {
181387 break :mcv try self.genTypedValue(.fromInterned(ref.toInterned().?));
181208 break :mcv try self.lowerValue(.fromInterned(ref.toInterned().?));
181388181209 };
181389181210
181390181211 switch (mcv) {
......@@ -181422,31 +181243,17 @@ fn limitImmediateType(self: *CodeGen, operand: Air.Inst.Ref, comptime T: type) !
181422181243 return mcv;
181423181244}
181424181245
181425fn genResult(self: *CodeGen, res: codegen.GenResult) InnerError!MCValue {
181426 return switch (res) {
181427 .mcv => |mcv| switch (mcv) {
181428 .none => .none,
181429 .undef => .undef,
181430 .immediate => |imm| .{ .immediate = imm },
181431 .memory => |addr| .{ .memory = addr },
181432 .load_symbol => |sym_index| .{ .load_symbol = .{ .sym_index = sym_index } },
181433 .lea_symbol => |sym_index| .{ .lea_symbol = .{ .sym_index = sym_index } },
181434 .load_direct => |sym_index| .{ .load_direct = sym_index },
181435 .lea_direct => |sym_index| .{ .lea_direct = sym_index },
181436 .load_got => |sym_index| .{ .lea_got = sym_index },
181437 },
181438 .fail => |msg| return self.failMsg(msg),
181246fn lowerValue(cg: *CodeGen, val: Value) Allocator.Error!MCValue {
181247 return switch (try codegen.lowerValue(cg.pt, val, cg.target)) {
181248 .none => .none,
181249 .undef => .undef,
181250 .immediate => |imm| .{ .immediate = imm },
181251 .lea_nav => |nav| .{ .lea_nav = nav },
181252 .lea_uav => |uav| .{ .lea_uav = uav },
181253 .load_uav => |uav| .{ .load_uav = uav },
181439181254 };
181440181255}
181441181256
181442fn genTypedValue(self: *CodeGen, val: Value) InnerError!MCValue {
181443 return self.genResult(try codegen.genTypedValue(self.bin_file, self.pt, self.src_loc, val, self.target.*));
181444}
181445
181446fn lowerUav(self: *CodeGen, val: Value, alignment: InternPool.Alignment) InnerError!MCValue {
181447 return self.genResult(try self.bin_file.lowerUav(self.pt, val.toIntern(), alignment, self.src_loc));
181448}
181449
181450181257const CallMCValues = struct {
181451181258 args: []MCValue,
181452181259 air_arg_count: u32,
......@@ -182311,16 +182118,16 @@ const Temp = struct {
182311182118 .register_offset,
182312182119 .register_mask,
182313182120 .memory,
182314 .load_symbol,
182315 .lea_symbol,
182316 .load_pcrel,
182317 .lea_pcrel,
182318182121 .indirect,
182319 .load_direct,
182320 .lea_direct,
182321 .load_got,
182322 .lea_got,
182323182122 .lea_frame,
182123 .load_nav,
182124 .lea_nav,
182125 .load_uav,
182126 .lea_uav,
182127 .load_lazy_sym,
182128 .lea_lazy_sym,
182129 .lea_extern_func,
182130 .load_extern_func,
182324182131 .elementwise_args,
182325182132 .reserved_frame,
182326182133 .air_ref,
......@@ -182363,15 +182170,11 @@ const Temp = struct {
182363182170 .mod = .{ .rm = .{ .disp = reg_off.off + off } },
182364182171 });
182365182172 },
182366 .load_symbol, .load_frame => {
182173 .load_frame, .load_nav, .lea_nav, .load_uav, .lea_uav, .load_lazy_sym, .lea_lazy_sym => {
182367182174 const new_reg = try cg.register_manager.allocReg(new_temp_index.toIndex(), abi.RegisterClass.gp);
182368182175 new_temp_index.tracking(cg).* = .init(.{ .register_offset = .{ .reg = new_reg, .off = off } });
182369182176 try cg.genSetReg(new_reg, .usize, mcv, .{});
182370182177 },
182371 .lea_symbol => |sym_off| new_temp_index.tracking(cg).* = .init(.{ .lea_symbol = .{
182372 .sym_index = sym_off.sym_index,
182373 .off = sym_off.off + off,
182374 } }),
182375182178 .lea_frame => |frame_addr| new_temp_index.tracking(cg).* = .init(.{ .lea_frame = .{
182376182179 .index = frame_addr.index,
182377182180 .off = frame_addr.off + off,
......@@ -182404,14 +182207,6 @@ const Temp = struct {
182404182207 } });
182405182208 return;
182406182209 },
182407 .lea_symbol => |sym_off| {
182408 assert(std.meta.eql(temp_tracking.long.lea_symbol, sym_off));
182409 temp_tracking.* = .init(.{ .lea_symbol = .{
182410 .sym_index = sym_off.sym_index,
182411 .off = sym_off.off + off,
182412 } });
182413 return;
182414 },
182415182210 .lea_frame => |frame_addr| {
182416182211 assert(std.meta.eql(temp_tracking.long.lea_frame, frame_addr));
182417182212 temp_tracking.* = .init(.{ .lea_frame = .{
......@@ -182460,53 +182255,85 @@ const Temp = struct {
182460182255 .mod = .{ .rm = .{ .disp = reg_off.off + @as(u31, limb_index) * 8 } },
182461182256 });
182462182257 },
182463 .load_symbol => |sym_off| {
182258 .load_frame => |frame_addr| {
182464182259 const new_reg =
182465182260 try cg.register_manager.allocReg(new_temp_index.toIndex(), abi.RegisterClass.gp);
182466182261 new_temp_index.tracking(cg).* = .init(.{ .register = new_reg });
182467182262 try cg.asmRegisterMemory(.{ ._, .mov }, new_reg.to64(), .{
182468 .base = .{ .reloc = sym_off.sym_index },
182263 .base = .{ .frame = frame_addr.index },
182469182264 .mod = .{ .rm = .{
182470182265 .size = .qword,
182471 .disp = sym_off.off + @as(u31, limb_index) * 8,
182266 .disp = frame_addr.off + @as(u31, limb_index) * 8,
182472182267 } },
182473182268 });
182474182269 },
182475 .lea_symbol => |sym_off| {
182270 .lea_frame => |frame_addr| {
182476182271 assert(limb_index == 0);
182477 new_temp_index.tracking(cg).* = .init(.{ .lea_symbol = sym_off });
182272 new_temp_index.tracking(cg).* = .init(.{ .lea_frame = frame_addr });
182478182273 },
182479 .load_pcrel => |sym_off| {
182274 .load_nav => |nav| {
182480182275 const new_reg =
182481182276 try cg.register_manager.allocReg(new_temp_index.toIndex(), abi.RegisterClass.gp);
182482182277 new_temp_index.tracking(cg).* = .init(.{ .register = new_reg });
182483182278 try cg.asmRegisterMemory(.{ ._, .mov }, new_reg.to64(), .{
182484 .base = .{ .pcrel = sym_off.sym_index },
182279 .base = .{ .nav = nav },
182485182280 .mod = .{ .rm = .{
182486182281 .size = .qword,
182487 .disp = sym_off.off + @as(u31, limb_index) * 8,
182282 .disp = @as(u31, limb_index) * 8,
182488182283 } },
182489182284 });
182490182285 },
182491 .lea_pcrel => |sym_off| {
182286 .lea_nav => |nav| {
182492182287 assert(limb_index == 0);
182493 new_temp_index.tracking(cg).* = .init(.{ .lea_pcrel = sym_off });
182288 new_temp_index.tracking(cg).* = .init(.{ .lea_nav = nav });
182494182289 },
182495 .load_frame => |frame_addr| {
182290 .load_uav => |uav| {
182496182291 const new_reg =
182497182292 try cg.register_manager.allocReg(new_temp_index.toIndex(), abi.RegisterClass.gp);
182498182293 new_temp_index.tracking(cg).* = .init(.{ .register = new_reg });
182499182294 try cg.asmRegisterMemory(.{ ._, .mov }, new_reg.to64(), .{
182500 .base = .{ .frame = frame_addr.index },
182295 .base = .{ .uav = uav },
182501182296 .mod = .{ .rm = .{
182502182297 .size = .qword,
182503 .disp = frame_addr.off + @as(u31, limb_index) * 8,
182298 .disp = @as(u31, limb_index) * 8,
182504182299 } },
182505182300 });
182506182301 },
182507 .lea_frame => |frame_addr| {
182302 .lea_uav => |uav| {
182508182303 assert(limb_index == 0);
182509 new_temp_index.tracking(cg).* = .init(.{ .lea_frame = frame_addr });
182304 new_temp_index.tracking(cg).* = .init(.{ .lea_uav = uav });
182305 },
182306 .load_lazy_sym => |lazy_sym| {
182307 const new_reg =
182308 try cg.register_manager.allocReg(new_temp_index.toIndex(), abi.RegisterClass.gp);
182309 new_temp_index.tracking(cg).* = .init(.{ .register = new_reg });
182310 try cg.asmRegisterMemory(.{ ._, .mov }, new_reg.to64(), .{
182311 .base = .{ .lazy_sym = lazy_sym },
182312 .mod = .{ .rm = .{
182313 .size = .qword,
182314 .disp = @as(u31, limb_index) * 8,
182315 } },
182316 });
182317 },
182318 .lea_lazy_sym => |lazy_sym| {
182319 assert(limb_index == 0);
182320 new_temp_index.tracking(cg).* = .init(.{ .lea_lazy_sym = lazy_sym });
182321 },
182322 .load_extern_func => |extern_func| {
182323 const new_reg =
182324 try cg.register_manager.allocReg(new_temp_index.toIndex(), abi.RegisterClass.gp);
182325 new_temp_index.tracking(cg).* = .init(.{ .register = new_reg });
182326 try cg.asmRegisterMemory(.{ ._, .mov }, new_reg.to64(), .{
182327 .base = .{ .extern_func = extern_func },
182328 .mod = .{ .rm = .{
182329 .size = .qword,
182330 .disp = @as(u31, limb_index) * 8,
182331 } },
182332 });
182333 },
182334 .lea_extern_func => |extern_func| {
182335 assert(limb_index == 0);
182336 new_temp_index.tracking(cg).* = .init(.{ .lea_extern_func = extern_func });
182510182337 },
182511182338 }
182512182339 cg.next_temp_index = @enumFromInt(@intFromEnum(new_temp_index) + 1);
......@@ -182563,7 +182390,7 @@ const Temp = struct {
182563182390 const temp_tracking = temp_index.tracking(cg);
182564182391 switch (temp_tracking.short) {
182565182392 else => {},
182566 .register, .lea_symbol, .lea_frame => {
182393 .register, .lea_frame, .lea_nav, .lea_uav, .lea_lazy_sym => {
182567182394 assert(limb_index == 0);
182568182395 cg.temp_type[@intFromEnum(temp_index)] = limb_ty;
182569182396 return;
......@@ -182580,15 +182407,6 @@ const Temp = struct {
182580182407 cg.temp_type[@intFromEnum(temp_index)] = limb_ty;
182581182408 return;
182582182409 },
182583 .load_symbol => |sym_off| {
182584 assert(std.meta.eql(temp_tracking.long.load_symbol, sym_off));
182585 temp_tracking.* = .init(.{ .load_symbol = .{
182586 .sym_index = sym_off.sym_index,
182587 .off = sym_off.off + @as(u31, limb_index) * 8,
182588 } });
182589 cg.temp_type[@intFromEnum(temp_index)] = limb_ty;
182590 return;
182591 },
182592182410 .load_frame => |frame_addr| if (!frame_addr.index.isNamed()) {
182593182411 assert(std.meta.eql(temp_tracking.long.load_frame, frame_addr));
182594182412 temp_tracking.* = .init(.{ .load_frame = .{
......@@ -182779,27 +182597,20 @@ const Temp = struct {
182779182597 .immediate,
182780182598 .register,
182781182599 .register_offset,
182782 .lea_direct,
182783 .lea_got,
182784182600 .lea_frame,
182785182601 => return false,
182786182602 .memory,
182787182603 .indirect,
182788 .load_symbol,
182789 .load_pcrel,
182790 .load_direct,
182791 .load_got,
182792182604 .load_frame,
182605 .load_nav,
182606 .lea_nav,
182607 .load_uav,
182608 .lea_uav,
182609 .load_lazy_sym,
182610 .lea_lazy_sym,
182611 .load_extern_func,
182612 .lea_extern_func,
182793182613 => return temp.toRegClass(true, .general_purpose, cg),
182794 .lea_symbol, .lea_pcrel => |sym_off| {
182795 const off = sym_off.off;
182796 // hack around linker relocation bugs
182797 if (false and off == 0) return false;
182798 try temp.toOffset(-off, cg);
182799 while (try temp.toRegClass(true, .general_purpose, cg)) {}
182800 try temp.toOffset(off, cg);
182801 return true;
182802 },
182803182614 }
182804182615 }
182805182616
......@@ -182866,7 +182677,7 @@ const Temp = struct {
182866182677 ), cg),
182867182678 else => unreachable,
182868182679 },
182869 .memory, .indirect, .load_frame, .load_symbol => {
182680 .memory, .indirect, .load_frame, .load_nav, .load_uav, .load_lazy_sym => {
182870182681 var val_ptr = try cg.tempInit(.usize, val_mcv.address());
182871182682 var len = try cg.tempInit(.usize, .{ .immediate = val_ty.abiSize(cg.pt.zcu) });
182872182683 try val_ptr.memcpy(ptr, &len, cg);
......@@ -182904,7 +182715,11 @@ const Temp = struct {
182904182715 // hack around linker relocation bugs
182905182716 switch (ptr.tracking(cg).short) {
182906182717 else => {},
182907 .lea_symbol => while (try ptr.toRegClass(false, .general_purpose, cg)) {},
182718 .lea_nav,
182719 .lea_uav,
182720 .lea_lazy_sym,
182721 .lea_extern_func,
182722 => while (try ptr.toRegClass(false, .general_purpose, cg)) {},
182908182723 }
182909182724 try cg.asmMemoryImmediate(
182910182725 .{ ._, .mov },
......@@ -182918,7 +182733,11 @@ const Temp = struct {
182918182733 // hack around linker relocation bugs
182919182734 switch (ptr.tracking(cg).short) {
182920182735 else => {},
182921 .lea_symbol => while (try ptr.toRegClass(false, .general_purpose, cg)) {},
182736 .lea_nav,
182737 .lea_uav,
182738 .lea_lazy_sym,
182739 .lea_extern_func,
182740 => while (try ptr.toRegClass(false, .general_purpose, cg)) {},
182922182741 }
182923182742 try cg.asmSetccMemory(
182924182743 cc,
......@@ -182962,8 +182781,8 @@ const Temp = struct {
182962182781 try ptr.tracking(cg).short.deref().mem(cg, .{ .size = .byte }),
182963182782 );
182964182783 },
182965 .lea_frame, .lea_symbol => continue :val_to_gpr,
182966 .memory, .indirect, .load_frame, .load_symbol => {
182784 .lea_frame, .lea_nav, .lea_uav, .lea_lazy_sym => continue :val_to_gpr,
182785 .memory, .indirect, .load_frame, .load_nav, .load_uav, .load_lazy_sym => {
182967182786 var val_ptr = try cg.tempInit(.usize, val_mcv.address());
182968182787 var len = try cg.tempInit(.usize, .{ .immediate = val_ty.abiSize(cg.pt.zcu) });
182969182788 try ptr.memcpy(&val_ptr, &len, cg);
......@@ -183003,7 +182822,7 @@ const Temp = struct {
183003182822 ), cg),
183004182823 else => unreachable,
183005182824 },
183006 .memory, .indirect, .load_frame, .load_symbol => {
182825 .memory, .indirect, .load_frame, .load_nav, .load_uav, .load_lazy_sym => {
183007182826 var val_ptr = try cg.tempInit(.usize, val_mcv.address());
183008182827 var src_ptr =
183009182828 try cg.tempInit(.usize, src.tracking(cg).short.address().offset(opts.disp));
......@@ -183097,8 +182916,8 @@ const Temp = struct {
183097182916 }),
183098182917 );
183099182918 },
183100 .lea_frame, .lea_symbol => continue :val_to_gpr,
183101 .memory, .indirect, .load_frame, .load_symbol => {
182919 .lea_frame, .lea_nav, .lea_uav, .lea_lazy_sym => continue :val_to_gpr,
182920 .memory, .indirect, .load_frame, .load_nav, .load_uav, .load_lazy_sym => {
183102182921 var dst_ptr =
183103182922 try cg.tempInit(.usize, dst.tracking(cg).short.address().offset(opts.disp));
183104182923 var val_ptr = try cg.tempInit(.usize, val_mcv.address());
......@@ -183119,7 +182938,7 @@ const Temp = struct {
183119182938 // hack around linker relocation bugs
183120182939 switch (ptr.tracking(cg).short) {
183121182940 else => {},
183122 .lea_symbol => |sym_off| if (dst_rc != .general_purpose or sym_off.off != 0)
182941 .lea_nav, .lea_uav, .lea_lazy_sym => if (dst_rc != .general_purpose)
183123182942 while (try ptr.toRegClass(false, .general_purpose, cg)) {},
183124182943 }
183125182944 try strat.read(cg, dst_reg, try ptr.tracking(cg).short.deref().mem(cg, .{
......@@ -183139,7 +182958,7 @@ const Temp = struct {
183139182958 // hack around linker relocation bugs
183140182959 switch (ptr.tracking(cg).short) {
183141182960 else => {},
183142 .lea_symbol => while (try ptr.toRegClass(false, .general_purpose, cg)) {},
182961 .lea_nav, .lea_uav, .lea_lazy_sym => while (try ptr.toRegClass(false, .general_purpose, cg)) {},
183143182962 }
183144182963 const strat = try cg.moveStrategy(src_ty, src_rc, false);
183145182964 try strat.write(cg, try ptr.tracking(cg).short.deref().mem(cg, .{
......@@ -186902,7 +186721,7 @@ const Temp = struct {
186902186721 },
186903186722 .call_frame = .{ .alignment = .@"16" },
186904186723 .extra_temps = .{
186905 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divti3" } } },
186724 .{ .type = .usize, .kind = .{ .extern_func = "__divti3" } },
186906186725 .unused,
186907186726 .unused,
186908186727 .unused,
......@@ -186931,7 +186750,7 @@ const Temp = struct {
186931186750 },
186932186751 .call_frame = .{ .alignment = .@"16" },
186933186752 .extra_temps = .{
186934 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__udivti3" } } },
186753 .{ .type = .usize, .kind = .{ .extern_func = "__udivti3" } },
186935186754 .unused,
186936186755 .unused,
186937186756 .unused,
......@@ -186964,7 +186783,7 @@ const Temp = struct {
186964186783 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 1 } } },
186965186784 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 2 } } },
186966186785 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 3 } } },
186967 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divei4" } } },
186786 .{ .type = .usize, .kind = .{ .extern_func = "__divei4" } },
186968186787 .unused,
186969186788 .unused,
186970186789 .unused,
......@@ -186997,7 +186816,7 @@ const Temp = struct {
186997186816 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 1 } } },
186998186817 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 2 } } },
186999186818 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 3 } } },
187000 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__udivei4" } } },
186819 .{ .type = .usize, .kind = .{ .extern_func = "__udivei4" } },
187001186820 .unused,
187002186821 .unused,
187003186822 .unused,
......@@ -187361,7 +187180,7 @@ const Temp = struct {
187361187180 .{ .type = .i64, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 1 } } },
187362187181 .{ .type = .u64, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 2 } } },
187363187182 .{ .type = .i64, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 3 } } },
187364 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divti3" } } },
187183 .{ .type = .usize, .kind = .{ .extern_func = "__divti3" } },
187365187184 .{ .type = .u64, .kind = .{ .ret_gpr = .{ .cc = .ccc, .at = 0 } } },
187366187185 .unused,
187367187186 .unused,
......@@ -187399,7 +187218,7 @@ const Temp = struct {
187399187218 .{ .type = .u64, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 1 } } },
187400187219 .{ .type = .u64, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 2 } } },
187401187220 .{ .type = .u64, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 3 } } },
187402 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__udivti3" } } },
187221 .{ .type = .usize, .kind = .{ .extern_func = "__udivti3" } },
187403187222 .{ .type = .u64, .kind = .{ .ret_gpr = .{ .cc = .ccc, .at = 0 } } },
187404187223 .unused,
187405187224 .unused,
......@@ -187437,7 +187256,7 @@ const Temp = struct {
187437187256 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 1 } } },
187438187257 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 2 } } },
187439187258 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 3 } } },
187440 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divei4" } } },
187259 .{ .type = .usize, .kind = .{ .extern_func = "__divei4" } },
187441187260 .unused,
187442187261 .unused,
187443187262 .unused,
......@@ -187473,7 +187292,7 @@ const Temp = struct {
187473187292 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 1 } } },
187474187293 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 2 } } },
187475187294 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 3 } } },
187476 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__udivei4" } } },
187295 .{ .type = .usize, .kind = .{ .extern_func = "__udivei4" } },
187477187296 .unused,
187478187297 .unused,
187479187298 .unused,
......@@ -187528,16 +187347,16 @@ const Temp = struct {
187528187347 .register_overflow,
187529187348 .register_mask,
187530187349 .memory,
187531 .load_symbol,
187532 .lea_symbol,
187533 .load_pcrel,
187534 .lea_pcrel,
187535187350 .indirect,
187536 .load_direct,
187537 .lea_direct,
187538 .load_got,
187539 .lea_got,
187540187351 .load_frame,
187352 .load_nav,
187353 .lea_nav,
187354 .load_uav,
187355 .lea_uav,
187356 .load_lazy_sym,
187357 .lea_lazy_sym,
187358 .load_extern_func,
187359 .lea_extern_func,
187541187360 => {
187542187361 const result = try cg.allocRegOrMem(inst, true);
187543187362 try cg.genCopy(cg.typeOfIndex(inst), result, temp_mcv, .{});
......@@ -187714,7 +187533,7 @@ fn tempInit(cg: *CodeGen, ty: Type, value: MCValue) InnerError!Temp {
187714187533}
187715187534
187716187535fn tempFromValue(cg: *CodeGen, value: Value) InnerError!Temp {
187717 return cg.tempInit(value.typeOf(cg.pt.zcu), try cg.genTypedValue(value));
187536 return cg.tempInit(value.typeOf(cg.pt.zcu), try cg.lowerValue(value));
187718187537}
187719187538
187720187539fn tempMemFromValue(cg: *CodeGen, value: Value) InnerError!Temp {
......@@ -187722,13 +187541,20 @@ fn tempMemFromValue(cg: *CodeGen, value: Value) InnerError!Temp {
187722187541}
187723187542
187724187543fn tempMemFromAlignedValue(cg: *CodeGen, alignment: InternPool.Alignment, value: Value) InnerError!Temp {
187725 return cg.tempInit(value.typeOf(cg.pt.zcu), try cg.lowerUav(value, alignment));
187544 const ty = value.typeOf(cg.pt.zcu);
187545 return cg.tempInit(ty, .{ .load_uav = .{
187546 .val = value.toIntern(),
187547 .orig_ty = (try cg.pt.ptrType(.{
187548 .child = ty.toIntern(),
187549 .flags = .{
187550 .is_const = true,
187551 .alignment = alignment,
187552 },
187553 })).toIntern(),
187554 } });
187726187555}
187727187556
187728187557fn tempFromOperand(cg: *CodeGen, op_ref: Air.Inst.Ref, op_dies: bool) InnerError!Temp {
187729 const zcu = cg.pt.zcu;
187730 const ip = &zcu.intern_pool;
187731
187732187558 if (op_dies) {
187733187559 const temp_index = cg.next_temp_index;
187734187560 const temp: Temp = .{ .index = temp_index.toIndex() };
......@@ -187742,8 +187568,7 @@ fn tempFromOperand(cg: *CodeGen, op_ref: Air.Inst.Ref, op_dies: bool) InnerError
187742187568 }
187743187569
187744187570 if (op_ref.toIndex()) |op_inst| return .{ .index = op_inst };
187745 const val = op_ref.toInterned().?;
187746 return cg.tempInit(.fromInterned(ip.typeOf(val)), try cg.genTypedValue(.fromInterned(val)));
187571 return cg.tempFromValue(.fromInterned(op_ref.toInterned().?));
187747187572}
187748187573
187749187574fn tempsFromOperandsInner(
......@@ -188578,8 +188403,8 @@ const Select = struct {
188578188403 splat_int_mem: struct { ref: Select.Operand.Ref, inside: enum { umin, smin, smax } = .umin, outside: enum { smin, smax } },
188579188404 splat_float_mem: struct { ref: Select.Operand.Ref, inside: enum { zero } = .zero, outside: f16 },
188580188405 frame: FrameIndex,
188581 lazy_symbol: struct { kind: link.File.LazySymbol.Kind, ref: Select.Operand.Ref = .none },
188582 symbol: *const struct { lib: ?[]const u8 = null, name: []const u8 },
188406 lazy_sym: struct { kind: link.File.LazySymbol.Kind, ref: Select.Operand.Ref = .none },
188407 extern_func: [*:0]const u8,
188583188408
188584188409 const ConstSpec = struct {
188585188410 ref: Select.Operand.Ref = .none,
......@@ -189010,43 +188835,21 @@ const Select = struct {
189010188835 } }))), true };
189011188836 },
189012188837 .frame => |frame_index| .{ try cg.tempInit(spec.type, .{ .load_frame = .{ .index = frame_index } }), true },
189013 .lazy_symbol => |lazy_symbol_spec| {
188838 .lazy_sym => |lazy_symbol_spec| {
189014188839 const ip = &pt.zcu.intern_pool;
189015188840 const ty = if (lazy_symbol_spec.ref == .none) spec.type else lazy_symbol_spec.ref.typeOf(s);
189016 const lazy_symbol: link.File.LazySymbol = .{
188841 return .{ try cg.tempInit(.usize, .{ .lea_lazy_sym = .{
189017188842 .kind = lazy_symbol_spec.kind,
189018188843 .ty = switch (ip.indexToKey(ty.toIntern())) {
189019188844 .inferred_error_set_type => |func_index| switch (ip.funcIesResolvedUnordered(func_index)) {
189020 .none => unreachable, // unresolved inferred error set
188845 .none => unreachable,
189021188846 else => |ty_index| ty_index,
189022188847 },
189023188848 else => ty.toIntern(),
189024188849 },
189025 };
189026 return .{ try cg.tempInit(.usize, .{ .lea_symbol = .{
189027 .sym_index = if (cg.bin_file.cast(.elf)) |elf_file|
189028 elf_file.zigObjectPtr().?.getOrCreateMetadataForLazySymbol(elf_file, pt, lazy_symbol) catch |err|
189029 return cg.fail("{s} creating lazy symbol", .{@errorName(err)})
189030 else if (cg.bin_file.cast(.macho)) |macho_file|
189031 macho_file.getZigObject().?.getOrCreateMetadataForLazySymbol(macho_file, pt, lazy_symbol) catch |err|
189032 return cg.fail("{s} creating lazy symbol", .{@errorName(err)})
189033 else if (cg.bin_file.cast(.coff)) |coff_file|
189034 coff_file.getAtom(coff_file.getOrCreateAtomForLazySymbol(pt, lazy_symbol) catch |err|
189035 return cg.fail("{s} creating lazy symbol", .{@errorName(err)})).getSymbolIndex().?
189036 else
189037 return cg.fail("external symbols unimplemented for {s}", .{@tagName(cg.bin_file.tag)}),
189038188850 } }), true };
189039188851 },
189040 .symbol => |symbol_spec| .{ try cg.tempInit(spec.type, .{ .lea_symbol = .{
189041 .sym_index = if (cg.bin_file.cast(.elf)) |elf_file|
189042 try elf_file.getGlobalSymbol(symbol_spec.name, symbol_spec.lib)
189043 else if (cg.bin_file.cast(.macho)) |macho_file|
189044 try macho_file.getGlobalSymbol(symbol_spec.name, symbol_spec.lib)
189045 else if (cg.bin_file.cast(.coff)) |coff_file|
189046 link.File.Coff.global_symbol_bit | try coff_file.getGlobalSymbol(symbol_spec.name, symbol_spec.lib)
189047 else
189048 return cg.fail("external symbols unimplemented for {s}", .{@tagName(cg.bin_file.tag)}),
189049 } }), true },
188852 .extern_func => |extern_func_spec| .{ try cg.tempInit(spec.type, .{ .lea_extern_func = try cg.addString(std.mem.span(extern_func_spec)) }), true },
189050188853 };
189051188854 }
189052188855
......@@ -190089,9 +189892,12 @@ const Select = struct {
190089189892 .register => |reg| .{ .reg = s.lowerReg(reg.toSize(op.flags.base.size, s.cg.target)) },
190090189893 .register_pair, .register_triple, .register_quadruple, .register_offset, .register_overflow => unreachable,
190091189894 .register_mask => |reg_mask| .{ .reg = s.lowerReg(reg_mask.reg.toSize(op.flags.base.size, s.cg.target)) },
189895 .lea_nav => |nav| .{ .imm = .{ .nav = .{ .index = nav } } },
189896 .lea_uav => |uav| .{ .imm = .{ .uav = uav } },
189897 .lea_lazy_sym => |lazy_sym| .{ .imm = .{ .lazy_sym = lazy_sym } },
189898 .lea_extern_func => |extern_func| .{ .imm = .{ .extern_func = extern_func } },
190092189899 else => |mcv| .{ .mem = try mcv.mem(s.cg, .{ .size = op.flags.base.size }) },
190093 .lea_symbol => |sym_off| .{ .imm = .rel(sym_off) },
190094 .load_direct, .lea_direct, .load_got, .lea_got, .lea_frame, .elementwise_args, .reserved_frame, .air_ref => unreachable,
189900 .lea_frame, .elementwise_args, .reserved_frame, .air_ref => unreachable,
190095189901 },
190096189902 1...2 => |imm| switch (op.flags.base.ref.valueOf(s)) {
190097189903 inline .register_pair, .register_triple, .register_quadruple => |regs| .{
......@@ -190105,37 +189911,20 @@ const Select = struct {
190105189911 },
190106189912 .simm => .{ .imm = .s(op.adjustedImm(i32, s)) },
190107189913 .uimm => .{ .imm = .u(@bitCast(op.adjustedImm(i64, s))) },
190108 .lea => .{ .mem = .{
190109 .base = switch (op.flags.base.ref.valueOf(s)) {
189914 .lea => .{ .mem = try op.flags.base.ref.valueOf(s).deref().mem(s.cg, .{
189915 .size = op.flags.base.size,
189916 .index = switch (op.flags.index.ref.valueOf(s)) {
190110189917 else => unreachable,
190111189918 .none => .none,
190112 .register => |base_reg| .{ .reg = base_reg.toSize(.ptr, s.cg.target) },
190113 .register_offset => |base_reg_off| .{ .reg = base_reg_off.reg.toSize(.ptr, s.cg.target) },
190114 .lea_symbol => |base_sym_off| .{ .reloc = base_sym_off.sym_index },
190115 .lea_pcrel => |base_sym_off| .{ .pcrel = base_sym_off.sym_index },
189919 .register => |index_reg| index_reg.toSize(.ptr, s.cg.target),
190116189920 },
190117 .mod = .{ .rm = .{
190118 .size = op.flags.base.size,
190119 .index = switch (op.flags.index.ref.valueOf(s)) {
190120 else => unreachable,
190121 .none => .none,
190122 .register => |index_reg| index_reg.toSize(.ptr, s.cg.target),
190123 .register_offset => |index_reg_off| index_reg_off.reg.toSize(.ptr, s.cg.target),
190124 },
190125 .scale = op.flags.index.scale,
190126 .disp = op.adjustedImm(i32, s) + switch (op.flags.base.ref.valueOf(s)) {
190127 else => unreachable,
190128 .none, .register => 0,
190129 .register_offset => |base_reg_off| base_reg_off.off,
190130 .lea_symbol => |base_sym_off| base_sym_off.off,
190131 } + switch (op.flags.index.ref.valueOf(s)) {
190132 else => unreachable,
190133 .none, .register => 0,
190134 .register_offset => |base_reg_off| base_reg_off.off,
190135 .lea_symbol => |base_sym_off| base_sym_off.off,
190136 },
190137 } },
190138 } },
189921 .scale = op.flags.index.scale,
189922 .disp = op.adjustedImm(i32, s) + switch (op.flags.index.ref.valueOf(s)) {
189923 else => unreachable,
189924 .none, .register, .lea_nav, .lea_uav, .lea_lazy_sym, .lea_extern_func => 0,
189925 .register_offset => |base_reg_off| base_reg_off.off,
189926 },
189927 }) },
190139189928 .mem => .{ .mem = try op.flags.base.ref.valueOf(s).mem(s.cg, .{
190140189929 .size = op.flags.base.size,
190141189930 .index = switch (op.flags.index.ref.valueOf(s)) {
src/arch/x86_64/Emit.zig+546-235
......@@ -1,6 +1,9 @@
11//! This file contains the functionality for emitting x86_64 MIR as machine code
22
33lower: Lower,
4bin_file: *link.File,
5pt: Zcu.PerThread,
6pic: bool,
47atom_index: u32,
58debug_output: link.File.DebugInfoOutput,
69code: *std.ArrayListUnmanaged(u8),
......@@ -9,28 +12,28 @@ prev_di_loc: Loc,
912/// Relative to the beginning of `code`.
1013prev_di_pc: usize,
1114
15code_offset_mapping: std.ArrayListUnmanaged(u32),
16relocs: std.ArrayListUnmanaged(Reloc),
17table_relocs: std.ArrayListUnmanaged(TableReloc),
18
1219pub const Error = Lower.Error || error{
1320 EmitFail,
1421} || link.File.UpdateDebugInfoError;
1522
1623pub fn emitMir(emit: *Emit) Error!void {
17 const gpa = emit.lower.bin_file.comp.gpa;
18 const code_offset_mapping = try emit.lower.allocator.alloc(u32, emit.lower.mir.instructions.len);
19 defer emit.lower.allocator.free(code_offset_mapping);
20 var relocs: std.ArrayListUnmanaged(Reloc) = .empty;
21 defer relocs.deinit(emit.lower.allocator);
22 var table_relocs: std.ArrayListUnmanaged(TableReloc) = .empty;
23 defer table_relocs.deinit(emit.lower.allocator);
24 var local_name_index: usize = 0;
24 const gpa = emit.bin_file.comp.gpa;
25 try emit.code_offset_mapping.resize(gpa, emit.lower.mir.instructions.len);
26 emit.relocs.clearRetainingCapacity();
27 emit.table_relocs.clearRetainingCapacity();
2528 var local_index: usize = 0;
2629 for (0..emit.lower.mir.instructions.len) |mir_i| {
2730 const mir_index: Mir.Inst.Index = @intCast(mir_i);
28 code_offset_mapping[mir_index] = @intCast(emit.code.items.len);
31 emit.code_offset_mapping.items[mir_index] = @intCast(emit.code.items.len);
2932 const lowered = try emit.lower.lowerMir(mir_index);
3033 var lowered_relocs = lowered.relocs;
31 for (lowered.insts, 0..) |lowered_inst, lowered_index| {
32 const start_offset: u32 = @intCast(emit.code.items.len);
34 lowered_inst: for (lowered.insts, 0..) |lowered_inst, lowered_index| {
3335 if (lowered_inst.prefix == .directive) {
36 const start_offset: u32 = @intCast(emit.code.items.len);
3437 switch (emit.debug_output) {
3538 .dwarf => |dwarf| switch (lowered_inst.encoding.mnemonic) {
3639 .@".cfi_def_cfa" => try dwarf.genDebugFrame(start_offset, .{ .def_cfa = .{
......@@ -83,204 +86,305 @@ pub fn emitMir(emit: *Emit) Error!void {
8386 }
8487 continue;
8588 }
86 try lowered_inst.encode(emit.code.writer(gpa), .{});
87 const end_offset: u32 = @intCast(emit.code.items.len);
89 var reloc_info_buf: [2]RelocInfo = undefined;
90 var reloc_info_index: usize = 0;
8891 while (lowered_relocs.len > 0 and
8992 lowered_relocs[0].lowered_inst_index == lowered_index) : ({
9093 lowered_relocs = lowered_relocs[1..];
91 }) switch (lowered_relocs[0].target) {
92 .inst => |target| {
93 const inst_length: u4 = @intCast(end_offset - start_offset);
94 const reloc_offset, const reloc_length = reloc_offset_length: {
95 var reloc_offset = inst_length;
96 var op_index: usize = lowered_inst.ops.len;
97 while (true) {
98 op_index -= 1;
99 const op = lowered_inst.encoding.data.ops[op_index];
100 if (op == .none) continue;
101 const is_mem = op.isMemory();
102 const enc_length: u4 = if (is_mem) switch (lowered_inst.ops[op_index].mem.sib.base) {
103 .rip_inst => 4,
104 else => unreachable,
105 } else @intCast(std.math.divCeil(u7, @intCast(op.immBitSize()), 8) catch unreachable);
106 reloc_offset -= enc_length;
107 if (op_index == lowered_relocs[0].op_index) break :reloc_offset_length .{ reloc_offset, enc_length };
108 std.debug.assert(!is_mem);
109 }
110 };
111 try relocs.append(emit.lower.allocator, .{
112 .inst_offset = start_offset,
113 .inst_length = inst_length,
114 .source_offset = reloc_offset,
115 .source_length = reloc_length,
116 .target = target,
117 .target_offset = lowered_relocs[0].off,
118 });
119 },
120 .table => try table_relocs.append(emit.lower.allocator, .{
121 .source_offset = end_offset - 4,
122 .target_offset = lowered_relocs[0].off,
123 }),
124 .linker_extern_fn => |sym_index| if (emit.lower.bin_file.cast(.elf)) |elf_file| {
125 // Add relocation to the decl.
126 const zo = elf_file.zigObjectPtr().?;
127 const atom_ptr = zo.symbol(emit.atom_index).atom(elf_file).?;
128 const r_type = @intFromEnum(std.elf.R_X86_64.PLT32);
129 try atom_ptr.addReloc(gpa, .{
130 .r_offset = end_offset - 4,
131 .r_info = @as(u64, sym_index) << 32 | r_type,
132 .r_addend = lowered_relocs[0].off - 4,
133 }, zo);
134 } else if (emit.lower.bin_file.cast(.macho)) |macho_file| {
135 // Add relocation to the decl.
136 const zo = macho_file.getZigObject().?;
137 const atom = zo.symbols.items[emit.atom_index].getAtom(macho_file).?;
138 try atom.addReloc(macho_file, .{
139 .tag = .@"extern",
140 .offset = end_offset - 4,
141 .target = sym_index,
142 .addend = lowered_relocs[0].off,
143 .type = .branch,
144 .meta = .{
145 .pcrel = true,
146 .has_subtractor = false,
147 .length = 2,
148 .symbolnum = @intCast(sym_index),
94 reloc_info_index += 1;
95 }) reloc_info_buf[reloc_info_index] = .{
96 .op_index = lowered_relocs[0].op_index,
97 .off = lowered_relocs[0].off,
98 .target = target: switch (lowered_relocs[0].target) {
99 .inst => |inst| .{ .index = inst, .is_extern = false, .type = .inst },
100 .table => .{ .index = undefined, .is_extern = false, .type = .table },
101 .nav => |nav| {
102 const ip = &emit.pt.zcu.intern_pool;
103 const sym_index = switch (try codegen.genNavRef(
104 emit.bin_file,
105 emit.pt,
106 emit.lower.src_loc,
107 .fromInterned(ip.getNav(nav).typeOf(ip)),
108 nav,
109 emit.lower.target.*,
110 )) {
111 .mcv => |mcv| switch (mcv) {
112 else => std.debug.panic("{s}: {}\n", .{ @src().fn_name, mcv }),
113 .lea_symbol => |sym_index| sym_index,
114 },
115 .fail => |em| {
116 assert(emit.lower.err_msg == null);
117 emit.lower.err_msg = em;
118 return error.EmitFail;
119 },
120 };
121 break :target switch (ip.getNav(nav).status) {
122 .unresolved => unreachable,
123 .type_resolved => |type_resolved| .{
124 .index = sym_index,
125 .is_extern = false,
126 .type = if (type_resolved.is_threadlocal) .tlv else .symbol,
127 },
128 .fully_resolved => |fully_resolved| switch (ip.indexToKey(fully_resolved.val)) {
129 .@"extern" => |@"extern"| .{
130 .index = sym_index,
131 .is_extern = switch (@"extern".visibility) {
132 .default => true,
133 .hidden, .protected => false,
134 },
135 .type = if (@"extern".is_threadlocal) .tlv else .symbol,
136 .force_pcrel_direct = switch (@"extern".relocation) {
137 .any => false,
138 .pcrel => true,
139 },
140 },
141 .variable => |variable| .{
142 .index = sym_index,
143 .is_extern = false,
144 .type = if (variable.is_threadlocal) .tlv else .symbol,
145 },
146 else => .{ .index = sym_index, .is_extern = false, .type = .symbol },
147 },
148 };
149 },
150 .uav => |uav| .{
151 .index = switch (try emit.bin_file.lowerUav(
152 emit.pt,
153 uav.val,
154 Type.fromInterned(uav.orig_ty).ptrAlignment(emit.pt.zcu),
155 emit.lower.src_loc,
156 )) {
157 .mcv => |mcv| switch (mcv) {
158 else => std.debug.panic("{s}: {}\n", .{ @src().fn_name, mcv }),
159 .load_direct, .load_symbol => |sym_index| sym_index,
160 },
161 .fail => |em| {
162 assert(emit.lower.err_msg == null);
163 emit.lower.err_msg = em;
164 return error.EmitFail;
165 },
149166 },
150 });
151 } else if (emit.lower.bin_file.cast(.coff)) |coff_file| {
152 // Add relocation to the decl.
153 const atom_index = coff_file.getAtomIndexForSymbol(
154 .{ .sym_index = emit.atom_index, .file = null },
155 ).?;
156 const target = if (link.File.Coff.global_symbol_bit & sym_index != 0)
157 coff_file.getGlobalByIndex(link.File.Coff.global_symbol_mask & sym_index)
158 else
159 link.File.Coff.SymbolWithLoc{ .sym_index = sym_index, .file = null };
160 try coff_file.addRelocation(atom_index, .{
161 .type = .direct,
162 .target = target,
163 .offset = end_offset - 4,
164 .addend = @intCast(lowered_relocs[0].off),
165 .pcrel = true,
166 .length = 2,
167 });
168 } else return emit.fail("TODO implement extern reloc for {s}", .{
169 @tagName(emit.lower.bin_file.tag),
170 }),
171 .linker_tlsld => |sym_index| {
172 const elf_file = emit.lower.bin_file.cast(.elf).?;
173 const zo = elf_file.zigObjectPtr().?;
174 const atom = zo.symbol(emit.atom_index).atom(elf_file).?;
175 const r_type = @intFromEnum(std.elf.R_X86_64.TLSLD);
176 try atom.addReloc(gpa, .{
177 .r_offset = end_offset - 4,
178 .r_info = @as(u64, sym_index) << 32 | r_type,
179 .r_addend = lowered_relocs[0].off - 4,
180 }, zo);
181 },
182 .linker_dtpoff => |sym_index| {
183 const elf_file = emit.lower.bin_file.cast(.elf).?;
184 const zo = elf_file.zigObjectPtr().?;
185 const atom = zo.symbol(emit.atom_index).atom(elf_file).?;
186 const r_type = @intFromEnum(std.elf.R_X86_64.DTPOFF32);
187 try atom.addReloc(gpa, .{
188 .r_offset = end_offset - 4,
189 .r_info = @as(u64, sym_index) << 32 | r_type,
190 .r_addend = lowered_relocs[0].off,
191 }, zo);
192 },
193 .linker_reloc, .linker_pcrel => |sym_index| if (emit.lower.bin_file.cast(.elf)) |elf_file| {
194 const zo = elf_file.zigObjectPtr().?;
195 const atom = zo.symbol(emit.atom_index).atom(elf_file).?;
196 const sym = zo.symbol(sym_index);
197 if (emit.lower.pic) {
198 const r_type: u32 = if (sym.flags.is_extern_ptr and lowered_relocs[0].target != .linker_pcrel)
199 @intFromEnum(std.elf.R_X86_64.GOTPCREL)
167 .is_extern = false,
168 .type = .symbol,
169 },
170 .lazy_sym => |lazy_sym| .{
171 .index = if (emit.bin_file.cast(.elf)) |elf_file|
172 elf_file.zigObjectPtr().?.getOrCreateMetadataForLazySymbol(elf_file, emit.pt, lazy_sym) catch |err|
173 return emit.fail("{s} creating lazy symbol", .{@errorName(err)})
174 else if (emit.bin_file.cast(.macho)) |macho_file|
175 macho_file.getZigObject().?.getOrCreateMetadataForLazySymbol(macho_file, emit.pt, lazy_sym) catch |err|
176 return emit.fail("{s} creating lazy symbol", .{@errorName(err)})
177 else if (emit.bin_file.cast(.coff)) |coff_file| sym_index: {
178 const atom = coff_file.getOrCreateAtomForLazySymbol(emit.pt, lazy_sym) catch |err|
179 return emit.fail("{s} creating lazy symbol", .{@errorName(err)});
180 break :sym_index coff_file.getAtom(atom).getSymbolIndex().?;
181 } else if (emit.bin_file.cast(.plan9)) |p9_file|
182 p9_file.getOrCreateAtomForLazySymbol(emit.pt, lazy_sym) catch |err|
183 return emit.fail("{s} creating lazy symbol", .{@errorName(err)})
200184 else
201 @intFromEnum(std.elf.R_X86_64.PC32);
202 try atom.addReloc(gpa, .{
203 .r_offset = end_offset - 4,
204 .r_info = @as(u64, sym_index) << 32 | r_type,
205 .r_addend = lowered_relocs[0].off - 4,
206 }, zo);
207 } else {
208 const r_type: u32 = if (sym.flags.is_tls)
209 @intFromEnum(std.elf.R_X86_64.TPOFF32)
185 return emit.fail("lazy symbols unimplemented for {s}", .{@tagName(emit.bin_file.tag)}),
186 .is_extern = false,
187 .type = .symbol,
188 },
189 .extern_func => |extern_func| .{
190 .index = if (emit.bin_file.cast(.elf)) |elf_file|
191 try elf_file.getGlobalSymbol(extern_func.toSlice(&emit.lower.mir).?, null)
192 else if (emit.bin_file.cast(.macho)) |macho_file|
193 try macho_file.getGlobalSymbol(extern_func.toSlice(&emit.lower.mir).?, null)
194 else if (emit.bin_file.cast(.coff)) |coff_file|
195 link.File.Coff.global_symbol_bit | try coff_file.getGlobalSymbol(extern_func.toSlice(&emit.lower.mir).?, null)
210196 else
211 @intFromEnum(std.elf.R_X86_64.@"32");
212 try atom.addReloc(gpa, .{
213 .r_offset = end_offset - 4,
214 .r_info = @as(u64, sym_index) << 32 | r_type,
215 .r_addend = lowered_relocs[0].off,
216 }, zo);
217 }
218 } else if (emit.lower.bin_file.cast(.macho)) |macho_file| {
219 const zo = macho_file.getZigObject().?;
220 const atom = zo.symbols.items[emit.atom_index].getAtom(macho_file).?;
221 const sym = &zo.symbols.items[sym_index];
222 const @"type": link.File.MachO.Relocation.Type = if (sym.flags.is_extern_ptr and lowered_relocs[0].target != .linker_pcrel)
223 .got_load
224 else if (sym.flags.tlv)
225 .tlv
226 else
227 .signed;
228 try atom.addReloc(macho_file, .{
229 .tag = .@"extern",
230 .offset = @intCast(end_offset - 4),
231 .target = sym_index,
232 .addend = lowered_relocs[0].off,
233 .type = @"type",
234 .meta = .{
235 .pcrel = true,
236 .has_subtractor = false,
237 .length = 2,
238 .symbolnum = @intCast(sym_index),
197 return emit.fail("external symbols unimplemented for {s}", .{@tagName(emit.bin_file.tag)}),
198 .is_extern = true,
199 .type = .symbol,
200 },
201 },
202 };
203 const reloc_info = reloc_info_buf[0..reloc_info_index];
204 for (reloc_info) |*reloc| switch (reloc.target.type) {
205 .inst, .table => {},
206 .symbol => {
207 switch (lowered_inst.encoding.mnemonic) {
208 .call => {
209 reloc.target.type = .branch;
210 try emit.encodeInst(lowered_inst, reloc_info);
211 continue :lowered_inst;
239212 },
213 else => {},
214 }
215 if (emit.bin_file.cast(.elf)) |_| {
216 if (!emit.pic) switch (lowered_inst.encoding.mnemonic) {
217 .lea => try emit.encodeInst(try .new(.none, .mov, &.{
218 lowered_inst.ops[0],
219 .{ .imm = .s(0) },
220 }, emit.lower.target), reloc_info),
221 .mov => try emit.encodeInst(try .new(.none, .mov, &.{
222 lowered_inst.ops[0],
223 .{ .mem = .initSib(lowered_inst.ops[reloc.op_index].mem.sib.ptr_size, .{
224 .base = .{ .reg = .ds },
225 }) },
226 }, emit.lower.target), reloc_info),
227 else => unreachable,
228 } else if (reloc.target.is_extern) switch (lowered_inst.encoding.mnemonic) {
229 .lea => try emit.encodeInst(try .new(.none, .mov, &.{
230 lowered_inst.ops[0],
231 .{ .mem = .initRip(.ptr, 0) },
232 }, emit.lower.target), reloc_info),
233 .mov => {
234 try emit.encodeInst(try .new(.none, .mov, &.{
235 lowered_inst.ops[0],
236 .{ .mem = .initRip(.ptr, 0) },
237 }, emit.lower.target), reloc_info);
238 try emit.encodeInst(try .new(.none, .mov, &.{
239 lowered_inst.ops[0],
240 .{ .mem = .initSib(lowered_inst.ops[reloc.op_index].mem.sib.ptr_size, .{ .base = .{
241 .reg = lowered_inst.ops[0].reg.to64(),
242 } }) },
243 }, emit.lower.target), &.{});
244 },
245 else => unreachable,
246 } else switch (lowered_inst.encoding.mnemonic) {
247 .lea => try emit.encodeInst(try .new(.none, .lea, &.{
248 lowered_inst.ops[0],
249 .{ .mem = .initRip(.none, 0) },
250 }, emit.lower.target), reloc_info),
251 .mov => try emit.encodeInst(try .new(.none, .mov, &.{
252 lowered_inst.ops[0],
253 .{ .mem = .initRip(lowered_inst.ops[reloc.op_index].mem.sib.ptr_size, 0) },
254 }, emit.lower.target), reloc_info),
255 else => unreachable,
256 }
257 } else if (emit.bin_file.cast(.macho)) |_| {
258 if (reloc.target.is_extern) switch (lowered_inst.encoding.mnemonic) {
259 .lea => try emit.encodeInst(try .new(.none, .mov, &.{
260 lowered_inst.ops[0],
261 .{ .mem = .initRip(.ptr, 0) },
262 }, emit.lower.target), reloc_info),
263 .mov => {
264 try emit.encodeInst(try .new(.none, .mov, &.{
265 lowered_inst.ops[0],
266 .{ .mem = .initRip(.ptr, 0) },
267 }, emit.lower.target), reloc_info);
268 try emit.encodeInst(try .new(.none, .mov, &.{
269 lowered_inst.ops[0],
270 .{ .mem = .initSib(lowered_inst.ops[reloc.op_index].mem.sib.ptr_size, .{ .base = .{
271 .reg = lowered_inst.ops[0].reg.to64(),
272 } }) },
273 }, emit.lower.target), &.{});
274 },
275 else => unreachable,
276 } else switch (lowered_inst.encoding.mnemonic) {
277 .lea => try emit.encodeInst(try .new(.none, .lea, &.{
278 lowered_inst.ops[0],
279 .{ .mem = .initRip(.none, 0) },
280 }, emit.lower.target), reloc_info),
281 .mov => try emit.encodeInst(try .new(.none, .mov, &.{
282 lowered_inst.ops[0],
283 .{ .mem = .initRip(lowered_inst.ops[reloc.op_index].mem.sib.ptr_size, 0) },
284 }, emit.lower.target), reloc_info),
285 else => unreachable,
286 }
287 } else return emit.fail("TODO implement relocs for {s}", .{
288 @tagName(emit.bin_file.tag),
240289 });
241 } else unreachable,
242 .linker_got,
243 .linker_direct,
244 .linker_import,
245 => |sym_index| if (emit.lower.bin_file.cast(.elf)) |_| {
246 unreachable;
247 } else if (emit.lower.bin_file.cast(.macho)) |_| {
248 unreachable;
249 } else if (emit.lower.bin_file.cast(.coff)) |coff_file| {
250 const atom_index = coff_file.getAtomIndexForSymbol(.{
251 .sym_index = emit.atom_index,
252 .file = null,
253 }).?;
254 const target = if (link.File.Coff.global_symbol_bit & sym_index != 0)
255 coff_file.getGlobalByIndex(link.File.Coff.global_symbol_mask & sym_index)
256 else
257 link.File.Coff.SymbolWithLoc{ .sym_index = sym_index, .file = null };
258 try coff_file.addRelocation(atom_index, .{
259 .type = switch (lowered_relocs[0].target) {
260 .linker_got => .got,
261 .linker_direct => .direct,
262 .linker_import => .import,
290 continue :lowered_inst;
291 },
292 .branch, .tls => unreachable,
293 .tlv => {
294 if (emit.bin_file.cast(.elf)) |elf_file| {
295 if (reloc.target.is_extern) {
296 // TODO handle extern TLS vars, i.e., emit GD model
297 return emit.fail("TODO implement extern {s} reloc for {s}", .{
298 @tagName(reloc.target.type), @tagName(emit.bin_file.tag),
299 });
300 } else if (emit.pic) switch (lowered_inst.encoding.mnemonic) {
301 .lea, .mov => {
302 // Here, we currently assume local dynamic TLS vars, and so
303 // we emit LD model.
304 try emit.encodeInst(try .new(.none, .lea, &.{
305 .{ .reg = .rdi },
306 .{ .mem = .initRip(.none, 0) },
307 }, emit.lower.target), &.{.{
308 .op_index = 1,
309 .target = .{
310 .index = reloc.target.index,
311 .is_extern = false,
312 .type = .tls,
313 },
314 }});
315 try emit.encodeInst(try .new(.none, .call, &.{
316 .{ .imm = .s(0) },
317 }, emit.lower.target), &.{.{
318 .op_index = 0,
319 .target = .{
320 .index = try elf_file.getGlobalSymbol("__tls_get_addr", null),
321 .is_extern = true,
322 .type = .branch,
323 },
324 }});
325 try emit.encodeInst(try .new(.none, lowered_inst.encoding.mnemonic, &.{
326 lowered_inst.ops[0],
327 .{ .mem = .initSib(.none, .{
328 .base = .{ .reg = .rax },
329 .disp = std.math.minInt(i32),
330 }) },
331 }, emit.lower.target), reloc_info);
332 },
263333 else => unreachable,
334 } else switch (lowered_inst.encoding.mnemonic) {
335 .lea, .mov => {
336 // Since we are linking statically, we emit LE model directly.
337 try emit.encodeInst(try .new(.none, .mov, &.{
338 .{ .reg = .rax },
339 .{ .mem = .initSib(.qword, .{ .base = .{ .reg = .fs } }) },
340 }, emit.lower.target), &.{});
341 try emit.encodeInst(try .new(.none, lowered_inst.encoding.mnemonic, &.{
342 lowered_inst.ops[0],
343 .{ .mem = .initSib(.none, .{
344 .base = .{ .reg = .rax },
345 .disp = std.math.minInt(i32),
346 }) },
347 }, emit.lower.target), reloc_info);
348 },
349 else => unreachable,
350 }
351 } else if (emit.bin_file.cast(.macho)) |_| switch (lowered_inst.encoding.mnemonic) {
352 .lea => {
353 try emit.encodeInst(try .new(.none, .mov, &.{
354 .{ .reg = .rdi },
355 .{ .mem = .initRip(.ptr, 0) },
356 }, emit.lower.target), reloc_info);
357 try emit.encodeInst(try .new(.none, .call, &.{
358 .{ .mem = .initSib(.qword, .{ .base = .{ .reg = .rdi } }) },
359 }, emit.lower.target), &.{});
360 try emit.encodeInst(try .new(.none, .mov, &.{
361 lowered_inst.ops[0],
362 .{ .reg = .rax },
363 }, emit.lower.target), &.{});
264364 },
265 .target = target,
266 .offset = @intCast(end_offset - 4),
267 .addend = @intCast(lowered_relocs[0].off),
268 .pcrel = true,
269 .length = 2,
270 });
271 } else if (emit.lower.bin_file.cast(.plan9)) |p9_file| {
272 try p9_file.addReloc(emit.atom_index, .{ // TODO we may need to add a .type field to the relocs if they are .linker_got instead of just .linker_direct
273 .target = sym_index, // we set sym_index to just be the atom index
274 .offset = @intCast(end_offset - 4),
275 .addend = @intCast(lowered_relocs[0].off),
276 .type = .pcrel,
365 .mov => {
366 try emit.encodeInst(try .new(.none, .mov, &.{
367 .{ .reg = .rdi },
368 .{ .mem = .initRip(.ptr, 0) },
369 }, emit.lower.target), reloc_info);
370 try emit.encodeInst(try .new(.none, .call, &.{
371 .{ .mem = .initSib(.qword, .{ .base = .{ .reg = .rdi } }) },
372 }, emit.lower.target), &.{});
373 try emit.encodeInst(try .new(.none, .mov, &.{
374 lowered_inst.ops[0],
375 .{ .mem = .initSib(.qword, .{ .base = .{ .reg = .rax } }) },
376 }, emit.lower.target), &.{});
377 },
378 else => unreachable,
379 } else return emit.fail("TODO implement relocs for {s}", .{
380 @tagName(emit.bin_file.tag),
277381 });
278 } else return emit.fail("TODO implement linker reloc for {s}", .{
279 @tagName(emit.lower.bin_file.tag),
280 }),
382 continue :lowered_inst;
383 },
281384 };
385 try emit.encodeInst(lowered_inst, reloc_info);
282386 }
283 std.debug.assert(lowered_relocs.len == 0);
387 assert(lowered_relocs.len == 0);
284388
285389 if (lowered.insts.len == 0) {
286390 const mir_inst = emit.lower.mir.instructions.get(mir_index);
......@@ -358,7 +462,6 @@ pub fn emitMir(emit: *Emit) Error!void {
358462 .pseudo_dbg_arg_i_s,
359463 .pseudo_dbg_arg_i_u,
360464 .pseudo_dbg_arg_i_64,
361 .pseudo_dbg_arg_reloc,
362465 .pseudo_dbg_arg_ro,
363466 .pseudo_dbg_arg_fa,
364467 .pseudo_dbg_arg_m,
......@@ -366,7 +469,6 @@ pub fn emitMir(emit: *Emit) Error!void {
366469 .pseudo_dbg_var_i_s,
367470 .pseudo_dbg_var_i_u,
368471 .pseudo_dbg_var_i_64,
369 .pseudo_dbg_var_reloc,
370472 .pseudo_dbg_var_ro,
371473 .pseudo_dbg_var_fa,
372474 .pseudo_dbg_var_m,
......@@ -391,16 +493,6 @@ pub fn emitMir(emit: *Emit) Error!void {
391493 loc_buf[0] = .{ .constu = mir_inst.data.i64 };
392494 break :stack_value &loc_buf[0];
393495 } },
394 .pseudo_dbg_arg_reloc, .pseudo_dbg_var_reloc => .{ .plus = .{
395 sym: {
396 loc_buf[0] = .{ .addr_reloc = mir_inst.data.reloc.sym_index };
397 break :sym &loc_buf[0];
398 },
399 off: {
400 loc_buf[1] = .{ .consts = mir_inst.data.reloc.off };
401 break :off &loc_buf[1];
402 },
403 } },
404496 .pseudo_dbg_arg_fa, .pseudo_dbg_var_fa => {
405497 const reg_off = emit.lower.mir.resolveFrameAddr(mir_inst.data.fa);
406498 break :loc .{ .plus = .{
......@@ -415,15 +507,53 @@ pub fn emitMir(emit: *Emit) Error!void {
415507 } };
416508 },
417509 .pseudo_dbg_arg_m, .pseudo_dbg_var_m => {
418 const mem = emit.lower.mem(undefined, mir_inst.data.x.payload);
510 const ip = &emit.pt.zcu.intern_pool;
511 const mem = emit.lower.mir.resolveMemoryExtra(mir_inst.data.x.payload).decode();
419512 break :loc .{ .plus = .{
420513 base: {
421514 loc_buf[0] = switch (mem.base()) {
422515 .none => .{ .constu = 0 },
423516 .reg => |reg| .{ .breg = reg.dwarfNum() },
424517 .frame, .table, .rip_inst => unreachable,
425 .reloc => |sym_index| .{ .addr_reloc = sym_index },
426 .pcrel => unreachable,
518 .nav => |nav| .{ .addr_reloc = switch (codegen.genNavRef(
519 emit.bin_file,
520 emit.pt,
521 emit.lower.src_loc,
522 .fromInterned(ip.getNav(nav).typeOf(ip)),
523 nav,
524 emit.lower.target.*,
525 ) catch |err| switch (err) {
526 error.CodegenFail,
527 => return emit.fail("unable to codegen: {s}", .{@errorName(err)}),
528 else => |e| return e,
529 }) {
530 .mcv => |mcv| switch (mcv) {
531 else => unreachable,
532 .load_direct, .load_symbol => |sym_index| sym_index,
533 },
534 .fail => |em| {
535 assert(emit.lower.err_msg == null);
536 emit.lower.err_msg = em;
537 return error.EmitFail;
538 },
539 } },
540 .uav => |uav| .{ .addr_reloc = switch (try emit.bin_file.lowerUav(
541 emit.pt,
542 uav.val,
543 Type.fromInterned(uav.orig_ty).ptrAlignment(emit.pt.zcu),
544 emit.lower.src_loc,
545 )) {
546 .mcv => |mcv| switch (mcv) {
547 else => unreachable,
548 .load_direct, .load_symbol => |sym_index| sym_index,
549 },
550 .fail => |em| {
551 assert(emit.lower.err_msg == null);
552 emit.lower.err_msg = em;
553 return error.EmitFail;
554 },
555 } },
556 .lazy_sym, .extern_func => unreachable,
427557 };
428558 break :base &loc_buf[0];
429559 },
......@@ -438,13 +568,8 @@ pub fn emitMir(emit: *Emit) Error!void {
438568 },
439569 };
440570
441 const local_name_bytes = emit.lower.mir.local_name_bytes[local_name_index..];
442 const local_name = local_name_bytes[0..std.mem.indexOfScalar(u8, local_name_bytes, 0).? :0];
443 local_name_index += local_name.len + 1;
444
445 const local_type = emit.lower.mir.local_types[local_index];
571 const local = &emit.lower.mir.locals[local_index];
446572 local_index += 1;
447
448573 try dwarf.genLocalVarDebugInfo(
449574 switch (mir_inst.ops) {
450575 else => unreachable,
......@@ -452,7 +577,6 @@ pub fn emitMir(emit: *Emit) Error!void {
452577 .pseudo_dbg_arg_i_s,
453578 .pseudo_dbg_arg_i_u,
454579 .pseudo_dbg_arg_i_64,
455 .pseudo_dbg_arg_reloc,
456580 .pseudo_dbg_arg_ro,
457581 .pseudo_dbg_arg_fa,
458582 .pseudo_dbg_arg_m,
......@@ -462,27 +586,23 @@ pub fn emitMir(emit: *Emit) Error!void {
462586 .pseudo_dbg_var_i_s,
463587 .pseudo_dbg_var_i_u,
464588 .pseudo_dbg_var_i_64,
465 .pseudo_dbg_var_reloc,
466589 .pseudo_dbg_var_ro,
467590 .pseudo_dbg_var_fa,
468591 .pseudo_dbg_var_m,
469592 .pseudo_dbg_var_val,
470593 => .local_var,
471594 },
472 local_name,
473 .fromInterned(local_type),
595 local.name.toSlice(&emit.lower.mir),
596 .fromInterned(local.type),
474597 loc,
475598 );
476599 },
477 .plan9 => {},
478 .none => {},
600 .plan9, .none => local_index += 1,
479601 },
480602 .pseudo_dbg_arg_val, .pseudo_dbg_var_val => switch (emit.debug_output) {
481603 .dwarf => |dwarf| {
482 const local_name_bytes = emit.lower.mir.local_name_bytes[local_name_index..];
483 const local_name = local_name_bytes[0..std.mem.indexOfScalar(u8, local_name_bytes, 0).? :0];
484 local_name_index += local_name.len + 1;
485
604 const local = &emit.lower.mir.locals[local_index];
605 local_index += 1;
486606 try dwarf.genLocalConstDebugInfo(
487607 emit.lower.src_loc,
488608 switch (mir_inst.ops) {
......@@ -490,12 +610,11 @@ pub fn emitMir(emit: *Emit) Error!void {
490610 .pseudo_dbg_arg_val => .comptime_arg,
491611 .pseudo_dbg_var_val => .local_const,
492612 },
493 local_name,
613 local.name.toSlice(&emit.lower.mir),
494614 .fromInterned(mir_inst.data.ip_index),
495615 );
496616 },
497 .plan9 => {},
498 .none => {},
617 .plan9, .none => local_index += 1,
499618 },
500619 .pseudo_dbg_var_args_none => switch (emit.debug_output) {
501620 .dwarf => |dwarf| try dwarf.genVarArgsDebugInfo(),
......@@ -507,8 +626,8 @@ pub fn emitMir(emit: *Emit) Error!void {
507626 }
508627 }
509628 }
510 for (relocs.items) |reloc| {
511 const target = code_offset_mapping[reloc.target];
629 for (emit.relocs.items) |reloc| {
630 const target = emit.code_offset_mapping.items[reloc.target];
512631 const disp = @as(i64, @intCast(target)) - @as(i64, @intCast(reloc.inst_offset + reloc.inst_length)) + reloc.target_offset;
513632 const inst_bytes = emit.code.items[reloc.inst_offset..][0..reloc.inst_length];
514633 switch (reloc.source_length) {
......@@ -522,13 +641,13 @@ pub fn emitMir(emit: *Emit) Error!void {
522641 }
523642 }
524643 if (emit.lower.mir.table.len > 0) {
525 if (emit.lower.bin_file.cast(.elf)) |elf_file| {
644 if (emit.bin_file.cast(.elf)) |elf_file| {
526645 const zo = elf_file.zigObjectPtr().?;
527646 const atom = zo.symbol(emit.atom_index).atom(elf_file).?;
528647
529648 const ptr_size = @divExact(emit.lower.target.ptrBitWidth(), 8);
530649 var table_offset = std.mem.alignForward(u32, @intCast(emit.code.items.len), ptr_size);
531 for (table_relocs.items) |table_reloc| try atom.addReloc(gpa, .{
650 for (emit.table_relocs.items) |table_reloc| try atom.addReloc(gpa, .{
532651 .r_offset = table_reloc.source_offset,
533652 .r_info = @as(u64, emit.atom_index) << 32 | @intFromEnum(std.elf.R_X86_64.@"32"),
534653 .r_addend = @as(i64, table_offset) + table_reloc.target_offset,
......@@ -537,7 +656,7 @@ pub fn emitMir(emit: *Emit) Error!void {
537656 try atom.addReloc(gpa, .{
538657 .r_offset = table_offset,
539658 .r_info = @as(u64, emit.atom_index) << 32 | @intFromEnum(std.elf.R_X86_64.@"64"),
540 .r_addend = code_offset_mapping[entry],
659 .r_addend = emit.code_offset_mapping.items[entry],
541660 }, zo);
542661 table_offset += ptr_size;
543662 }
......@@ -546,6 +665,192 @@ pub fn emitMir(emit: *Emit) Error!void {
546665 }
547666}
548667
668pub fn deinit(emit: *Emit) void {
669 const gpa = emit.bin_file.comp.gpa;
670 emit.code_offset_mapping.deinit(gpa);
671 emit.relocs.deinit(gpa);
672 emit.table_relocs.deinit(gpa);
673 emit.* = undefined;
674}
675
676const RelocInfo = struct {
677 op_index: Lower.InstOpIndex,
678 off: i32 = 0,
679 target: Target,
680
681 const Target = struct {
682 index: u32,
683 is_extern: bool,
684 type: Target.Type,
685 force_pcrel_direct: bool = false,
686
687 const Type = enum { inst, table, symbol, branch, tls, tlv };
688 };
689};
690
691fn encodeInst(emit: *Emit, lowered_inst: Instruction, reloc_info: []const RelocInfo) Error!void {
692 const comp = emit.bin_file.comp;
693 const gpa = comp.gpa;
694 const start_offset: u32 = @intCast(emit.code.items.len);
695 try lowered_inst.encode(emit.code.writer(gpa), .{});
696 const end_offset: u32 = @intCast(emit.code.items.len);
697 for (reloc_info) |reloc| switch (reloc.target.type) {
698 .inst => {
699 const inst_length: u4 = @intCast(end_offset - start_offset);
700 const reloc_offset, const reloc_length = reloc_offset_length: {
701 var reloc_offset = inst_length;
702 var op_index: usize = lowered_inst.ops.len;
703 while (true) {
704 op_index -= 1;
705 const op = lowered_inst.encoding.data.ops[op_index];
706 if (op == .none) continue;
707 const is_mem = op.isMemory();
708 const enc_length: u4 = if (is_mem) switch (lowered_inst.ops[op_index].mem.sib.base) {
709 .rip_inst => 4,
710 else => unreachable,
711 } else @intCast(std.math.divCeil(u7, @intCast(op.immBitSize()), 8) catch unreachable);
712 reloc_offset -= enc_length;
713 if (op_index == reloc.op_index) break :reloc_offset_length .{ reloc_offset, enc_length };
714 assert(!is_mem);
715 }
716 };
717 try emit.relocs.append(emit.lower.allocator, .{
718 .inst_offset = start_offset,
719 .inst_length = inst_length,
720 .source_offset = reloc_offset,
721 .source_length = reloc_length,
722 .target = reloc.target.index,
723 .target_offset = reloc.off,
724 });
725 },
726 .table => try emit.table_relocs.append(emit.lower.allocator, .{
727 .source_offset = end_offset - 4,
728 .target_offset = reloc.off,
729 }),
730 .symbol => if (emit.bin_file.cast(.elf)) |elf_file| {
731 const zo = elf_file.zigObjectPtr().?;
732 const atom = zo.symbol(emit.atom_index).atom(elf_file).?;
733 const r_type: std.elf.R_X86_64 = if (!emit.pic)
734 .@"32"
735 else if (reloc.target.is_extern and !reloc.target.force_pcrel_direct)
736 .GOTPCREL
737 else
738 .PC32;
739 try atom.addReloc(gpa, .{
740 .r_offset = end_offset - 4,
741 .r_info = @as(u64, reloc.target.index) << 32 | @intFromEnum(r_type),
742 .r_addend = if (emit.pic) reloc.off - 4 else reloc.off,
743 }, zo);
744 } else if (emit.bin_file.cast(.macho)) |macho_file| {
745 const zo = macho_file.getZigObject().?;
746 const atom = zo.symbols.items[emit.atom_index].getAtom(macho_file).?;
747 try atom.addReloc(macho_file, .{
748 .tag = .@"extern",
749 .offset = end_offset - 4,
750 .target = reloc.target.index,
751 .addend = reloc.off,
752 .type = if (reloc.target.is_extern and !reloc.target.force_pcrel_direct) .got_load else .signed,
753 .meta = .{
754 .pcrel = true,
755 .has_subtractor = false,
756 .length = 2,
757 .symbolnum = @intCast(reloc.target.index),
758 },
759 });
760 } else unreachable,
761 .branch => if (emit.bin_file.cast(.elf)) |elf_file| {
762 const zo = elf_file.zigObjectPtr().?;
763 const atom = zo.symbol(emit.atom_index).atom(elf_file).?;
764 const r_type: std.elf.R_X86_64 = .PLT32;
765 try atom.addReloc(gpa, .{
766 .r_offset = end_offset - 4,
767 .r_info = @as(u64, reloc.target.index) << 32 | @intFromEnum(r_type),
768 .r_addend = reloc.off - 4,
769 }, zo);
770 } else if (emit.bin_file.cast(.macho)) |macho_file| {
771 const zo = macho_file.getZigObject().?;
772 const atom = zo.symbols.items[emit.atom_index].getAtom(macho_file).?;
773 try atom.addReloc(macho_file, .{
774 .tag = .@"extern",
775 .offset = end_offset - 4,
776 .target = reloc.target.index,
777 .addend = reloc.off,
778 .type = .branch,
779 .meta = .{
780 .pcrel = true,
781 .has_subtractor = false,
782 .length = 2,
783 .symbolnum = @intCast(reloc.target.index),
784 },
785 });
786 } else if (emit.bin_file.cast(.coff)) |coff_file| {
787 const atom_index = coff_file.getAtomIndexForSymbol(
788 .{ .sym_index = emit.atom_index, .file = null },
789 ).?;
790 const target: link.File.Coff.SymbolWithLoc = if (link.File.Coff.global_symbol_bit & reloc.target.index != 0)
791 coff_file.getGlobalByIndex(link.File.Coff.global_symbol_mask & reloc.target.index)
792 else
793 .{ .sym_index = reloc.target.index, .file = null };
794 try coff_file.addRelocation(atom_index, .{
795 .type = .direct,
796 .target = target,
797 .offset = end_offset - 4,
798 .addend = @intCast(reloc.off),
799 .pcrel = true,
800 .length = 2,
801 });
802 } else return emit.fail("TODO implement {s} reloc for {s}", .{
803 @tagName(reloc.target.type), @tagName(emit.bin_file.tag),
804 }),
805 .tls => if (emit.bin_file.cast(.elf)) |elf_file| {
806 if (reloc.target.is_extern) return emit.fail("TODO implement extern {s} reloc for {s}", .{
807 @tagName(reloc.target.type), @tagName(emit.bin_file.tag),
808 });
809 const zo = elf_file.zigObjectPtr().?;
810 const atom = zo.symbol(emit.atom_index).atom(elf_file).?;
811 const r_type: std.elf.R_X86_64 = if (emit.pic) .TLSLD else unreachable;
812 try atom.addReloc(gpa, .{
813 .r_offset = end_offset - 4,
814 .r_info = @as(u64, reloc.target.index) << 32 | @intFromEnum(r_type),
815 .r_addend = reloc.off - 4,
816 }, zo);
817 } else return emit.fail("TODO implement {s} reloc for {s}", .{
818 @tagName(reloc.target.type), @tagName(emit.bin_file.tag),
819 }),
820 .tlv => if (emit.bin_file.cast(.elf)) |elf_file| {
821 if (reloc.target.is_extern) return emit.fail("TODO implement extern {s} reloc for {s}", .{
822 @tagName(reloc.target.type), @tagName(emit.bin_file.tag),
823 });
824 const zo = elf_file.zigObjectPtr().?;
825 const atom = zo.symbol(emit.atom_index).atom(elf_file).?;
826 const r_type: std.elf.R_X86_64 = if (emit.pic) .DTPOFF32 else .TPOFF32;
827 try atom.addReloc(gpa, .{
828 .r_offset = end_offset - 4,
829 .r_info = @as(u64, reloc.target.index) << 32 | @intFromEnum(r_type),
830 .r_addend = reloc.off,
831 }, zo);
832 } else if (emit.bin_file.cast(.macho)) |macho_file| {
833 const zo = macho_file.getZigObject().?;
834 const atom = zo.symbols.items[emit.atom_index].getAtom(macho_file).?;
835 try atom.addReloc(macho_file, .{
836 .tag = .@"extern",
837 .offset = end_offset - 4,
838 .target = reloc.target.index,
839 .addend = reloc.off,
840 .type = .tlv,
841 .meta = .{
842 .pcrel = true,
843 .has_subtractor = false,
844 .length = 2,
845 .symbolnum = @intCast(reloc.target.index),
846 },
847 });
848 } else return emit.fail("TODO implement {s} reloc for {s}", .{
849 @tagName(reloc.target.type), @tagName(emit.bin_file.tag),
850 }),
851 };
852}
853
549854fn fail(emit: *Emit, comptime format: []const u8, args: anytype) Error {
550855 return switch (emit.lower.fail(format, args)) {
551856 error.LowerFail => error.EmitFail,
......@@ -629,11 +934,17 @@ fn dbgAdvancePCAndLine(emit: *Emit, loc: Loc) Error!void {
629934 }
630935}
631936
937const assert = std.debug.assert;
632938const bits = @import("bits.zig");
939const codegen = @import("../../codegen.zig");
633940const Emit = @This();
941const encoder = @import("encoder.zig");
942const Instruction = encoder.Instruction;
634943const InternPool = @import("../../InternPool.zig");
635944const link = @import("../../link.zig");
636945const log = std.log.scoped(.emit);
637946const Lower = @import("Lower.zig");
638947const Mir = @import("Mir.zig");
639948const std = @import("std");
949const Type = @import("../../Type.zig");
950const Zcu = @import("../../Zcu.zig");
src/arch/x86_64/Lower.zig+87-259
......@@ -1,10 +1,6 @@
11//! This file contains the functionality for lowering x86_64 MIR to Instructions
22
3bin_file: *link.File,
43target: *const std.Target,
5output_mode: std.builtin.OutputMode,
6link_mode: std.builtin.LinkMode,
7pic: bool,
84allocator: std.mem.Allocator,
95mir: Mir,
106cc: std.builtin.CallingConvention,
......@@ -17,7 +13,6 @@ result_relocs: [max_result_relocs]Reloc = undefined,
1713
1814const max_result_insts = @max(
1915 1, // non-pseudo instructions
20 3, // (ELF only) TLS local dynamic (LD) sequence in PIC mode
2116 2, // cmovcc: cmovcc \ cmovcc
2217 3, // setcc: setcc \ setcc \ logicop
2318 2, // jcc: jcc \ jcc
......@@ -25,6 +20,7 @@ const max_result_insts = @max(
2520 pseudo_probe_adjust_unrolled_max_insts,
2621 pseudo_probe_adjust_setup_insts,
2722 pseudo_probe_adjust_loop_insts,
23 abi.zigcc.callee_preserved_regs.len * 2, // push_regs/pop_regs
2824 abi.Win64.callee_preserved_regs.len * 2, // push_regs/pop_regs
2925 abi.SysV.callee_preserved_regs.len * 2, // push_regs/pop_regs
3026);
......@@ -33,14 +29,13 @@ const max_result_relocs = @max(
3329 2, // jcc: jcc \ jcc
3430 2, // test \ jcc \ probe \ sub \ jmp
3531 1, // probe \ sub \ jcc
36 3, // (ELF only) TLS local dynamic (LD) sequence in PIC mode
3732);
3833
39const ResultInstIndex = std.math.IntFittingRange(0, max_result_insts - 1);
40const ResultRelocIndex = std.math.IntFittingRange(0, max_result_relocs - 1);
41const InstOpIndex = std.math.IntFittingRange(
34const ResultInstIndex = std.math.IntFittingRange(0, max_result_insts);
35const ResultRelocIndex = std.math.IntFittingRange(0, max_result_relocs);
36pub const InstOpIndex = std.math.IntFittingRange(
4237 0,
43 @typeInfo(@FieldType(Instruction, "ops")).array.len - 1,
38 @typeInfo(@FieldType(Instruction, "ops")).array.len,
4439);
4540
4641pub const pseudo_probe_align_insts = 5; // test \ jcc \ probe \ sub \ jmp
......@@ -54,7 +49,8 @@ pub const Error = error{
5449 LowerFail,
5550 InvalidInstruction,
5651 CannotEncode,
57};
52 CodegenFail,
53} || codegen.GenerateSymbolError;
5854
5955pub const Reloc = struct {
6056 lowered_inst_index: ResultInstIndex,
......@@ -65,14 +61,10 @@ pub const Reloc = struct {
6561 const Target = union(enum) {
6662 inst: Mir.Inst.Index,
6763 table,
68 linker_reloc: u32,
69 linker_pcrel: u32,
70 linker_tlsld: u32,
71 linker_dtpoff: u32,
72 linker_extern_fn: u32,
73 linker_got: u32,
74 linker_direct: u32,
75 linker_import: u32,
64 nav: InternPool.Nav.Index,
65 uav: InternPool.Key.Ptr.BaseAddr.Uav,
66 lazy_sym: link.File.LazySymbol,
67 extern_func: Mir.NullTerminatedString,
7668 };
7769};
7870
......@@ -80,7 +72,7 @@ const Options = struct { allow_frame_locs: bool };
8072
8173/// The returned slice is overwritten by the next call to lowerMir.
8274pub fn lowerMir(lower: *Lower, index: Mir.Inst.Index) Error!struct {
83 insts: []const Instruction,
75 insts: []Instruction,
8476 relocs: []const Reloc,
8577} {
8678 lower.result_insts = undefined;
......@@ -98,130 +90,130 @@ pub fn lowerMir(lower: *Lower, index: Mir.Inst.Index) Error!struct {
9890 .pseudo => switch (inst.ops) {
9991 .pseudo_cmov_z_and_np_rr => {
10092 assert(inst.data.rr.fixes == ._);
101 try lower.emit(.none, .cmovnz, &.{
93 try lower.encode(.none, .cmovnz, &.{
10294 .{ .reg = inst.data.rr.r2 },
10395 .{ .reg = inst.data.rr.r1 },
10496 });
105 try lower.emit(.none, .cmovnp, &.{
97 try lower.encode(.none, .cmovnp, &.{
10698 .{ .reg = inst.data.rr.r1 },
10799 .{ .reg = inst.data.rr.r2 },
108100 });
109101 },
110102 .pseudo_cmov_nz_or_p_rr => {
111103 assert(inst.data.rr.fixes == ._);
112 try lower.emit(.none, .cmovnz, &.{
104 try lower.encode(.none, .cmovnz, &.{
113105 .{ .reg = inst.data.rr.r1 },
114106 .{ .reg = inst.data.rr.r2 },
115107 });
116 try lower.emit(.none, .cmovp, &.{
108 try lower.encode(.none, .cmovp, &.{
117109 .{ .reg = inst.data.rr.r1 },
118110 .{ .reg = inst.data.rr.r2 },
119111 });
120112 },
121113 .pseudo_cmov_nz_or_p_rm => {
122114 assert(inst.data.rx.fixes == ._);
123 try lower.emit(.none, .cmovnz, &.{
115 try lower.encode(.none, .cmovnz, &.{
124116 .{ .reg = inst.data.rx.r1 },
125117 .{ .mem = lower.mem(1, inst.data.rx.payload) },
126118 });
127 try lower.emit(.none, .cmovp, &.{
119 try lower.encode(.none, .cmovp, &.{
128120 .{ .reg = inst.data.rx.r1 },
129121 .{ .mem = lower.mem(1, inst.data.rx.payload) },
130122 });
131123 },
132124 .pseudo_set_z_and_np_r => {
133125 assert(inst.data.rr.fixes == ._);
134 try lower.emit(.none, .setz, &.{
126 try lower.encode(.none, .setz, &.{
135127 .{ .reg = inst.data.rr.r1 },
136128 });
137 try lower.emit(.none, .setnp, &.{
129 try lower.encode(.none, .setnp, &.{
138130 .{ .reg = inst.data.rr.r2 },
139131 });
140 try lower.emit(.none, .@"and", &.{
132 try lower.encode(.none, .@"and", &.{
141133 .{ .reg = inst.data.rr.r1 },
142134 .{ .reg = inst.data.rr.r2 },
143135 });
144136 },
145137 .pseudo_set_z_and_np_m => {
146138 assert(inst.data.rx.fixes == ._);
147 try lower.emit(.none, .setz, &.{
139 try lower.encode(.none, .setz, &.{
148140 .{ .mem = lower.mem(0, inst.data.rx.payload) },
149141 });
150 try lower.emit(.none, .setnp, &.{
142 try lower.encode(.none, .setnp, &.{
151143 .{ .reg = inst.data.rx.r1 },
152144 });
153 try lower.emit(.none, .@"and", &.{
145 try lower.encode(.none, .@"and", &.{
154146 .{ .mem = lower.mem(0, inst.data.rx.payload) },
155147 .{ .reg = inst.data.rx.r1 },
156148 });
157149 },
158150 .pseudo_set_nz_or_p_r => {
159151 assert(inst.data.rr.fixes == ._);
160 try lower.emit(.none, .setnz, &.{
152 try lower.encode(.none, .setnz, &.{
161153 .{ .reg = inst.data.rr.r1 },
162154 });
163 try lower.emit(.none, .setp, &.{
155 try lower.encode(.none, .setp, &.{
164156 .{ .reg = inst.data.rr.r2 },
165157 });
166 try lower.emit(.none, .@"or", &.{
158 try lower.encode(.none, .@"or", &.{
167159 .{ .reg = inst.data.rr.r1 },
168160 .{ .reg = inst.data.rr.r2 },
169161 });
170162 },
171163 .pseudo_set_nz_or_p_m => {
172164 assert(inst.data.rx.fixes == ._);
173 try lower.emit(.none, .setnz, &.{
165 try lower.encode(.none, .setnz, &.{
174166 .{ .mem = lower.mem(0, inst.data.rx.payload) },
175167 });
176 try lower.emit(.none, .setp, &.{
168 try lower.encode(.none, .setp, &.{
177169 .{ .reg = inst.data.rx.r1 },
178170 });
179 try lower.emit(.none, .@"or", &.{
171 try lower.encode(.none, .@"or", &.{
180172 .{ .mem = lower.mem(0, inst.data.rx.payload) },
181173 .{ .reg = inst.data.rx.r1 },
182174 });
183175 },
184176 .pseudo_j_z_and_np_inst => {
185177 assert(inst.data.inst.fixes == ._);
186 try lower.emit(.none, .jnz, &.{
178 try lower.encode(.none, .jnz, &.{
187179 .{ .imm = lower.reloc(0, .{ .inst = index + 1 }, 0) },
188180 });
189 try lower.emit(.none, .jnp, &.{
181 try lower.encode(.none, .jnp, &.{
190182 .{ .imm = lower.reloc(0, .{ .inst = inst.data.inst.inst }, 0) },
191183 });
192184 },
193185 .pseudo_j_nz_or_p_inst => {
194186 assert(inst.data.inst.fixes == ._);
195 try lower.emit(.none, .jnz, &.{
187 try lower.encode(.none, .jnz, &.{
196188 .{ .imm = lower.reloc(0, .{ .inst = inst.data.inst.inst }, 0) },
197189 });
198 try lower.emit(.none, .jp, &.{
190 try lower.encode(.none, .jp, &.{
199191 .{ .imm = lower.reloc(0, .{ .inst = inst.data.inst.inst }, 0) },
200192 });
201193 },
202194
203195 .pseudo_probe_align_ri_s => {
204 try lower.emit(.none, .@"test", &.{
196 try lower.encode(.none, .@"test", &.{
205197 .{ .reg = inst.data.ri.r1 },
206198 .{ .imm = .s(@bitCast(inst.data.ri.i)) },
207199 });
208 try lower.emit(.none, .jz, &.{
200 try lower.encode(.none, .jz, &.{
209201 .{ .imm = lower.reloc(0, .{ .inst = index + 1 }, 0) },
210202 });
211 try lower.emit(.none, .lea, &.{
203 try lower.encode(.none, .lea, &.{
212204 .{ .reg = inst.data.ri.r1 },
213205 .{ .mem = Memory.initSib(.qword, .{
214206 .base = .{ .reg = inst.data.ri.r1 },
215207 .disp = -page_size,
216208 }) },
217209 });
218 try lower.emit(.none, .@"test", &.{
210 try lower.encode(.none, .@"test", &.{
219211 .{ .mem = Memory.initSib(.dword, .{
220212 .base = .{ .reg = inst.data.ri.r1 },
221213 }) },
222214 .{ .reg = inst.data.ri.r1.to32() },
223215 });
224 try lower.emit(.none, .jmp, &.{
216 try lower.encode(.none, .jmp, &.{
225217 .{ .imm = lower.reloc(0, .{ .inst = index }, 0) },
226218 });
227219 assert(lower.result_insts_len == pseudo_probe_align_insts);
......@@ -229,7 +221,7 @@ pub fn lowerMir(lower: *Lower, index: Mir.Inst.Index) Error!struct {
229221 .pseudo_probe_adjust_unrolled_ri_s => {
230222 var offset = page_size;
231223 while (offset < @as(i32, @bitCast(inst.data.ri.i))) : (offset += page_size) {
232 try lower.emit(.none, .@"test", &.{
224 try lower.encode(.none, .@"test", &.{
233225 .{ .mem = Memory.initSib(.dword, .{
234226 .base = .{ .reg = inst.data.ri.r1 },
235227 .disp = -offset,
......@@ -237,25 +229,25 @@ pub fn lowerMir(lower: *Lower, index: Mir.Inst.Index) Error!struct {
237229 .{ .reg = inst.data.ri.r1.to32() },
238230 });
239231 }
240 try lower.emit(.none, .sub, &.{
232 try lower.encode(.none, .sub, &.{
241233 .{ .reg = inst.data.ri.r1 },
242234 .{ .imm = .s(@bitCast(inst.data.ri.i)) },
243235 });
244236 assert(lower.result_insts_len <= pseudo_probe_adjust_unrolled_max_insts);
245237 },
246238 .pseudo_probe_adjust_setup_rri_s => {
247 try lower.emit(.none, .mov, &.{
239 try lower.encode(.none, .mov, &.{
248240 .{ .reg = inst.data.rri.r2.to32() },
249241 .{ .imm = .s(@bitCast(inst.data.rri.i)) },
250242 });
251 try lower.emit(.none, .sub, &.{
243 try lower.encode(.none, .sub, &.{
252244 .{ .reg = inst.data.rri.r1 },
253245 .{ .reg = inst.data.rri.r2 },
254246 });
255247 assert(lower.result_insts_len == pseudo_probe_adjust_setup_insts);
256248 },
257249 .pseudo_probe_adjust_loop_rr => {
258 try lower.emit(.none, .@"test", &.{
250 try lower.encode(.none, .@"test", &.{
259251 .{ .mem = Memory.initSib(.dword, .{
260252 .base = .{ .reg = inst.data.rr.r1 },
261253 .scale_index = .{ .scale = 1, .index = inst.data.rr.r2 },
......@@ -263,11 +255,11 @@ pub fn lowerMir(lower: *Lower, index: Mir.Inst.Index) Error!struct {
263255 }) },
264256 .{ .reg = inst.data.rr.r1.to32() },
265257 });
266 try lower.emit(.none, .sub, &.{
258 try lower.encode(.none, .sub, &.{
267259 .{ .reg = inst.data.rr.r2 },
268260 .{ .imm = .s(page_size) },
269261 });
270 try lower.emit(.none, .jae, &.{
262 try lower.encode(.none, .jae, &.{
271263 .{ .imm = lower.reloc(0, .{ .inst = index }, 0) },
272264 });
273265 assert(lower.result_insts_len == pseudo_probe_adjust_loop_insts);
......@@ -275,47 +267,47 @@ pub fn lowerMir(lower: *Lower, index: Mir.Inst.Index) Error!struct {
275267 .pseudo_push_reg_list => try lower.pushPopRegList(.push, inst),
276268 .pseudo_pop_reg_list => try lower.pushPopRegList(.pop, inst),
277269
278 .pseudo_cfi_def_cfa_ri_s => try lower.emit(.directive, .@".cfi_def_cfa", &.{
270 .pseudo_cfi_def_cfa_ri_s => try lower.encode(.directive, .@".cfi_def_cfa", &.{
279271 .{ .reg = inst.data.ri.r1 },
280272 .{ .imm = lower.imm(.ri_s, inst.data.ri.i) },
281273 }),
282 .pseudo_cfi_def_cfa_register_r => try lower.emit(.directive, .@".cfi_def_cfa_register", &.{
274 .pseudo_cfi_def_cfa_register_r => try lower.encode(.directive, .@".cfi_def_cfa_register", &.{
283275 .{ .reg = inst.data.r.r1 },
284276 }),
285 .pseudo_cfi_def_cfa_offset_i_s => try lower.emit(.directive, .@".cfi_def_cfa_offset", &.{
277 .pseudo_cfi_def_cfa_offset_i_s => try lower.encode(.directive, .@".cfi_def_cfa_offset", &.{
286278 .{ .imm = lower.imm(.i_s, inst.data.i.i) },
287279 }),
288 .pseudo_cfi_adjust_cfa_offset_i_s => try lower.emit(.directive, .@".cfi_adjust_cfa_offset", &.{
280 .pseudo_cfi_adjust_cfa_offset_i_s => try lower.encode(.directive, .@".cfi_adjust_cfa_offset", &.{
289281 .{ .imm = lower.imm(.i_s, inst.data.i.i) },
290282 }),
291 .pseudo_cfi_offset_ri_s => try lower.emit(.directive, .@".cfi_offset", &.{
283 .pseudo_cfi_offset_ri_s => try lower.encode(.directive, .@".cfi_offset", &.{
292284 .{ .reg = inst.data.ri.r1 },
293285 .{ .imm = lower.imm(.ri_s, inst.data.ri.i) },
294286 }),
295 .pseudo_cfi_val_offset_ri_s => try lower.emit(.directive, .@".cfi_val_offset", &.{
287 .pseudo_cfi_val_offset_ri_s => try lower.encode(.directive, .@".cfi_val_offset", &.{
296288 .{ .reg = inst.data.ri.r1 },
297289 .{ .imm = lower.imm(.ri_s, inst.data.ri.i) },
298290 }),
299 .pseudo_cfi_rel_offset_ri_s => try lower.emit(.directive, .@".cfi_rel_offset", &.{
291 .pseudo_cfi_rel_offset_ri_s => try lower.encode(.directive, .@".cfi_rel_offset", &.{
300292 .{ .reg = inst.data.ri.r1 },
301293 .{ .imm = lower.imm(.ri_s, inst.data.ri.i) },
302294 }),
303 .pseudo_cfi_register_rr => try lower.emit(.directive, .@".cfi_register", &.{
295 .pseudo_cfi_register_rr => try lower.encode(.directive, .@".cfi_register", &.{
304296 .{ .reg = inst.data.rr.r1 },
305297 .{ .reg = inst.data.rr.r2 },
306298 }),
307 .pseudo_cfi_restore_r => try lower.emit(.directive, .@".cfi_restore", &.{
299 .pseudo_cfi_restore_r => try lower.encode(.directive, .@".cfi_restore", &.{
308300 .{ .reg = inst.data.r.r1 },
309301 }),
310 .pseudo_cfi_undefined_r => try lower.emit(.directive, .@".cfi_undefined", &.{
302 .pseudo_cfi_undefined_r => try lower.encode(.directive, .@".cfi_undefined", &.{
311303 .{ .reg = inst.data.r.r1 },
312304 }),
313 .pseudo_cfi_same_value_r => try lower.emit(.directive, .@".cfi_same_value", &.{
305 .pseudo_cfi_same_value_r => try lower.encode(.directive, .@".cfi_same_value", &.{
314306 .{ .reg = inst.data.r.r1 },
315307 }),
316 .pseudo_cfi_remember_state_none => try lower.emit(.directive, .@".cfi_remember_state", &.{}),
317 .pseudo_cfi_restore_state_none => try lower.emit(.directive, .@".cfi_restore_state", &.{}),
318 .pseudo_cfi_escape_bytes => try lower.emit(.directive, .@".cfi_escape", &.{
308 .pseudo_cfi_remember_state_none => try lower.encode(.directive, .@".cfi_remember_state", &.{}),
309 .pseudo_cfi_restore_state_none => try lower.encode(.directive, .@".cfi_restore_state", &.{}),
310 .pseudo_cfi_escape_bytes => try lower.encode(.directive, .@".cfi_escape", &.{
319311 .{ .bytes = inst.data.bytes.get(lower.mir) },
320312 }),
321313
......@@ -331,7 +323,6 @@ pub fn lowerMir(lower: *Lower, index: Mir.Inst.Index) Error!struct {
331323 .pseudo_dbg_arg_i_s,
332324 .pseudo_dbg_arg_i_u,
333325 .pseudo_dbg_arg_i_64,
334 .pseudo_dbg_arg_reloc,
335326 .pseudo_dbg_arg_ro,
336327 .pseudo_dbg_arg_fa,
337328 .pseudo_dbg_arg_m,
......@@ -341,7 +332,6 @@ pub fn lowerMir(lower: *Lower, index: Mir.Inst.Index) Error!struct {
341332 .pseudo_dbg_var_i_s,
342333 .pseudo_dbg_var_i_u,
343334 .pseudo_dbg_var_i_64,
344 .pseudo_dbg_var_reloc,
345335 .pseudo_dbg_var_ro,
346336 .pseudo_dbg_var_fa,
347337 .pseudo_dbg_var_m,
......@@ -362,7 +352,7 @@ pub fn lowerMir(lower: *Lower, index: Mir.Inst.Index) Error!struct {
362352pub fn fail(lower: *Lower, comptime format: []const u8, args: anytype) Error {
363353 @branchHint(.cold);
364354 assert(lower.err_msg == null);
365 lower.err_msg = try Zcu.ErrorMsg.create(lower.allocator, lower.src_loc, format, args);
355 lower.err_msg = try .create(lower.allocator, lower.src_loc, format, args);
366356 return error.LowerFail;
367357}
368358
......@@ -404,13 +394,17 @@ pub fn imm(lower: *const Lower, ops: Mir.Inst.Ops, i: u32) Immediate {
404394 };
405395}
406396
407pub fn mem(lower: *Lower, op_index: InstOpIndex, payload: u32) Memory {
408 var m = lower.mir.resolveFrameLoc(lower.mir.extraData(Mir.Memory, payload).data).decode();
397fn mem(lower: *Lower, op_index: InstOpIndex, payload: u32) Memory {
398 var m = lower.mir.resolveMemoryExtra(payload).decode();
409399 switch (m) {
410400 .sib => |*sib| switch (sib.base) {
411 else => {},
401 .none, .reg, .frame => {},
412402 .table => sib.disp = lower.reloc(op_index, .table, sib.disp).signed,
413403 .rip_inst => |inst_index| sib.disp = lower.reloc(op_index, .{ .inst = inst_index }, sib.disp).signed,
404 .nav => |nav| sib.disp = lower.reloc(op_index, .{ .nav = nav }, sib.disp).signed,
405 .uav => |uav| sib.disp = lower.reloc(op_index, .{ .uav = uav }, sib.disp).signed,
406 .lazy_sym => |lazy_sym| sib.disp = lower.reloc(op_index, .{ .lazy_sym = lazy_sym }, sib.disp).signed,
407 .extern_func => |extern_func| sib.disp = lower.reloc(op_index, .{ .extern_func = extern_func }, sib.disp).signed,
414408 },
415409 else => {},
416410 }
......@@ -428,172 +422,8 @@ fn reloc(lower: *Lower, op_index: InstOpIndex, target: Reloc.Target, off: i32) I
428422 return .s(0);
429423}
430424
431fn emit(lower: *Lower, prefix: Prefix, mnemonic: Mnemonic, ops: []const Operand) Error!void {
432 const emit_prefix = prefix;
433 var emit_mnemonic = mnemonic;
434 var emit_ops_storage: [4]Operand = undefined;
435 const emit_ops = emit_ops_storage[0..ops.len];
436 for (emit_ops, ops, 0..) |*emit_op, op, op_index| {
437 emit_op.* = switch (op) {
438 else => op,
439 .mem => |mem_op| op: switch (mem_op.base()) {
440 else => op,
441 .reloc => |sym_index| {
442 assert(prefix == .none);
443 assert(mem_op.sib.disp == 0);
444 assert(mem_op.sib.scale_index.scale == 0);
445
446 if (lower.bin_file.cast(.elf)) |elf_file| {
447 const zo = elf_file.zigObjectPtr().?;
448 const elf_sym = zo.symbol(sym_index);
449
450 if (elf_sym.flags.is_tls) {
451 // TODO handle extern TLS vars, i.e., emit GD model
452 if (lower.pic) {
453 // Here, we currently assume local dynamic TLS vars, and so
454 // we emit LD model.
455 _ = lower.reloc(1, .{ .linker_tlsld = sym_index }, 0);
456 lower.result_insts[lower.result_insts_len] = try .new(.none, .lea, &.{
457 .{ .reg = .rdi },
458 .{ .mem = Memory.initRip(.none, 0) },
459 }, lower.target);
460 lower.result_insts_len += 1;
461 _ = lower.reloc(0, .{
462 .linker_extern_fn = try elf_file.getGlobalSymbol("__tls_get_addr", null),
463 }, 0);
464 lower.result_insts[lower.result_insts_len] = try .new(.none, .call, &.{
465 .{ .imm = .s(0) },
466 }, lower.target);
467 lower.result_insts_len += 1;
468 _ = lower.reloc(@intCast(op_index), .{ .linker_dtpoff = sym_index }, 0);
469 emit_mnemonic = .lea;
470 break :op .{ .mem = Memory.initSib(.none, .{
471 .base = .{ .reg = .rax },
472 .disp = std.math.minInt(i32),
473 }) };
474 } else {
475 // Since we are linking statically, we emit LE model directly.
476 lower.result_insts[lower.result_insts_len] = try .new(.none, .mov, &.{
477 .{ .reg = .rax },
478 .{ .mem = Memory.initSib(.qword, .{ .base = .{ .reg = .fs } }) },
479 }, lower.target);
480 lower.result_insts_len += 1;
481 _ = lower.reloc(@intCast(op_index), .{ .linker_reloc = sym_index }, 0);
482 emit_mnemonic = .lea;
483 break :op .{ .mem = Memory.initSib(.none, .{
484 .base = .{ .reg = .rax },
485 .disp = std.math.minInt(i32),
486 }) };
487 }
488 }
489
490 if (lower.pic) switch (mnemonic) {
491 .lea => {
492 _ = lower.reloc(@intCast(op_index), .{ .linker_reloc = sym_index }, 0);
493 if (!elf_sym.flags.is_extern_ptr) break :op .{ .mem = Memory.initRip(.none, 0) };
494 emit_mnemonic = .mov;
495 break :op .{ .mem = Memory.initRip(.ptr, 0) };
496 },
497 .mov => {
498 if (elf_sym.flags.is_extern_ptr) {
499 const reg = ops[0].reg;
500 _ = lower.reloc(1, .{ .linker_reloc = sym_index }, 0);
501 lower.result_insts[lower.result_insts_len] = try .new(.none, .mov, &.{
502 .{ .reg = reg.to64() },
503 .{ .mem = Memory.initRip(.qword, 0) },
504 }, lower.target);
505 lower.result_insts_len += 1;
506 break :op .{ .mem = Memory.initSib(mem_op.sib.ptr_size, .{ .base = .{
507 .reg = reg.to64(),
508 } }) };
509 }
510 _ = lower.reloc(@intCast(op_index), .{ .linker_reloc = sym_index }, 0);
511 break :op .{ .mem = Memory.initRip(mem_op.sib.ptr_size, 0) };
512 },
513 else => unreachable,
514 };
515 _ = lower.reloc(@intCast(op_index), .{ .linker_reloc = sym_index }, 0);
516 switch (mnemonic) {
517 .call => break :op .{ .mem = Memory.initSib(mem_op.sib.ptr_size, .{
518 .base = .{ .reg = .ds },
519 }) },
520 .lea => {
521 emit_mnemonic = .mov;
522 break :op .{ .imm = .s(0) };
523 },
524 .mov => break :op .{ .mem = Memory.initSib(mem_op.sib.ptr_size, .{
525 .base = .{ .reg = .ds },
526 }) },
527 else => unreachable,
528 }
529 } else if (lower.bin_file.cast(.macho)) |macho_file| {
530 const zo = macho_file.getZigObject().?;
531 const macho_sym = zo.symbols.items[sym_index];
532
533 if (macho_sym.flags.tlv) {
534 _ = lower.reloc(1, .{ .linker_reloc = sym_index }, 0);
535 lower.result_insts[lower.result_insts_len] = try .new(.none, .mov, &.{
536 .{ .reg = .rdi },
537 .{ .mem = Memory.initRip(.ptr, 0) },
538 }, lower.target);
539 lower.result_insts_len += 1;
540 lower.result_insts[lower.result_insts_len] = try .new(.none, .call, &.{
541 .{ .mem = Memory.initSib(.qword, .{ .base = .{ .reg = .rdi } }) },
542 }, lower.target);
543 lower.result_insts_len += 1;
544 emit_mnemonic = .mov;
545 break :op .{ .reg = .rax };
546 }
547
548 break :op switch (mnemonic) {
549 .lea => {
550 _ = lower.reloc(@intCast(op_index), .{ .linker_reloc = sym_index }, 0);
551 if (!macho_sym.flags.is_extern_ptr) break :op .{ .mem = Memory.initRip(.none, 0) };
552 emit_mnemonic = .mov;
553 break :op .{ .mem = Memory.initRip(.ptr, 0) };
554 },
555 .mov => {
556 if (macho_sym.flags.is_extern_ptr) {
557 const reg = ops[0].reg;
558 _ = lower.reloc(1, .{ .linker_reloc = sym_index }, 0);
559 lower.result_insts[lower.result_insts_len] = try .new(.none, .mov, &.{
560 .{ .reg = reg.to64() },
561 .{ .mem = Memory.initRip(.qword, 0) },
562 }, lower.target);
563 lower.result_insts_len += 1;
564 break :op .{ .mem = Memory.initSib(mem_op.sib.ptr_size, .{ .base = .{
565 .reg = reg.to64(),
566 } }) };
567 }
568 _ = lower.reloc(@intCast(op_index), .{ .linker_reloc = sym_index }, 0);
569 break :op .{ .mem = Memory.initRip(mem_op.sib.ptr_size, 0) };
570 },
571 else => unreachable,
572 };
573 } else {
574 return lower.fail("TODO: bin format '{s}'", .{@tagName(lower.bin_file.tag)});
575 }
576 },
577 .pcrel => |sym_index| {
578 assert(prefix == .none);
579 assert(mem_op.sib.disp == 0);
580 assert(mem_op.sib.scale_index.scale == 0);
581
582 _ = lower.reloc(@intCast(op_index), .{ .linker_pcrel = sym_index }, 0);
583 break :op switch (lower.bin_file.tag) {
584 .elf => op,
585 .macho => switch (mnemonic) {
586 .lea => .{ .mem = Memory.initRip(.none, 0) },
587 .mov => .{ .mem = Memory.initRip(mem_op.sib.ptr_size, 0) },
588 else => unreachable,
589 },
590 else => |tag| return lower.fail("TODO: bin format '{s}'", .{@tagName(tag)}),
591 };
592 },
593 },
594 };
595 }
596 lower.result_insts[lower.result_insts_len] = try .new(emit_prefix, emit_mnemonic, emit_ops, lower.target);
425fn encode(lower: *Lower, prefix: Prefix, mnemonic: Mnemonic, ops: []const Operand) Error!void {
426 lower.result_insts[lower.result_insts_len] = try .new(prefix, mnemonic, ops, lower.target);
597427 lower.result_insts_len += 1;
598428}
599429
......@@ -618,10 +448,10 @@ fn generic(lower: *Lower, inst: Mir.Inst) Error!void {
618448 .rrmi => inst.data.rrix.fixes,
619449 .mi_u, .mi_s => inst.data.x.fixes,
620450 .m => inst.data.x.fixes,
621 .extern_fn_reloc, .got_reloc, .direct_reloc, .import_reloc, .tlv_reloc, .rel => ._,
451 .nav, .uav, .lazy_sym, .extern_func => ._,
622452 else => return lower.fail("TODO lower .{s}", .{@tagName(inst.ops)}),
623453 };
624 try lower.emit(switch (fixes) {
454 try lower.encode(switch (fixes) {
625455 inline else => |tag| comptime if (std.mem.indexOfScalar(u8, @tagName(tag), ' ')) |space|
626456 @field(Prefix, @tagName(tag)[0..space])
627457 else
......@@ -752,22 +582,17 @@ fn generic(lower: *Lower, inst: Mir.Inst) Error!void {
752582 .{ .mem = lower.mem(2, inst.data.rrix.payload) },
753583 .{ .imm = lower.imm(inst.ops, inst.data.rrix.i) },
754584 },
755 .extern_fn_reloc, .rel => &.{
756 .{ .imm = lower.reloc(0, .{ .linker_extern_fn = inst.data.reloc.sym_index }, inst.data.reloc.off) },
585 .nav => &.{
586 .{ .imm = lower.reloc(0, .{ .nav = inst.data.nav.index }, inst.data.nav.off) },
757587 },
758 .got_reloc, .direct_reloc, .import_reloc => ops: {
759 const reg = inst.data.rx.r1;
760 const extra = lower.mir.extraData(bits.SymbolOffset, inst.data.rx.payload).data;
761 _ = lower.reloc(1, switch (inst.ops) {
762 .got_reloc => .{ .linker_got = extra.sym_index },
763 .direct_reloc => .{ .linker_direct = extra.sym_index },
764 .import_reloc => .{ .linker_import = extra.sym_index },
765 else => unreachable,
766 }, extra.off);
767 break :ops &.{
768 .{ .reg = reg },
769 .{ .mem = Memory.initRip(Memory.PtrSize.fromBitSize(reg.bitSize()), 0) },
770 };
588 .uav => &.{
589 .{ .imm = lower.reloc(0, .{ .uav = inst.data.uav }, 0) },
590 },
591 .lazy_sym => &.{
592 .{ .imm = lower.reloc(0, .{ .lazy_sym = inst.data.lazy_sym }, 0) },
593 },
594 .extern_func => &.{
595 .{ .imm = lower.reloc(0, .{ .extern_func = inst.data.extern_func }, 0) },
771596 },
772597 else => return lower.fail("TODO lower {s} {s}", .{ @tagName(inst.tag), @tagName(inst.ops) }),
773598 });
......@@ -787,7 +612,7 @@ fn pushPopRegList(lower: *Lower, comptime mnemonic: Mnemonic, inst: Mir.Inst) Er
787612 else => unreachable,
788613 } });
789614 while (it.next()) |i| {
790 try lower.emit(.none, mnemonic, &.{.{
615 try lower.encode(.none, mnemonic, &.{.{
791616 .reg = callee_preserved_regs[i],
792617 }});
793618 switch (mnemonic) {
......@@ -801,7 +626,7 @@ fn pushPopRegList(lower: *Lower, comptime mnemonic: Mnemonic, inst: Mir.Inst) Er
801626 .push => {
802627 var it = inst.data.reg_list.iterator(.{});
803628 while (it.next()) |i| {
804 try lower.emit(.directive, .@".cfi_rel_offset", &.{
629 try lower.encode(.directive, .@".cfi_rel_offset", &.{
805630 .{ .reg = callee_preserved_regs[i] },
806631 .{ .imm = .s(off) },
807632 });
......@@ -819,12 +644,14 @@ const page_size: i32 = 1 << 12;
819644const abi = @import("abi.zig");
820645const assert = std.debug.assert;
821646const bits = @import("bits.zig");
647const codegen = @import("../../codegen.zig");
822648const encoder = @import("encoder.zig");
823649const link = @import("../../link.zig");
824650const std = @import("std");
825651
826652const Immediate = Instruction.Immediate;
827653const Instruction = encoder.Instruction;
654const InternPool = @import("../../InternPool.zig");
828655const Lower = @This();
829656const Memory = Instruction.Memory;
830657const Mir = @import("Mir.zig");
......@@ -833,3 +660,4 @@ const Zcu = @import("../../Zcu.zig");
833660const Operand = Instruction.Operand;
834661const Prefix = Instruction.Prefix;
835662const Register = bits.Register;
663const Type = @import("../../Type.zig");
src/arch/x86_64/Mir.zig+125-49
......@@ -9,8 +9,8 @@
99instructions: std.MultiArrayList(Inst).Slice,
1010/// The meaning of this data is determined by `Inst.Tag` value.
1111extra: []const u32,
12local_name_bytes: []const u8,
13local_types: []const InternPool.Index,
12string_bytes: []const u8,
13locals: []const Local,
1414table: []const Inst.Index,
1515frame_locs: std.MultiArrayList(FrameLoc).Slice,
1616
......@@ -1363,9 +1363,6 @@ pub const Inst = struct {
13631363 /// Immediate (byte), register operands.
13641364 /// Uses `ri` payload.
13651365 ir,
1366 /// Relative displacement operand.
1367 /// Uses `reloc` payload.
1368 rel,
13691366 /// Register, memory operands.
13701367 /// Uses `rx` payload with extra data of type `Memory`.
13711368 rm,
......@@ -1411,21 +1408,18 @@ pub const Inst = struct {
14111408 /// References another Mir instruction directly.
14121409 /// Uses `inst` payload.
14131410 inst,
1414 /// Linker relocation - external function.
1415 /// Uses `reloc` payload.
1416 extern_fn_reloc,
1417 /// Linker relocation - GOT indirection.
1418 /// Uses `rx` payload with extra data of type `bits.SymbolOffset`.
1419 got_reloc,
1420 /// Linker relocation - direct reference.
1421 /// Uses `rx` payload with extra data of type `bits.SymbolOffset`.
1422 direct_reloc,
1423 /// Linker relocation - imports table indirection (binding).
1424 /// Uses `rx` payload with extra data of type `bits.SymbolOffset`.
1425 import_reloc,
1426 /// Linker relocation - threadlocal variable via GOT indirection.
1427 /// Uses `rx` payload with extra data of type `bits.SymbolOffset`.
1428 tlv_reloc,
1411 /// References a nav.
1412 /// Uses `nav` payload.
1413 nav,
1414 /// References an uav.
1415 /// Uses `uav` payload.
1416 uav,
1417 /// References a lazy symbol.
1418 /// Uses `lazy_sym` payload.
1419 lazy_sym,
1420 /// References an external symbol.
1421 /// Uses `extern_func` payload.
1422 extern_func,
14291423
14301424 // Pseudo instructions:
14311425
......@@ -1560,9 +1554,6 @@ pub const Inst = struct {
15601554 /// Uses `i64` payload.
15611555 pseudo_dbg_arg_i_64,
15621556 /// Local argument.
1563 /// Uses `reloc` payload.
1564 pseudo_dbg_arg_reloc,
1565 /// Local argument.
15661557 /// Uses `ro` payload.
15671558 pseudo_dbg_arg_ro,
15681559 /// Local argument.
......@@ -1589,9 +1580,6 @@ pub const Inst = struct {
15891580 /// Uses `i64` payload.
15901581 pseudo_dbg_var_i_64,
15911582 /// Local variable.
1592 /// Uses `reloc` payload.
1593 pseudo_dbg_var_reloc,
1594 /// Local variable.
15951583 /// Uses `ro` payload.
15961584 pseudo_dbg_var_ro,
15971585 /// Local variable.
......@@ -1719,12 +1707,12 @@ pub const Inst = struct {
17191707 return std.mem.sliceAsBytes(mir.extra[bytes.payload..])[0..bytes.len];
17201708 }
17211709 },
1722 /// Relocation for the linker where:
1723 /// * `sym_index` is the index of the target
1724 /// * `off` is the offset from the target
1725 reloc: bits.SymbolOffset,
17261710 fa: bits.FrameAddr,
17271711 ro: bits.RegisterOffset,
1712 nav: bits.NavOffset,
1713 uav: InternPool.Key.Ptr.BaseAddr.Uav,
1714 lazy_sym: link.File.LazySymbol,
1715 extern_func: Mir.NullTerminatedString,
17281716 /// Debug line and column position
17291717 line_column: struct {
17301718 line: u32,
......@@ -1787,7 +1775,7 @@ pub const Inst = struct {
17871775pub const RegisterList = struct {
17881776 bitset: BitSet,
17891777
1790 const BitSet = IntegerBitSet(32);
1778 const BitSet = std.bit_set.IntegerBitSet(32);
17911779 const Self = @This();
17921780
17931781 pub const empty: RegisterList = .{ .bitset = .initEmpty() };
......@@ -1826,6 +1814,22 @@ pub const RegisterList = struct {
18261814 }
18271815};
18281816
1817pub const NullTerminatedString = enum(u32) {
1818 none = std.math.maxInt(u32),
1819 _,
1820
1821 pub fn toSlice(nts: NullTerminatedString, mir: *const Mir) ?[:0]const u8 {
1822 if (nts == .none) return null;
1823 const string_bytes = mir.string_bytes[@intFromEnum(nts)..];
1824 return string_bytes[0..std.mem.indexOfScalar(u8, string_bytes, 0).? :0];
1825 }
1826};
1827
1828pub const Local = struct {
1829 name: NullTerminatedString,
1830 type: InternPool.Index,
1831};
1832
18291833pub const Imm32 = struct {
18301834 imm: u32,
18311835};
......@@ -1861,11 +1865,10 @@ pub const Memory = struct {
18611865 size: bits.Memory.Size,
18621866 index: Register,
18631867 scale: bits.Memory.Scale,
1864 _: u14 = undefined,
1868 _: u13 = undefined,
18651869 };
18661870
18671871 pub fn encode(mem: bits.Memory) Memory {
1868 assert(mem.base != .reloc or mem.mod != .off);
18691872 return .{
18701873 .info = .{
18711874 .base = mem.base,
......@@ -1887,17 +1890,27 @@ pub const Memory = struct {
18871890 .none, .table => undefined,
18881891 .reg => |reg| @intFromEnum(reg),
18891892 .frame => |frame_index| @intFromEnum(frame_index),
1890 .reloc, .pcrel => |sym_index| sym_index,
18911893 .rip_inst => |inst_index| inst_index,
1894 .nav => |nav| @intFromEnum(nav),
1895 .uav => |uav| @intFromEnum(uav.val),
1896 .lazy_sym => |lazy_sym| @intFromEnum(lazy_sym.ty),
1897 .extern_func => |extern_func| @intFromEnum(extern_func),
18921898 },
18931899 .off = switch (mem.mod) {
18941900 .rm => |rm| @bitCast(rm.disp),
18951901 .off => |off| @truncate(off),
18961902 },
1897 .extra = if (mem.mod == .off)
1898 @intCast(mem.mod.off >> 32)
1899 else
1900 undefined,
1903 .extra = switch (mem.mod) {
1904 .rm => switch (mem.base) {
1905 else => undefined,
1906 .uav => |uav| @intFromEnum(uav.orig_ty),
1907 .lazy_sym => |lazy_sym| @intFromEnum(lazy_sym.kind),
1908 },
1909 .off => switch (mem.base) {
1910 .reg => @intCast(mem.mod.off >> 32),
1911 else => unreachable,
1912 },
1913 },
19011914 };
19021915 }
19031916
......@@ -1915,9 +1928,11 @@ pub const Memory = struct {
19151928 .reg => .{ .reg = @enumFromInt(mem.base) },
19161929 .frame => .{ .frame = @enumFromInt(mem.base) },
19171930 .table => .table,
1918 .reloc => .{ .reloc = mem.base },
1919 .pcrel => .{ .pcrel = mem.base },
19201931 .rip_inst => .{ .rip_inst = mem.base },
1932 .nav => .{ .nav = @enumFromInt(mem.base) },
1933 .uav => .{ .uav = .{ .val = @enumFromInt(mem.base), .orig_ty = @enumFromInt(mem.extra) } },
1934 .lazy_sym => .{ .lazy_sym = .{ .kind = @enumFromInt(mem.extra), .ty = @enumFromInt(mem.base) } },
1935 .extern_func => .{ .extern_func = @enumFromInt(mem.base) },
19211936 },
19221937 .scale_index = switch (mem.info.index) {
19231938 .none => null,
......@@ -1945,8 +1960,8 @@ pub const Memory = struct {
19451960pub fn deinit(mir: *Mir, gpa: std.mem.Allocator) void {
19461961 mir.instructions.deinit(gpa);
19471962 gpa.free(mir.extra);
1948 gpa.free(mir.local_name_bytes);
1949 gpa.free(mir.local_types);
1963 gpa.free(mir.string_bytes);
1964 gpa.free(mir.locals);
19501965 gpa.free(mir.table);
19511966 mir.frame_locs.deinit(gpa);
19521967 mir.* = undefined;
......@@ -1970,16 +1985,15 @@ pub fn emit(
19701985 const mod = zcu.navFileScope(nav).mod.?;
19711986 var e: Emit = .{
19721987 .lower = .{
1973 .bin_file = lf,
19741988 .target = &mod.resolved_target.result,
19751989 .allocator = gpa,
19761990 .mir = mir,
19771991 .cc = fn_info.cc,
19781992 .src_loc = src_loc,
1979 .output_mode = comp.config.output_mode,
1980 .link_mode = comp.config.link_mode,
1981 .pic = mod.pic,
19821993 },
1994 .bin_file = lf,
1995 .pt = pt,
1996 .pic = mod.pic,
19831997 .atom_index = sym: {
19841998 if (lf.cast(.elf)) |ef| break :sym try ef.zigObjectPtr().?.getOrCreateMetadataForNav(zcu, nav);
19851999 if (lf.cast(.macho)) |mf| break :sym try mf.getZigObject().?.getOrCreateMetadataForNav(mf, nav);
......@@ -1992,6 +2006,7 @@ pub fn emit(
19922006 },
19932007 .debug_output = debug_output,
19942008 .code = code,
2009
19952010 .prev_di_loc = .{
19962011 .line = func.lbrace_line,
19972012 .column = func.lbrace_column,
......@@ -2002,7 +2017,12 @@ pub fn emit(
20022017 },
20032018 },
20042019 .prev_di_pc = 0,
2020
2021 .code_offset_mapping = .empty,
2022 .relocs = .empty,
2023 .table_relocs = .empty,
20052024 };
2025 defer e.deinit();
20062026 e.emitMir() catch |err| switch (err) {
20072027 error.LowerFail, error.EmitFail => return zcu.codegenFailMsg(nav, e.lower.err_msg.?),
20082028 error.InvalidInstruction, error.CannotEncode => return zcu.codegenFail(nav, "emit MIR failed: {s} (Zig compiler bug)", .{@errorName(err)}),
......@@ -2010,6 +2030,62 @@ pub fn emit(
20102030 };
20112031}
20122032
2033pub fn emitLazy(
2034 mir: Mir,
2035 lf: *link.File,
2036 pt: Zcu.PerThread,
2037 src_loc: Zcu.LazySrcLoc,
2038 lazy_sym: link.File.LazySymbol,
2039 code: *std.ArrayListUnmanaged(u8),
2040 debug_output: link.File.DebugInfoOutput,
2041) codegen.CodeGenError!void {
2042 const zcu = pt.zcu;
2043 const comp = zcu.comp;
2044 const gpa = comp.gpa;
2045 const mod = comp.root_mod;
2046 var e: Emit = .{
2047 .lower = .{
2048 .target = &mod.resolved_target.result,
2049 .allocator = gpa,
2050 .mir = mir,
2051 .cc = .auto,
2052 .src_loc = src_loc,
2053 },
2054 .bin_file = lf,
2055 .pt = pt,
2056 .pic = mod.pic,
2057 .atom_index = sym: {
2058 if (lf.cast(.elf)) |ef| break :sym ef.zigObjectPtr().?.getOrCreateMetadataForLazySymbol(ef, pt, lazy_sym) catch |err|
2059 return zcu.codegenFailType(lazy_sym.ty, "{s} creating lazy symbol", .{@errorName(err)});
2060 if (lf.cast(.macho)) |mf| break :sym mf.getZigObject().?.getOrCreateMetadataForLazySymbol(mf, pt, lazy_sym) catch |err|
2061 return zcu.codegenFailType(lazy_sym.ty, "{s} creating lazy symbol", .{@errorName(err)});
2062 if (lf.cast(.coff)) |cf| {
2063 const atom = cf.getOrCreateAtomForLazySymbol(pt, lazy_sym) catch |err|
2064 return zcu.codegenFailType(lazy_sym.ty, "{s} creating lazy symbol", .{@errorName(err)});
2065 break :sym cf.getAtom(atom).getSymbolIndex().?;
2066 }
2067 if (lf.cast(.plan9)) |p9f| break :sym p9f.getOrCreateAtomForLazySymbol(pt, lazy_sym) catch |err|
2068 return zcu.codegenFailType(lazy_sym.ty, "{s} creating lazy symbol", .{@errorName(err)});
2069 unreachable;
2070 },
2071 .debug_output = debug_output,
2072 .code = code,
2073
2074 .prev_di_loc = undefined,
2075 .prev_di_pc = undefined,
2076
2077 .code_offset_mapping = .empty,
2078 .relocs = .empty,
2079 .table_relocs = .empty,
2080 };
2081 defer e.deinit();
2082 e.emitMir() catch |err| switch (err) {
2083 error.LowerFail, error.EmitFail => return zcu.codegenFailTypeMsg(lazy_sym.ty, e.lower.err_msg.?),
2084 error.InvalidInstruction, error.CannotEncode => return zcu.codegenFailType(lazy_sym.ty, "emit MIR failed: {s} (Zig compiler bug)", .{@errorName(err)}),
2085 else => return zcu.codegenFailType(lazy_sym.ty, "emit MIR failed: {s}", .{@errorName(err)}),
2086 };
2087}
2088
20132089pub fn extraData(mir: Mir, comptime T: type, index: u32) struct { data: T, end: u32 } {
20142090 const fields = std.meta.fields(T);
20152091 var i: u32 = index;
......@@ -2039,9 +2115,10 @@ pub fn resolveFrameAddr(mir: Mir, frame_addr: bits.FrameAddr) bits.RegisterOffse
20392115 return .{ .reg = frame_loc.base, .off = frame_loc.disp + frame_addr.off };
20402116}
20412117
2042pub fn resolveFrameLoc(mir: Mir, mem: Memory) Memory {
2118pub fn resolveMemoryExtra(mir: Mir, payload: u32) Memory {
2119 const mem = mir.extraData(Mir.Memory, payload).data;
20432120 return switch (mem.info.base) {
2044 .none, .reg, .table, .reloc, .pcrel, .rip_inst => mem,
2121 .none, .reg, .table, .rip_inst, .nav, .uav, .lazy_sym, .extern_func => mem,
20452122 .frame => if (mir.frame_locs.len > 0) .{
20462123 .info = .{
20472124 .base = .reg,
......@@ -2063,7 +2140,6 @@ const builtin = @import("builtin");
20632140const encoder = @import("encoder.zig");
20642141const std = @import("std");
20652142
2066const IntegerBitSet = std.bit_set.IntegerBitSet;
20672143const InternPool = @import("../../InternPool.zig");
20682144const Mir = @This();
20692145const Register = bits.Register;
src/arch/x86_64/bits.zig+16-10
......@@ -4,6 +4,8 @@ const expect = std.testing.expect;
44
55const Allocator = std.mem.Allocator;
66const ArrayList = std.ArrayList;
7const InternPool = @import("../../InternPool.zig");
8const link = @import("../../link.zig");
79const Mir = @import("Mir.zig");
810
911/// EFLAGS condition codes
......@@ -750,20 +752,22 @@ pub const FrameAddr = struct { index: FrameIndex, off: i32 = 0 };
750752
751753pub const RegisterOffset = struct { reg: Register, off: i32 = 0 };
752754
753pub const SymbolOffset = struct { sym_index: u32, off: i32 = 0 };
755pub const NavOffset = struct { index: InternPool.Nav.Index, off: i32 = 0 };
754756
755757pub const Memory = struct {
756758 base: Base = .none,
757759 mod: Mod = .{ .rm = .{} },
758760
759 pub const Base = union(enum(u3)) {
761 pub const Base = union(enum(u4)) {
760762 none,
761763 reg: Register,
762764 frame: FrameIndex,
763765 table,
764 reloc: u32,
765 pcrel: u32,
766766 rip_inst: Mir.Inst.Index,
767 nav: InternPool.Nav.Index,
768 uav: InternPool.Key.Ptr.BaseAddr.Uav,
769 lazy_sym: link.File.LazySymbol,
770 extern_func: Mir.NullTerminatedString,
767771
768772 pub const Tag = @typeInfo(Base).@"union".tag_type.?;
769773 };
......@@ -899,7 +903,10 @@ pub const Memory = struct {
899903pub const Immediate = union(enum) {
900904 signed: i32,
901905 unsigned: u64,
902 reloc: SymbolOffset,
906 nav: NavOffset,
907 uav: InternPool.Key.Ptr.BaseAddr.Uav,
908 lazy_sym: link.File.LazySymbol,
909 extern_func: Mir.NullTerminatedString,
903910
904911 pub fn u(x: u64) Immediate {
905912 return .{ .unsigned = x };
......@@ -909,10 +916,6 @@ pub const Immediate = union(enum) {
909916 return .{ .signed = x };
910917 }
911918
912 pub fn rel(sym_off: SymbolOffset) Immediate {
913 return .{ .reloc = sym_off };
914 }
915
916919 pub fn format(
917920 imm: Immediate,
918921 comptime _: []const u8,
......@@ -921,7 +924,10 @@ pub const Immediate = union(enum) {
921924 ) @TypeOf(writer).Error!void {
922925 switch (imm) {
923926 inline else => |int| try writer.print("{d}", .{int}),
924 .reloc => |sym_off| try writer.print("Symbol({[sym_index]d}) + {[off]d}", sym_off),
927 .nav => |nav_off| try writer.print("Nav({d}) + {d}", .{ @intFromEnum(nav_off.nav), nav_off.off }),
928 .uav => |uav| try writer.print("Uav({d})", .{@intFromEnum(uav.val)}),
929 .lazy_sym => |lazy_sym| try writer.print("LazySym({s}, {d})", .{ @tagName(lazy_sym.kind), @intFromEnum(lazy_sym.ty) }),
930 .extern_func => |extern_func| try writer.print("ExternFunc({d})", .{@intFromEnum(extern_func)}),
925931 }
926932 }
927933};
src/arch/x86_64/encoder.zig+11-6
......@@ -138,7 +138,7 @@ pub const Instruction = struct {
138138 .moffs => true,
139139 .rip => false,
140140 .sib => |s| switch (s.base) {
141 .none, .frame, .table, .reloc, .pcrel, .rip_inst => false,
141 .none, .frame, .table, .rip_inst, .nav, .uav, .lazy_sym, .extern_func => false,
142142 .reg => |reg| reg.isClass(.segment),
143143 },
144144 };
......@@ -211,7 +211,7 @@ pub const Instruction = struct {
211211 .none, .imm => 0b00,
212212 .reg => |reg| @truncate(reg.enc() >> 3),
213213 .mem => |mem| switch (mem.base()) {
214 .none, .frame, .table, .reloc, .pcrel, .rip_inst => 0b00, // rsp, rbp, and rip are not extended
214 .none, .frame, .table, .rip_inst, .nav, .uav, .lazy_sym, .extern_func => 0b00, // rsp, rbp, and rip are not extended
215215 .reg => |reg| @truncate(reg.enc() >> 3),
216216 },
217217 .bytes => unreachable,
......@@ -281,9 +281,14 @@ pub const Instruction = struct {
281281 .reg => |reg| try writer.print("{s}", .{@tagName(reg)}),
282282 .frame => |frame_index| try writer.print("{}", .{frame_index}),
283283 .table => try writer.print("Table", .{}),
284 .reloc => |sym_index| try writer.print("Symbol({d})", .{sym_index}),
285 .pcrel => |sym_index| try writer.print("PcRelSymbol({d})", .{sym_index}),
286284 .rip_inst => |inst_index| try writer.print("RipInst({d})", .{inst_index}),
285 .nav => |nav| try writer.print("Nav({d})", .{@intFromEnum(nav)}),
286 .uav => |uav| try writer.print("Uav({d})", .{@intFromEnum(uav.val)}),
287 .lazy_sym => |lazy_sym| try writer.print("LazySym({s}, {d})", .{
288 @tagName(lazy_sym.kind),
289 @intFromEnum(lazy_sym.ty),
290 }),
291 .extern_func => |extern_func| try writer.print("ExternFunc({d})", .{@intFromEnum(extern_func)}),
287292 }
288293 if (mem.scaleIndex()) |si| {
289294 if (any) try writer.writeAll(" + ");
......@@ -718,11 +723,11 @@ pub const Instruction = struct {
718723 try encoder.modRm_indirectDisp32(operand_enc, 0);
719724 try encoder.disp32(undefined);
720725 } else return error.CannotEncode,
721 .reloc => if (@TypeOf(encoder).options.allow_symbols) {
726 .nav, .uav, .lazy_sym, .extern_func => if (@TypeOf(encoder).options.allow_symbols) {
722727 try encoder.modRm_indirectDisp32(operand_enc, 0);
723728 try encoder.disp32(undefined);
724729 } else return error.CannotEncode,
725 .pcrel, .rip_inst => {
730 .rip_inst => {
726731 try encoder.modRm_RIPDisp32(operand_enc);
727732 try encoder.disp32(sib.disp);
728733 },
src/codegen.zig+98-58
......@@ -951,18 +951,17 @@ pub const GenResult = union(enum) {
951951 };
952952};
953953
954fn genNavRef(
954pub fn genNavRef(
955955 lf: *link.File,
956956 pt: Zcu.PerThread,
957957 src_loc: Zcu.LazySrcLoc,
958 val: Value,
958 ty: Type,
959959 nav_index: InternPool.Nav.Index,
960960 target: std.Target,
961961) CodeGenError!GenResult {
962962 const zcu = pt.zcu;
963963 const ip = &zcu.intern_pool;
964 const ty = val.typeOf(zcu);
965 log.debug("genNavRef: val = {}", .{val.fmtValue(pt)});
964 log.debug("genNavRef: ty = {}", .{ty.fmt(pt)});
966965
967966 if (!ty.isFnOrHasRuntimeBitsIgnoreComptime(zcu)) {
968967 const imm: u64 = switch (@divExact(target.ptrBitWidth(), 8)) {
......@@ -991,12 +990,10 @@ fn genNavRef(
991990 }
992991
993992 const nav = ip.getNav(nav_index);
994 assert(!nav.isThreadlocal(ip));
995
996 const lib_name, const linkage, const visibility = if (nav.getExtern(ip)) |e|
997 .{ e.lib_name, e.linkage, e.visibility }
993 const lib_name, const linkage, const is_threadlocal = if (nav.getExtern(ip)) |e|
994 .{ e.lib_name, e.linkage, e.is_threadlocal and !zcu.navFileScope(nav_index).mod.?.single_threaded }
998995 else
999 .{ .none, .internal, .default };
996 .{ .none, .internal, false };
1000997
1001998 const name = nav.name;
1002999 if (lf.cast(.elf)) |elf_file| {
......@@ -1004,6 +1001,7 @@ fn genNavRef(
10041001 switch (linkage) {
10051002 .internal => {
10061003 const sym_index = try zo.getOrCreateMetadataForNav(zcu, nav_index);
1004 if (is_threadlocal) zo.symbol(sym_index).flags.is_tls = true;
10071005 return .{ .mcv = .{ .lea_symbol = sym_index } };
10081006 },
10091007 .strong, .weak => {
......@@ -1014,10 +1012,7 @@ fn genNavRef(
10141012 .weak => zo.symbol(sym_index).flags.weak = true,
10151013 .link_once => unreachable,
10161014 }
1017 switch (visibility) {
1018 .default => zo.symbol(sym_index).flags.is_extern_ptr = true,
1019 .hidden, .protected => {},
1020 }
1015 if (is_threadlocal) zo.symbol(sym_index).flags.is_tls = true;
10211016 return .{ .mcv = .{ .lea_symbol = sym_index } };
10221017 },
10231018 .link_once => unreachable,
......@@ -1027,8 +1022,8 @@ fn genNavRef(
10271022 switch (linkage) {
10281023 .internal => {
10291024 const sym_index = try zo.getOrCreateMetadataForNav(macho_file, nav_index);
1030 const sym = zo.symbols.items[sym_index];
1031 return .{ .mcv = .{ .lea_symbol = sym.nlist_idx } };
1025 if (is_threadlocal) zo.symbols.items[sym_index].flags.tlv = true;
1026 return .{ .mcv = .{ .lea_symbol = sym_index } };
10321027 },
10331028 .strong, .weak => {
10341029 const sym_index = try macho_file.getGlobalSymbol(name.toSlice(ip), lib_name.toSlice(ip));
......@@ -1038,10 +1033,7 @@ fn genNavRef(
10381033 .weak => zo.symbols.items[sym_index].flags.weak = true,
10391034 .link_once => unreachable,
10401035 }
1041 switch (visibility) {
1042 .default => zo.symbols.items[sym_index].flags.is_extern_ptr = true,
1043 .hidden, .protected => {},
1044 }
1036 if (is_threadlocal) zo.symbols.items[sym_index].flags.tlv = true;
10451037 return .{ .mcv = .{ .lea_symbol = sym_index } };
10461038 },
10471039 .link_once => unreachable,
......@@ -1071,6 +1063,7 @@ fn genNavRef(
10711063 }
10721064}
10731065
1066/// deprecated legacy code path
10741067pub fn genTypedValue(
10751068 lf: *link.File,
10761069 pt: Zcu.PerThread,
......@@ -1078,45 +1071,97 @@ pub fn genTypedValue(
10781071 val: Value,
10791072 target: std.Target,
10801073) CodeGenError!GenResult {
1074 const ip = &pt.zcu.intern_pool;
1075 return switch (try lowerValue(pt, val, &target)) {
1076 .none => .{ .mcv = .none },
1077 .undef => .{ .mcv = .undef },
1078 .immediate => |imm| .{ .mcv = .{ .immediate = imm } },
1079 .lea_nav => |nav| genNavRef(lf, pt, src_loc, .fromInterned(ip.getNav(nav).typeOf(ip)), nav, target),
1080 .lea_uav => |uav| switch (try lf.lowerUav(
1081 pt,
1082 uav.val,
1083 Type.fromInterned(uav.orig_ty).ptrAlignment(pt.zcu),
1084 src_loc,
1085 )) {
1086 .mcv => |mcv| .{ .mcv = switch (mcv) {
1087 else => unreachable,
1088 .load_direct => |sym_index| .{ .lea_direct = sym_index },
1089 .load_symbol => |sym_index| .{ .lea_symbol = sym_index },
1090 } },
1091 .fail => |em| .{ .fail = em },
1092 },
1093 .load_uav => |uav| lf.lowerUav(
1094 pt,
1095 uav.val,
1096 Type.fromInterned(uav.orig_ty).ptrAlignment(pt.zcu),
1097 src_loc,
1098 ),
1099 };
1100}
1101
1102const LowerResult = union(enum) {
1103 none,
1104 undef,
1105 /// The bit-width of the immediate may be smaller than `u64`. For example, on 32-bit targets
1106 /// such as ARM, the immediate will never exceed 32-bits.
1107 immediate: u64,
1108 lea_nav: InternPool.Nav.Index,
1109 lea_uav: InternPool.Key.Ptr.BaseAddr.Uav,
1110 load_uav: InternPool.Key.Ptr.BaseAddr.Uav,
1111};
1112
1113pub fn lowerValue(pt: Zcu.PerThread, val: Value, target: *const std.Target) Allocator.Error!LowerResult {
10811114 const zcu = pt.zcu;
10821115 const ip = &zcu.intern_pool;
10831116 const ty = val.typeOf(zcu);
10841117
1085 log.debug("genTypedValue: val = {}", .{val.fmtValue(pt)});
1118 log.debug("lowerValue(@as({}, {}))", .{ ty.fmt(pt), val.fmtValue(pt) });
10861119
1087 if (val.isUndef(zcu)) return .{ .mcv = .undef };
1120 if (val.isUndef(zcu)) return .undef;
10881121
10891122 switch (ty.zigTypeTag(zcu)) {
1090 .void => return .{ .mcv = .none },
1123 .void => return .none,
10911124 .pointer => switch (ty.ptrSize(zcu)) {
10921125 .slice => {},
10931126 else => switch (val.toIntern()) {
10941127 .null_value => {
1095 return .{ .mcv = .{ .immediate = 0 } };
1128 return .{ .immediate = 0 };
10961129 },
10971130 else => switch (ip.indexToKey(val.toIntern())) {
10981131 .int => {
1099 return .{ .mcv = .{ .immediate = val.toUnsignedInt(zcu) } };
1132 return .{ .immediate = val.toUnsignedInt(zcu) };
11001133 },
11011134 .ptr => |ptr| if (ptr.byte_offset == 0) switch (ptr.base_addr) {
1102 .nav => |nav| return genNavRef(lf, pt, src_loc, val, nav, target),
1103 .uav => |uav| if (Value.fromInterned(uav.val).typeOf(zcu).hasRuntimeBits(zcu))
1104 return switch (try lf.lowerUav(
1105 pt,
1106 uav.val,
1107 Type.fromInterned(uav.orig_ty).ptrAlignment(zcu),
1108 src_loc,
1109 )) {
1110 .mcv => |mcv| return .{ .mcv = switch (mcv) {
1111 .load_direct => |sym_index| .{ .lea_direct = sym_index },
1112 .load_symbol => |sym_index| .{ .lea_symbol = sym_index },
1135 .nav => |nav| {
1136 if (!ty.isFnOrHasRuntimeBitsIgnoreComptime(zcu)) {
1137 const imm: u64 = switch (@divExact(target.ptrBitWidth(), 8)) {
1138 1 => 0xaa,
1139 2 => 0xaaaa,
1140 4 => 0xaaaaaaaa,
1141 8 => 0xaaaaaaaaaaaaaaaa,
11131142 else => unreachable,
1114 } },
1115 .fail => |em| return .{ .fail = em },
1143 };
1144 return .{ .immediate = imm };
11161145 }
1146
1147 if (ty.castPtrToFn(zcu)) |fn_ty| {
1148 if (zcu.typeToFunc(fn_ty).?.is_generic) {
1149 return .{ .immediate = fn_ty.abiAlignment(zcu).toByteUnits().? };
1150 }
1151 } else if (ty.zigTypeTag(zcu) == .pointer) {
1152 const elem_ty = ty.elemType2(zcu);
1153 if (!elem_ty.hasRuntimeBits(zcu)) {
1154 return .{ .immediate = elem_ty.abiAlignment(zcu).toByteUnits().? };
1155 }
1156 }
1157
1158 return .{ .lea_nav = nav };
1159 },
1160 .uav => |uav| if (Value.fromInterned(uav.val).typeOf(zcu).hasRuntimeBits(zcu))
1161 return .{ .lea_uav = uav }
11171162 else
1118 return .{ .mcv = .{ .immediate = Type.fromInterned(uav.orig_ty).ptrAlignment(zcu)
1119 .forward(@intCast((@as(u66, 1) << @intCast(target.ptrBitWidth() | 1)) / 3)) } },
1163 return .{ .immediate = Type.fromInterned(uav.orig_ty).ptrAlignment(zcu)
1164 .forward(@intCast((@as(u66, 1) << @intCast(target.ptrBitWidth() | 1)) / 3)) },
11201165 else => {},
11211166 },
11221167 else => {},
......@@ -1130,39 +1175,35 @@ pub fn genTypedValue(
11301175 .signed => @bitCast(val.toSignedInt(zcu)),
11311176 .unsigned => val.toUnsignedInt(zcu),
11321177 };
1133 return .{ .mcv = .{ .immediate = unsigned } };
1178 return .{ .immediate = unsigned };
11341179 }
11351180 },
11361181 .bool => {
1137 return .{ .mcv = .{ .immediate = @intFromBool(val.toBool()) } };
1182 return .{ .immediate = @intFromBool(val.toBool()) };
11381183 },
11391184 .optional => {
11401185 if (ty.isPtrLikeOptional(zcu)) {
1141 return genTypedValue(
1142 lf,
1186 return lowerValue(
11431187 pt,
1144 src_loc,
1145 val.optionalValue(zcu) orelse return .{ .mcv = .{ .immediate = 0 } },
1188 val.optionalValue(zcu) orelse return .{ .immediate = 0 },
11461189 target,
11471190 );
11481191 } else if (ty.abiSize(zcu) == 1) {
1149 return .{ .mcv = .{ .immediate = @intFromBool(!val.isNull(zcu)) } };
1192 return .{ .immediate = @intFromBool(!val.isNull(zcu)) };
11501193 }
11511194 },
11521195 .@"enum" => {
11531196 const enum_tag = ip.indexToKey(val.toIntern()).enum_tag;
1154 return genTypedValue(
1155 lf,
1197 return lowerValue(
11561198 pt,
1157 src_loc,
11581199 Value.fromInterned(enum_tag.int),
11591200 target,
11601201 );
11611202 },
11621203 .error_set => {
11631204 const err_name = ip.indexToKey(val.toIntern()).err.name;
1164 const error_index = try pt.getErrorValue(err_name);
1165 return .{ .mcv = .{ .immediate = error_index } };
1205 const error_index = ip.getErrorValueIfExists(err_name).?;
1206 return .{ .immediate = error_index };
11661207 },
11671208 .error_union => {
11681209 const err_type = ty.errorUnionSet(zcu);
......@@ -1171,20 +1212,16 @@ pub fn genTypedValue(
11711212 // We use the error type directly as the type.
11721213 const err_int_ty = try pt.errorIntType();
11731214 switch (ip.indexToKey(val.toIntern()).error_union.val) {
1174 .err_name => |err_name| return genTypedValue(
1175 lf,
1215 .err_name => |err_name| return lowerValue(
11761216 pt,
1177 src_loc,
11781217 Value.fromInterned(try pt.intern(.{ .err = .{
11791218 .ty = err_type.toIntern(),
11801219 .name = err_name,
11811220 } })),
11821221 target,
11831222 ),
1184 .payload => return genTypedValue(
1185 lf,
1223 .payload => return lowerValue(
11861224 pt,
1187 src_loc,
11881225 try pt.intValue(err_int_ty, 0),
11891226 target,
11901227 ),
......@@ -1204,7 +1241,10 @@ pub fn genTypedValue(
12041241 else => {},
12051242 }
12061243
1207 return lf.lowerUav(pt, val.toIntern(), .none, src_loc);
1244 return .{ .load_uav = .{
1245 .val = val.toIntern(),
1246 .orig_ty = (try pt.singleConstPtrType(ty)).toIntern(),
1247 } };
12081248}
12091249
12101250pub fn errUnionPayloadOffset(payload_ty: Type, zcu: *Zcu) u64 {
src/link/Dwarf.zig+58-14
......@@ -1478,16 +1478,16 @@ pub const WipNav = struct {
14781478 pub fn genLocalVarDebugInfo(
14791479 wip_nav: *WipNav,
14801480 tag: LocalVarTag,
1481 name: []const u8,
1481 opt_name: ?[]const u8,
14821482 ty: Type,
14831483 loc: Loc,
14841484 ) UpdateError!void {
14851485 assert(wip_nav.func != .none);
14861486 try wip_nav.abbrevCode(switch (tag) {
1487 .arg => .arg,
1488 .local_var => .local_var,
1487 .arg => if (opt_name) |_| .arg else .unnamed_arg,
1488 .local_var => if (opt_name) |_| .local_var else unreachable,
14891489 });
1490 try wip_nav.strp(name);
1490 if (opt_name) |name| try wip_nav.strp(name);
14911491 try wip_nav.refType(ty);
14921492 try wip_nav.infoExprLoc(loc);
14931493 wip_nav.any_children = true;
......@@ -1498,7 +1498,7 @@ pub const WipNav = struct {
14981498 wip_nav: *WipNav,
14991499 src_loc: Zcu.LazySrcLoc,
15001500 tag: LocalConstTag,
1501 name: []const u8,
1501 opt_name: ?[]const u8,
15021502 val: Value,
15031503 ) UpdateError!void {
15041504 assert(wip_nav.func != .none);
......@@ -1508,19 +1508,19 @@ pub const WipNav = struct {
15081508 const has_runtime_bits = ty.hasRuntimeBits(zcu);
15091509 const has_comptime_state = ty.comptimeOnly(zcu) and try ty.onePossibleValue(pt) == null;
15101510 try wip_nav.abbrevCode(if (has_runtime_bits and has_comptime_state) switch (tag) {
1511 .comptime_arg => .comptime_arg_runtime_bits_comptime_state,
1512 .local_const => .local_const_runtime_bits_comptime_state,
1511 .comptime_arg => if (opt_name) |_| .comptime_arg_runtime_bits_comptime_state else .unnamed_comptime_arg_runtime_bits_comptime_state,
1512 .local_const => if (opt_name) |_| .local_const_runtime_bits_comptime_state else unreachable,
15131513 } else if (has_comptime_state) switch (tag) {
1514 .comptime_arg => .comptime_arg_comptime_state,
1515 .local_const => .local_const_comptime_state,
1514 .comptime_arg => if (opt_name) |_| .comptime_arg_comptime_state else .unnamed_comptime_arg_comptime_state,
1515 .local_const => if (opt_name) |_| .local_const_comptime_state else unreachable,
15161516 } else if (has_runtime_bits) switch (tag) {
1517 .comptime_arg => .comptime_arg_runtime_bits,
1518 .local_const => .local_const_runtime_bits,
1517 .comptime_arg => if (opt_name) |_| .comptime_arg_runtime_bits else .unnamed_comptime_arg_runtime_bits,
1518 .local_const => if (opt_name) |_| .local_const_runtime_bits else unreachable,
15191519 } else switch (tag) {
1520 .comptime_arg => .comptime_arg,
1521 .local_const => .local_const,
1520 .comptime_arg => if (opt_name) |_| .comptime_arg else .unnamed_comptime_arg,
1521 .local_const => if (opt_name) |_| .local_const else unreachable,
15221522 });
1523 try wip_nav.strp(name);
1523 if (opt_name) |name| try wip_nav.strp(name);
15241524 try wip_nav.refType(ty);
15251525 if (has_runtime_bits) try wip_nav.blockValue(src_loc, val);
15261526 if (has_comptime_state) try wip_nav.refValue(val);
......@@ -4945,10 +4945,15 @@ const AbbrevCode = enum {
49454945 empty_inlined_func,
49464946 inlined_func,
49474947 arg,
4948 unnamed_arg,
49484949 comptime_arg,
4950 unnamed_comptime_arg,
49494951 comptime_arg_runtime_bits,
4952 unnamed_comptime_arg_runtime_bits,
49504953 comptime_arg_comptime_state,
4954 unnamed_comptime_arg_comptime_state,
49514955 comptime_arg_runtime_bits_comptime_state,
4956 unnamed_comptime_arg_runtime_bits_comptime_state,
49524957 local_var,
49534958 local_const,
49544959 local_const_runtime_bits,
......@@ -5734,6 +5739,13 @@ const AbbrevCode = enum {
57345739 .{ .location, .exprloc },
57355740 },
57365741 },
5742 .unnamed_arg = .{
5743 .tag = .formal_parameter,
5744 .attrs = &.{
5745 .{ .type, .ref_addr },
5746 .{ .location, .exprloc },
5747 },
5748 },
57375749 .comptime_arg = .{
57385750 .tag = .formal_parameter,
57395751 .attrs = &.{
......@@ -5742,6 +5754,13 @@ const AbbrevCode = enum {
57425754 .{ .type, .ref_addr },
57435755 },
57445756 },
5757 .unnamed_comptime_arg = .{
5758 .tag = .formal_parameter,
5759 .attrs = &.{
5760 .{ .const_expr, .flag_present },
5761 .{ .type, .ref_addr },
5762 },
5763 },
57455764 .comptime_arg_runtime_bits = .{
57465765 .tag = .formal_parameter,
57475766 .attrs = &.{
......@@ -5751,6 +5770,14 @@ const AbbrevCode = enum {
57515770 .{ .const_value, .block },
57525771 },
57535772 },
5773 .unnamed_comptime_arg_runtime_bits = .{
5774 .tag = .formal_parameter,
5775 .attrs = &.{
5776 .{ .const_expr, .flag_present },
5777 .{ .type, .ref_addr },
5778 .{ .const_value, .block },
5779 },
5780 },
57545781 .comptime_arg_comptime_state = .{
57555782 .tag = .formal_parameter,
57565783 .attrs = &.{
......@@ -5760,6 +5787,14 @@ const AbbrevCode = enum {
57605787 .{ .ZIG_comptime_value, .ref_addr },
57615788 },
57625789 },
5790 .unnamed_comptime_arg_comptime_state = .{
5791 .tag = .formal_parameter,
5792 .attrs = &.{
5793 .{ .const_expr, .flag_present },
5794 .{ .type, .ref_addr },
5795 .{ .ZIG_comptime_value, .ref_addr },
5796 },
5797 },
57635798 .comptime_arg_runtime_bits_comptime_state = .{
57645799 .tag = .formal_parameter,
57655800 .attrs = &.{
......@@ -5770,6 +5805,15 @@ const AbbrevCode = enum {
57705805 .{ .ZIG_comptime_value, .ref_addr },
57715806 },
57725807 },
5808 .unnamed_comptime_arg_runtime_bits_comptime_state = .{
5809 .tag = .formal_parameter,
5810 .attrs = &.{
5811 .{ .const_expr, .flag_present },
5812 .{ .type, .ref_addr },
5813 .{ .const_value, .block },
5814 .{ .ZIG_comptime_value, .ref_addr },
5815 },
5816 },
57735817 .local_var = .{
57745818 .tag = .variable,
57755819 .attrs = &.{
src/link/Elf/Symbol.zig-3
......@@ -462,9 +462,6 @@ pub const Flags = packed struct {
462462
463463 /// Whether the symbol is a TLS variable.
464464 is_tls: bool = false,
465
466 /// Whether the symbol is an extern pointer (as opposed to function).
467 is_extern_ptr: bool = false,
468465};
469466
470467pub const Extra = struct {
src/link/Elf/ZigObject.zig+1-5
......@@ -1542,11 +1542,7 @@ pub fn updateNav(
15421542 nav.name.toSlice(ip),
15431543 @"extern".lib_name.toSlice(ip),
15441544 );
1545 if (!ip.isFunctionType(@"extern".ty)) {
1546 const sym = self.symbol(sym_index);
1547 sym.flags.is_extern_ptr = true;
1548 if (@"extern".is_threadlocal) sym.flags.is_tls = true;
1549 }
1545 if (@"extern".is_threadlocal) self.symbol(sym_index).flags.is_tls = true;
15501546 if (self.dwarf) |*dwarf| dwarf: {
15511547 var debug_wip_nav = try dwarf.initWipNav(pt, nav_index, sym_index) orelse break :dwarf;
15521548 defer debug_wip_nav.deinit();
src/link/MachO/Symbol.zig-3
......@@ -389,9 +389,6 @@ pub const Flags = packed struct {
389389 /// ZigObject specific flags
390390 /// Whether the symbol has a trampoline
391391 trampoline: bool = false,
392
393 /// Whether the symbol is an extern pointer (as opposed to function).
394 is_extern_ptr: bool = false,
395392};
396393
397394pub const SectionFlags = packed struct(u8) {
src/link/MachO/ZigObject.zig+1-5
......@@ -881,11 +881,7 @@ pub fn updateNav(
881881 const name = @"extern".name.toSlice(ip);
882882 const lib_name = @"extern".lib_name.toSlice(ip);
883883 const sym_index = try self.getGlobalSymbol(macho_file, name, lib_name);
884 if (!ip.isFunctionType(@"extern".ty)) {
885 const sym = &self.symbols.items[sym_index];
886 sym.flags.is_extern_ptr = true;
887 if (@"extern".is_threadlocal) sym.flags.tlv = true;
888 }
884 if (@"extern".is_threadlocal) self.symbols.items[sym_index].flags.tlv = true;
889885 if (self.dwarf) |*dwarf| dwarf: {
890886 var debug_wip_nav = try dwarf.initWipNav(pt, nav_index, sym_index) orelse break :dwarf;
891887 defer debug_wip_nav.deinit();
src/target.zig+1-1
......@@ -850,7 +850,7 @@ pub inline fn backendSupportsFeature(backend: std.builtin.CompilerBackend, compt
850850 },
851851 .separate_thread => switch (backend) {
852852 .stage2_llvm => false,
853 .stage2_c, .stage2_wasm => true,
853 .stage2_c, .stage2_wasm, .stage2_x86_64 => true,
854854 // TODO: most self-hosted backends should be able to support this without too much work.
855855 else => false,
856856 },