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 {...@@ -212,8 +212,8 @@ pub fn DebugAllocator(comptime config: Config) type {
212 DummyMutex{};212 DummyMutex{};
213213
214 const DummyMutex = struct {214 const DummyMutex = struct {
215 inline fn lock(_: *DummyMutex) void {}215 inline fn lock(_: DummyMutex) void {}
216 inline fn unlock(_: *DummyMutex) void {}216 inline fn unlock(_: DummyMutex) void {}
217 };217 };
218218
219 const stack_n = config.stack_trace_frames;219 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 {...@@ -3603,9 +3603,7 @@ fn airRuntimeNavPtr(func: *Func, inst: Air.Inst.Index) !void {
3603 const tlv_sym_index = if (func.bin_file.cast(.elf)) |elf_file| sym: {3603 const tlv_sym_index = if (func.bin_file.cast(.elf)) |elf_file| sym: {
3604 const zo = elf_file.zigObjectPtr().?;3604 const zo = elf_file.zigObjectPtr().?;
3605 if (nav.getExtern(ip)) |e| {3605 if (nav.getExtern(ip)) |e| {
3606 const sym = try elf_file.getGlobalSymbol(nav.name.toSlice(ip), e.lib_name.toSlice(ip));3606 break :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;
3609 }3607 }
3610 break :sym try zo.getOrCreateMetadataForNav(zcu, ty_nav.nav);3608 break :sym try zo.getOrCreateMetadataForNav(zcu, ty_nav.nav);
3611 } else return func.fail("TODO runtime_nav_ptr on {}", .{func.bin_file.tag});3609 } 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 {...@@ -50,8 +50,8 @@ pub fn emitMir(emit: *Emit) Error!void {
50 const atom_ptr = zo.symbol(symbol.atom_index).atom(elf_file).?;50 const atom_ptr = zo.symbol(symbol.atom_index).atom(elf_file).?;
51 const sym = zo.symbol(symbol.sym_index);51 const sym = zo.symbol(symbol.sym_index);
5252
53 if (sym.flags.is_extern_ptr and emit.lower.pic) {53 if (emit.lower.pic) {
54 return emit.fail("emit GOT relocation for symbol '{s}'", .{sym.name(elf_file)});54 return emit.fail("know when to emit GOT relocation for symbol '{s}'", .{sym.name(elf_file)});
55 }55 }
5656
57 const hi_r_type: u32 = @intFromEnum(std.elf.R_RISCV.HI20);57 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,...@@ -124,9 +124,11 @@ gpa: Allocator,
124pt: Zcu.PerThread,124pt: Zcu.PerThread,
125air: Air,125air: Air,
126liveness: Air.Liveness,126liveness: Air.Liveness,
127bin_file: *link.File,
128target: *const std.Target,127target: *const std.Target,
129owner: Owner,128owner: union(enum) {
129 nav_index: InternPool.Nav.Index,
130 lazy_sym: link.File.LazySymbol,
131},
130inline_func: InternPool.Index,132inline_func: InternPool.Index,
131mod: *Module,133mod: *Module,
132args: []MCValue,134args: []MCValue,
...@@ -150,8 +152,14 @@ eflags_inst: ?Air.Inst.Index = null,...@@ -150,8 +152,14 @@ eflags_inst: ?Air.Inst.Index = null,
150mir_instructions: std.MultiArrayList(Mir.Inst) = .empty,152mir_instructions: std.MultiArrayList(Mir.Inst) = .empty,
151/// MIR extra data153/// MIR extra data
152mir_extra: std.ArrayListUnmanaged(u32) = .empty,154mir_extra: std.ArrayListUnmanaged(u32) = .empty,
153mir_local_name_bytes: std.ArrayListUnmanaged(u8) = .empty,155mir_string_bytes: std.ArrayListUnmanaged(u8) = .empty,
154mir_local_types: std.ArrayListUnmanaged(InternPool.Index) = .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,
155mir_table: std.ArrayListUnmanaged(Mir.Inst.Index) = .empty,163mir_table: std.ArrayListUnmanaged(Mir.Inst.Index) = .empty,
156164
157/// The value is an offset into the `Function` `code` from the beginning.165/// The value is an offset into the `Function` `code` from the beginning.
...@@ -194,41 +202,6 @@ loop_switches: std.AutoHashMapUnmanaged(Air.Inst.Index, struct {...@@ -194,41 +202,6 @@ loop_switches: std.AutoHashMapUnmanaged(Air.Inst.Index, struct {
194next_temp_index: Temp.Index = @enumFromInt(0),202next_temp_index: Temp.Index = @enumFromInt(0),
195temp_type: [Temp.Index.max]Type = undefined,203temp_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
232const MaskInfo = packed struct {205const MaskInfo = packed struct {
233 kind: enum(u1) { sign, all },206 kind: enum(u1) { sign, all },
234 inverted: bool = false,207 inverted: bool = false,
...@@ -269,37 +242,22 @@ pub const MCValue = union(enum) {...@@ -269,37 +242,22 @@ pub const MCValue = union(enum) {
269 /// The value is in memory at a hard-coded address.242 /// The value is in memory at a hard-coded address.
270 /// If the type is a pointer, it means the pointer address is stored at this memory location.243 /// If the type is a pointer, it means the pointer address is stored at this memory location.
271 memory: u64,244 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,
283 /// The value is in memory at a constant offset from the address in a register.245 /// The value is in memory at a constant offset from the address in a register.
284 indirect: bits.RegisterOffset,246 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,
297 /// The value stored at an offset from a frame index247 /// The value stored at an offset from a frame index
298 /// Payload is a frame address.248 /// Payload is a frame address.
299 load_frame: bits.FrameAddr,249 load_frame: bits.FrameAddr,
300 /// The address of an offset from a frame index250 /// The address of an offset from a frame index
301 /// Payload is a frame address.251 /// Payload is a frame address.
302 lea_frame: bits.FrameAddr,252 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,
303 /// Supports integer_per_element abi261 /// Supports integer_per_element abi
304 elementwise_args: packed struct { regs: u3, frame_off: i29, frame_index: FrameIndex },262 elementwise_args: packed struct { regs: u3, frame_off: i29, frame_index: FrameIndex },
305 /// This indicates that we have already allocated a frame index for this instruction,263 /// This indicates that we have already allocated a frame index for this instruction,
...@@ -319,11 +277,14 @@ pub const MCValue = union(enum) {...@@ -319,11 +277,14 @@ pub const MCValue = union(enum) {
319 .register_mask,277 .register_mask,
320 .eflags,278 .eflags,
321 .register_overflow,279 .register_overflow,
322 .lea_symbol,
323 .lea_pcrel,
324 .lea_direct,
325 .lea_got,
326 .lea_frame,280 .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,
327 .elementwise_args,288 .elementwise_args,
328 .reserved_frame,289 .reserved_frame,
329 .air_ref,290 .air_ref,
...@@ -333,11 +294,8 @@ pub const MCValue = union(enum) {...@@ -333,11 +294,8 @@ pub const MCValue = union(enum) {
333 .register_triple,294 .register_triple,
334 .register_quadruple,295 .register_quadruple,
335 .memory,296 .memory,
336 .load_symbol,
337 .load_pcrel,
338 .load_got,
339 .load_direct,
340 .indirect,297 .indirect,
298 .load_nav,
341 => true,299 => true,
342 .load_frame => |frame_addr| !frame_addr.index.isNamed(),300 .load_frame => |frame_addr| !frame_addr.index.isNamed(),
343 };301 };
...@@ -353,7 +311,14 @@ pub const MCValue = union(enum) {...@@ -353,7 +311,14 @@ pub const MCValue = union(enum) {
353311
354 fn isMemory(mcv: MCValue) bool {312 fn isMemory(mcv: MCValue) bool {
355 return switch (mcv) {313 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,
357 else => false,322 else => false,
358 };323 };
359 }324 }
...@@ -423,7 +388,7 @@ pub const MCValue = union(enum) {...@@ -423,7 +388,7 @@ pub const MCValue = union(enum) {
423388
424 fn address(mcv: MCValue) MCValue {389 fn address(mcv: MCValue) MCValue {
425 return switch (mcv) {390 return switch (mcv) {
426 .none,391 .none => .none,
427 .unreach,392 .unreach,
428 .dead,393 .dead,
429 .undef,394 .undef,
...@@ -436,11 +401,11 @@ pub const MCValue = union(enum) {...@@ -436,11 +401,11 @@ pub const MCValue = union(enum) {
436 .register_offset,401 .register_offset,
437 .register_overflow,402 .register_overflow,
438 .register_mask,403 .register_mask,
439 .lea_symbol,
440 .lea_pcrel,
441 .lea_direct,
442 .lea_got,
443 .lea_frame,404 .lea_frame,
405 .lea_nav,
406 .lea_uav,
407 .lea_lazy_sym,
408 .lea_extern_func,
444 .elementwise_args,409 .elementwise_args,
445 .reserved_frame,410 .reserved_frame,
446 .air_ref,411 .air_ref,
...@@ -450,17 +415,17 @@ pub const MCValue = union(enum) {...@@ -450,17 +415,17 @@ pub const MCValue = union(enum) {
450 0 => .{ .register = reg_off.reg },415 0 => .{ .register = reg_off.reg },
451 else => .{ .register_offset = reg_off },416 else => .{ .register_offset = reg_off },
452 },417 },
453 .load_direct => |sym_index| .{ .lea_direct = sym_index },
454 .load_got => |sym_index| .{ .lea_got = sym_index },
455 .load_frame => |frame_addr| .{ .lea_frame = frame_addr },418 .load_frame => |frame_addr| .{ .lea_frame = frame_addr },
456 .load_symbol => |sym_off| .{ .lea_symbol = sym_off },419 .load_nav => |nav| .{ .lea_nav = nav },
457 .load_pcrel => |sym_off| .{ .lea_pcrel = sym_off },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 },
458 };423 };
459 }424 }
460425
461 fn deref(mcv: MCValue) MCValue {426 fn deref(mcv: MCValue) MCValue {
462 return switch (mcv) {427 return switch (mcv) {
463 .none,428 .none => .none,
464 .unreach,429 .unreach,
465 .dead,430 .dead,
466 .undef,431 .undef,
...@@ -472,11 +437,11 @@ pub const MCValue = union(enum) {...@@ -472,11 +437,11 @@ pub const MCValue = union(enum) {
472 .register_mask,437 .register_mask,
473 .memory,438 .memory,
474 .indirect,439 .indirect,
475 .load_direct,
476 .load_got,
477 .load_frame,440 .load_frame,
478 .load_symbol,441 .load_nav,
479 .load_pcrel,442 .load_uav,
443 .load_lazy_sym,
444 .load_extern_func,
480 .elementwise_args,445 .elementwise_args,
481 .reserved_frame,446 .reserved_frame,
482 .air_ref,447 .air_ref,
...@@ -484,17 +449,17 @@ pub const MCValue = union(enum) {...@@ -484,17 +449,17 @@ pub const MCValue = union(enum) {
484 .immediate => |addr| .{ .memory = addr },449 .immediate => |addr| .{ .memory = addr },
485 .register => |reg| .{ .indirect = .{ .reg = reg } },450 .register => |reg| .{ .indirect = .{ .reg = reg } },
486 .register_offset => |reg_off| .{ .indirect = reg_off },451 .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 },
489 .lea_frame => |frame_addr| .{ .load_frame = frame_addr },452 .lea_frame => |frame_addr| .{ .load_frame = frame_addr },
490 .lea_symbol => |sym_index| .{ .load_symbol = sym_index },453 .lea_nav => |nav| .{ .load_nav = nav },
491 .lea_pcrel => |sym_index| .{ .load_pcrel = sym_index },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 },
492 };457 };
493 }458 }
494459
495 fn offset(mcv: MCValue, off: i32) MCValue {460 fn offset(mcv: MCValue, off: i32) MCValue {
496 return switch (mcv) {461 return switch (mcv) {
497 .none,462 .none => .none,
498 .unreach,463 .unreach,
499 .dead,464 .dead,
500 .undef,465 .undef,
...@@ -510,15 +475,15 @@ pub const MCValue = union(enum) {...@@ -510,15 +475,15 @@ pub const MCValue = union(enum) {
510 .register_mask,475 .register_mask,
511 .memory,476 .memory,
512 .indirect,477 .indirect,
513 .load_direct,
514 .lea_direct,
515 .load_got,
516 .lea_got,
517 .load_frame,478 .load_frame,
518 .load_symbol,479 .load_nav,
519 .lea_symbol,480 .lea_nav,
520 .load_pcrel,481 .load_uav,
521 .lea_pcrel,482 .lea_uav,
483 .load_lazy_sym,
484 .lea_lazy_sym,
485 .load_extern_func,
486 .lea_extern_func,
522 => switch (off) {487 => switch (off) {
523 0 => mcv,488 0 => mcv,
524 else => unreachable, // not offsettable489 else => unreachable, // not offsettable
...@@ -536,7 +501,7 @@ pub const MCValue = union(enum) {...@@ -536,7 +501,7 @@ pub const MCValue = union(enum) {
536501
537 fn mem(mcv: MCValue, function: *CodeGen, mod_rm: Memory.Mod.Rm) !Memory {502 fn mem(mcv: MCValue, function: *CodeGen, mod_rm: Memory.Mod.Rm) !Memory {
538 return switch (mcv) {503 return switch (mcv) {
539 .none,504 .none => .{ .mod = .{ .rm = mod_rm } },
540 .unreach,505 .unreach,
541 .dead,506 .dead,
542 .undef,507 .undef,
...@@ -549,15 +514,13 @@ pub const MCValue = union(enum) {...@@ -549,15 +514,13 @@ pub const MCValue = union(enum) {
549 .register_offset,514 .register_offset,
550 .register_overflow,515 .register_overflow,
551 .register_mask,516 .register_mask,
552 .load_direct,
553 .lea_direct,
554 .load_got,
555 .lea_got,
556 .lea_frame,517 .lea_frame,
557 .elementwise_args,518 .elementwise_args,
558 .reserved_frame,519 .reserved_frame,
559 .lea_symbol,520 .lea_nav,
560 .lea_pcrel,521 .lea_uav,
522 .lea_lazy_sym,
523 .lea_extern_func,
561 => unreachable,524 => unreachable,
562 .memory => |addr| if (std.math.cast(i32, @as(i64, @bitCast(addr)))) |small_addr| .{525 .memory => |addr| if (std.math.cast(i32, @as(i64, @bitCast(addr)))) |small_addr| .{
563 .base = .{ .reg = .ds },526 .base = .{ .reg = .ds },
...@@ -586,30 +549,10 @@ pub const MCValue = union(enum) {...@@ -586,30 +549,10 @@ pub const MCValue = union(enum) {
586 .disp = frame_addr.off + mod_rm.disp,549 .disp = frame_addr.off + mod_rm.disp,
587 } },550 } },
588 },551 },
589 .load_symbol => |sym_off| {552 .load_nav => |nav| .{ .base = .{ .nav = nav }, .mod = .{ .rm = mod_rm } },
590 assert(sym_off.off == 0);553 .load_uav => |uav| .{ .base = .{ .uav = uav }, .mod = .{ .rm = mod_rm } },
591 return .{554 .load_lazy_sym => |lazy_sym| .{ .base = .{ .lazy_sym = lazy_sym }, .mod = .{ .rm = mod_rm } },
592 .base = .{ .reloc = sym_off.sym_index },555 .load_extern_func => |extern_func| .{ .base = .{ .extern_func = extern_func }, .mod = .{ .rm = mod_rm } },
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 },
613 .air_ref => |ref| (try function.resolveInst(ref)).mem(function, mod_rm),556 .air_ref => |ref| (try function.resolveInst(ref)).mem(function, mod_rm),
614 };557 };
615 }558 }
...@@ -643,20 +586,20 @@ pub const MCValue = union(enum) {...@@ -643,20 +586,20 @@ pub const MCValue = union(enum) {
643 @as(u8, if (pl.info.inverted) '!' else ' '),586 @as(u8, if (pl.info.inverted) '!' else ' '),
644 @tagName(pl.reg),587 @tagName(pl.reg),
645 }),588 }),
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 }),
650 .indirect => |pl| try writer.print("[{s} + 0x{x}]", .{ @tagName(pl.reg), pl.off }),589 .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}),
655 .load_frame => |pl| try writer.print("[{} + 0x{x}]", .{ pl.index, pl.off }),590 .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)}),
656 .elementwise_args => |pl| try writer.print("elementwise:{d}:[{} + 0x{x}]", .{600 .elementwise_args => |pl| try writer.print("elementwise:{d}:[{} + 0x{x}]", .{
657 pl.regs, pl.frame_index, pl.frame_off,601 pl.regs, pl.frame_index, pl.frame_off,
658 }),602 }),
659 .lea_frame => |pl| try writer.print("{} + 0x{x}", .{ pl.index, pl.off }),
660 .reserved_frame => |pl| try writer.print("(dead:{})", .{pl}),603 .reserved_frame => |pl| try writer.print("(dead:{})", .{pl}),
661 .air_ref => |pl| try writer.print("(air:0x{x})", .{@intFromEnum(pl)}),604 .air_ref => |pl| try writer.print("(air:0x{x})", .{@intFromEnum(pl)}),
662 }605 }
...@@ -676,16 +619,16 @@ const InstTracking = struct {...@@ -676,16 +619,16 @@ const InstTracking = struct {
676 .undef,619 .undef,
677 .immediate,620 .immediate,
678 .memory,621 .memory,
679 .load_direct,
680 .lea_direct,
681 .load_got,
682 .lea_got,
683 .load_frame,622 .load_frame,
684 .lea_frame,623 .lea_frame,
685 .load_symbol,624 .load_nav,
686 .lea_symbol,625 .lea_nav,
687 .load_pcrel,626 .load_uav,
688 .lea_pcrel,627 .lea_uav,
628 .load_lazy_sym,
629 .lea_lazy_sym,
630 .load_extern_func,
631 .lea_extern_func,
689 => result,632 => result,
690 .dead,633 .dead,
691 .elementwise_args,634 .elementwise_args,
...@@ -779,15 +722,15 @@ const InstTracking = struct {...@@ -779,15 +722,15 @@ const InstTracking = struct {
779 .undef,722 .undef,
780 .immediate,723 .immediate,
781 .memory,724 .memory,
782 .load_direct,
783 .lea_direct,
784 .load_got,
785 .lea_got,
786 .lea_frame,725 .lea_frame,
787 .load_symbol,726 .load_nav,
788 .lea_symbol,727 .lea_nav,
789 .load_pcrel,728 .load_uav,
790 .lea_pcrel,729 .lea_uav,
730 .load_lazy_sym,
731 .lea_lazy_sym,
732 .load_extern_func,
733 .lea_extern_func,
791 => assert(std.meta.eql(self.long, target.long)),734 => assert(std.meta.eql(self.long, target.long)),
792 .dead,735 .dead,
793 .eflags,736 .eflags,
...@@ -975,6 +918,7 @@ pub fn generate(...@@ -975,6 +918,7 @@ pub fn generate(
975 air: *const Air,918 air: *const Air,
976 liveness: *const Air.Liveness,919 liveness: *const Air.Liveness,
977) codegen.CodeGenError!Mir {920) codegen.CodeGenError!Mir {
921 _ = bin_file;
978 const zcu = pt.zcu;922 const zcu = pt.zcu;
979 const gpa = zcu.gpa;923 const gpa = zcu.gpa;
980 const ip = &zcu.intern_pool;924 const ip = &zcu.intern_pool;
...@@ -991,7 +935,6 @@ pub fn generate(...@@ -991,7 +935,6 @@ pub fn generate(
991 .liveness = liveness.*,935 .liveness = liveness.*,
992 .target = &mod.resolved_target.result,936 .target = &mod.resolved_target.result,
993 .mod = mod,937 .mod = mod,
994 .bin_file = bin_file,
995 .owner = .{ .nav_index = func.owner_nav },938 .owner = .{ .nav_index = func.owner_nav },
996 .inline_func = func_index,939 .inline_func = func_index,
997 .args = undefined, // populated after `resolveCallingConventionValues`940 .args = undefined, // populated after `resolveCallingConventionValues`
...@@ -1013,8 +956,9 @@ pub fn generate(...@@ -1013,8 +956,9 @@ pub fn generate(
1013 function.inst_tracking.deinit(gpa);956 function.inst_tracking.deinit(gpa);
1014 function.epilogue_relocs.deinit(gpa);957 function.epilogue_relocs.deinit(gpa);
1015 function.mir_instructions.deinit(gpa);958 function.mir_instructions.deinit(gpa);
1016 function.mir_local_name_bytes.deinit(gpa);959 function.mir_string_bytes.deinit(gpa);
1017 function.mir_local_types.deinit(gpa);960 function.mir_strings.deinit(gpa);
961 function.mir_locals.deinit(gpa);
1018 function.mir_extra.deinit(gpa);962 function.mir_extra.deinit(gpa);
1019 function.mir_table.deinit(gpa);963 function.mir_table.deinit(gpa);
1020 }964 }
...@@ -1101,27 +1045,27 @@ pub fn generate(...@@ -1101,27 +1045,27 @@ pub fn generate(
1101 var mir: Mir = .{1045 var mir: Mir = .{
1102 .instructions = .empty,1046 .instructions = .empty,
1103 .extra = &.{},1047 .extra = &.{},
1104 .local_name_bytes = &.{},1048 .string_bytes = &.{},
1105 .local_types = &.{},1049 .locals = &.{},
1106 .table = &.{},1050 .table = &.{},
1107 .frame_locs = .empty,1051 .frame_locs = .empty,
1108 };1052 };
1109 errdefer mir.deinit(gpa);1053 errdefer mir.deinit(gpa);
1110 mir.instructions = function.mir_instructions.toOwnedSlice();1054 mir.instructions = function.mir_instructions.toOwnedSlice();
1111 mir.extra = try function.mir_extra.toOwnedSlice(gpa);1055 mir.extra = try function.mir_extra.toOwnedSlice(gpa);
1112 mir.local_name_bytes = try function.mir_local_name_bytes.toOwnedSlice(gpa);1056 mir.string_bytes = try function.mir_string_bytes.toOwnedSlice(gpa);
1113 mir.local_types = try function.mir_local_types.toOwnedSlice(gpa);1057 mir.locals = try function.mir_locals.toOwnedSlice(gpa);
1114 mir.table = try function.mir_table.toOwnedSlice(gpa);1058 mir.table = try function.mir_table.toOwnedSlice(gpa);
1115 mir.frame_locs = function.frame_locs.toOwnedSlice();1059 mir.frame_locs = function.frame_locs.toOwnedSlice();
1116 return mir;1060 return mir;
1117}1061}
11181062
1119pub fn toTmpMir(cg: *CodeGen) Mir {1063pub fn getTmpMir(cg: *CodeGen) Mir {
1120 return .{1064 return .{
1121 .instructions = cg.mir_instructions.slice(),1065 .instructions = cg.mir_instructions.slice(),
1122 .extra = cg.mir_extra.items,1066 .extra = cg.mir_extra.items,
1123 .local_name_bytes = cg.mir_local_name_bytes.items,1067 .string_bytes = cg.mir_string_bytes.items,
1124 .local_types = cg.mir_local_types.items,1068 .locals = cg.mir_locals.items,
1125 .table = cg.mir_table.items,1069 .table = cg.mir_table.items,
1126 .frame_locs = cg.frame_locs.slice(),1070 .frame_locs = cg.frame_locs.slice(),
1127 };1071 };
...@@ -1135,10 +1079,9 @@ pub fn generateLazy(...@@ -1135,10 +1079,9 @@ pub fn generateLazy(
1135 code: *std.ArrayListUnmanaged(u8),1079 code: *std.ArrayListUnmanaged(u8),
1136 debug_output: link.File.DebugInfoOutput,1080 debug_output: link.File.DebugInfoOutput,
1137) codegen.CodeGenError!void {1081) codegen.CodeGenError!void {
1138 const comp = bin_file.comp;1082 const gpa = pt.zcu.gpa;
1139 const gpa = comp.gpa;
1140 // This function is for generating global code, so we use the root module.1083 // 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;
1142 var function: CodeGen = .{1085 var function: CodeGen = .{
1143 .gpa = gpa,1086 .gpa = gpa,
1144 .pt = pt,1087 .pt = pt,
...@@ -1146,7 +1089,6 @@ pub fn generateLazy(...@@ -1146,7 +1089,6 @@ pub fn generateLazy(
1146 .liveness = undefined,1089 .liveness = undefined,
1147 .target = &mod.resolved_target.result,1090 .target = &mod.resolved_target.result,
1148 .mod = mod,1091 .mod = mod,
1149 .bin_file = bin_file,
1150 .owner = .{ .lazy_sym = lazy_sym },1092 .owner = .{ .lazy_sym = lazy_sym },
1151 .inline_func = undefined,1093 .inline_func = undefined,
1152 .args = undefined,1094 .args = undefined,
...@@ -1159,8 +1101,9 @@ pub fn generateLazy(...@@ -1159,8 +1101,9 @@ pub fn generateLazy(
1159 defer {1101 defer {
1160 function.inst_tracking.deinit(gpa);1102 function.inst_tracking.deinit(gpa);
1161 function.mir_instructions.deinit(gpa);1103 function.mir_instructions.deinit(gpa);
1162 function.mir_local_name_bytes.deinit(gpa);1104 function.mir_string_bytes.deinit(gpa);
1163 function.mir_local_types.deinit(gpa);1105 function.mir_strings.deinit(gpa);
1106 function.mir_locals.deinit(gpa);
1164 function.mir_extra.deinit(gpa);1107 function.mir_extra.deinit(gpa);
1165 function.mir_table.deinit(gpa);1108 function.mir_table.deinit(gpa);
1166 }1109 }
...@@ -1176,33 +1119,7 @@ pub fn generateLazy(...@@ -1176,33 +1119,7 @@ pub fn generateLazy(
1176 else => |e| return e,1119 else => |e| return e,
1177 };1120 };
11781121
1179 var emit: Emit = .{1122 try function.getTmpMir().emitLazy(bin_file, pt, src_loc, lazy_sym, code, debug_output);
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 };
1206}1123}
12071124
1208const FormatNavData = struct {1125const FormatNavData = struct {
...@@ -1250,17 +1167,12 @@ fn formatWipMir(...@@ -1250,17 +1167,12 @@ fn formatWipMir(
1250 _: std.fmt.FormatOptions,1167 _: std.fmt.FormatOptions,
1251 writer: anytype,1168 writer: anytype,
1252) @TypeOf(writer).Error!void {1169) @TypeOf(writer).Error!void {
1253 const comp = data.self.bin_file.comp;
1254 var lower: Lower = .{1170 var lower: Lower = .{
1255 .bin_file = data.self.bin_file,
1256 .target = data.self.target,1171 .target = data.self.target,
1257 .allocator = data.self.gpa,1172 .allocator = data.self.gpa,
1258 .mir = data.self.toTmpMir(),1173 .mir = data.self.getTmpMir(),
1259 .cc = .auto,1174 .cc = .auto,
1260 .src_loc = data.self.src_loc,1175 .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,
1264 };1176 };
1265 var first = true;1177 var first = true;
1266 for ((lower.lowerMir(data.inst) catch |err| switch (err) {1178 for ((lower.lowerMir(data.inst) catch |err| switch (err) {
...@@ -1317,13 +1229,6 @@ fn formatWipMir(...@@ -1317,13 +1229,6 @@ fn formatWipMir(
1317 .pseudo_dbg_arg_i_64, .pseudo_dbg_var_i_64 => try writer.print(" {d}", .{1229 .pseudo_dbg_arg_i_64, .pseudo_dbg_var_i_64 => try writer.print(" {d}", .{
1318 mir_inst.data.i64,1230 mir_inst.data.i64,
1319 }),1231 }),
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 },
1327 .pseudo_dbg_arg_ro, .pseudo_dbg_var_ro => {1232 .pseudo_dbg_arg_ro, .pseudo_dbg_var_ro => {
1328 const mem_op: encoder.Instruction.Operand = .{ .mem = .initSib(.qword, .{1233 const mem_op: encoder.Instruction.Operand = .{ .mem = .initSib(.qword, .{
1329 .base = .{ .reg = mir_inst.data.ro.reg },1234 .base = .{ .reg = mir_inst.data.ro.reg },
...@@ -1399,6 +1304,22 @@ fn addExtraAssumeCapacity(self: *CodeGen, extra: anytype) u32 {...@@ -1399,6 +1304,22 @@ fn addExtraAssumeCapacity(self: *CodeGen, extra: anytype) u32 {
1399 return result;1304 return result;
1400}1305}
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
1402fn asmOps(self: *CodeGen, tag: Mir.Inst.FixedTag, ops: [4]Operand) !void {1323fn asmOps(self: *CodeGen, tag: Mir.Inst.FixedTag, ops: [4]Operand) !void {
1403 return switch (ops[0]) {1324 return switch (ops[0]) {
1404 .none => self.asmOpOnly(tag),1325 .none => self.asmOpOnly(tag),
...@@ -1714,21 +1635,36 @@ fn asmImmediate(self: *CodeGen, tag: Mir.Inst.FixedTag, imm: Immediate) !void {...@@ -1714,21 +1635,36 @@ fn asmImmediate(self: *CodeGen, tag: Mir.Inst.FixedTag, imm: Immediate) !void {
1714 .ops = switch (imm) {1635 .ops = switch (imm) {
1715 .signed => .i_s,1636 .signed => .i_s,
1716 .unsigned => .i_u,1637 .unsigned => .i_u,
1717 .reloc => .rel,1638 .nav => .nav,
1639 .uav => .uav,
1640 .lazy_sym => .lazy_sym,
1641 .extern_func => .extern_func,
1718 },1642 },
1719 .data = switch (imm) {1643 .data = switch (imm) {
1720 .reloc => |sym_off| reloc: {
1721 assert(tag[0] == ._);
1722 break :reloc .{ .reloc = sym_off };
1723 },
1724 .signed, .unsigned => .{ .i = .{1644 .signed, .unsigned => .{ .i = .{
1725 .fixes = tag[0],1645 .fixes = tag[0],
1726 .i = switch (imm) {1646 .i = switch (imm) {
1727 .signed => |s| @bitCast(s),1647 .signed => |s| @bitCast(s),
1728 .unsigned => |u| @intCast(u),1648 .unsigned => |u| @intCast(u),
1729 .reloc => unreachable,1649 .nav, .uav, .lazy_sym, .extern_func => unreachable,
1730 },1650 },
1731 } },1651 } },
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 },
1732 },1668 },
1733 });1669 });
1734}1670}
...@@ -1743,7 +1679,7 @@ fn asmImmediateRegister(self: *CodeGen, tag: Mir.Inst.FixedTag, imm: Immediate,...@@ -1743,7 +1679,7 @@ fn asmImmediateRegister(self: *CodeGen, tag: Mir.Inst.FixedTag, imm: Immediate,
1743 .i = @as(u8, switch (imm) {1679 .i = @as(u8, switch (imm) {
1744 .signed => |s| @bitCast(@as(i8, @intCast(s))),1680 .signed => |s| @bitCast(@as(i8, @intCast(s))),
1745 .unsigned => |u| @intCast(u),1681 .unsigned => |u| @intCast(u),
1746 .reloc => unreachable,1682 .nav, .uav, .lazy_sym, .extern_func => unreachable,
1747 }),1683 }),
1748 } },1684 } },
1749 });1685 });
...@@ -1758,12 +1694,12 @@ fn asmImmediateImmediate(self: *CodeGen, tag: Mir.Inst.FixedTag, imm1: Immediate...@@ -1758,12 +1694,12 @@ fn asmImmediateImmediate(self: *CodeGen, tag: Mir.Inst.FixedTag, imm1: Immediate
1758 .i1 = switch (imm1) {1694 .i1 = switch (imm1) {
1759 .signed => |s| @bitCast(@as(i16, @intCast(s))),1695 .signed => |s| @bitCast(@as(i16, @intCast(s))),
1760 .unsigned => |u| @intCast(u),1696 .unsigned => |u| @intCast(u),
1761 .reloc => unreachable,1697 .nav, .uav, .lazy_sym, .extern_func => unreachable,
1762 },1698 },
1763 .i2 = switch (imm2) {1699 .i2 = switch (imm2) {
1764 .signed => |s| @bitCast(@as(i8, @intCast(s))),1700 .signed => |s| @bitCast(@as(i8, @intCast(s))),
1765 .unsigned => |u| @intCast(u),1701 .unsigned => |u| @intCast(u),
1766 .reloc => unreachable,1702 .nav, .uav, .lazy_sym, .extern_func => unreachable,
1767 },1703 },
1768 } },1704 } },
1769 });1705 });
...@@ -1788,7 +1724,7 @@ fn asmRegisterImmediate(self: *CodeGen, tag: Mir.Inst.FixedTag, reg: Register, i...@@ -1788,7 +1724,7 @@ fn asmRegisterImmediate(self: *CodeGen, tag: Mir.Inst.FixedTag, reg: Register, i
1788 .{ .ri_u, small }1724 .{ .ri_u, small }
1789 else1725 else
1790 .{ .ri_64, try self.addExtra(Mir.Imm64.encode(imm.unsigned)) },1726 .{ .ri_64, try self.addExtra(Mir.Imm64.encode(imm.unsigned)) },
1791 .reloc => unreachable,1727 .nav, .uav, .lazy_sym, .extern_func => unreachable,
1792 };1728 };
1793 _ = try self.addInst(.{1729 _ = try self.addInst(.{
1794 .tag = tag[1],1730 .tag = tag[1],
...@@ -1860,7 +1796,7 @@ fn asmRegisterRegisterRegisterImmediate(...@@ -1860,7 +1796,7 @@ fn asmRegisterRegisterRegisterImmediate(
1860 .i = switch (imm) {1796 .i = switch (imm) {
1861 .signed => |s| @bitCast(@as(i8, @intCast(s))),1797 .signed => |s| @bitCast(@as(i8, @intCast(s))),
1862 .unsigned => |u| @intCast(u),1798 .unsigned => |u| @intCast(u),
1863 .reloc => unreachable,1799 .nav, .uav, .lazy_sym, .extern_func => unreachable,
1864 },1800 },
1865 } },1801 } },
1866 });1802 });
...@@ -1878,7 +1814,7 @@ fn asmRegisterRegisterImmediate(...@@ -1878,7 +1814,7 @@ fn asmRegisterRegisterImmediate(
1878 .ops = switch (imm) {1814 .ops = switch (imm) {
1879 .signed => .rri_s,1815 .signed => .rri_s,
1880 .unsigned => .rri_u,1816 .unsigned => .rri_u,
1881 .reloc => unreachable,1817 .nav, .uav, .lazy_sym, .extern_func => unreachable,
1882 },1818 },
1883 .data = .{ .rri = .{1819 .data = .{ .rri = .{
1884 .fixes = tag[0],1820 .fixes = tag[0],
...@@ -1887,7 +1823,7 @@ fn asmRegisterRegisterImmediate(...@@ -1887,7 +1823,7 @@ fn asmRegisterRegisterImmediate(
1887 .i = switch (imm) {1823 .i = switch (imm) {
1888 .signed => |s| @bitCast(s),1824 .signed => |s| @bitCast(s),
1889 .unsigned => |u| @intCast(u),1825 .unsigned => |u| @intCast(u),
1890 .reloc => unreachable,1826 .nav, .uav, .lazy_sym, .extern_func => unreachable,
1891 },1827 },
1892 } },1828 } },
1893 });1829 });
...@@ -1985,7 +1921,7 @@ fn asmRegisterMemoryImmediate(...@@ -1985,7 +1921,7 @@ fn asmRegisterMemoryImmediate(
1985 if (switch (imm) {1921 if (switch (imm) {
1986 .signed => |s| if (std.math.cast(i16, s)) |x| @as(u16, @bitCast(x)) else null,1922 .signed => |s| if (std.math.cast(i16, s)) |x| @as(u16, @bitCast(x)) else null,
1987 .unsigned => |u| std.math.cast(u16, u),1923 .unsigned => |u| std.math.cast(u16, u),
1988 .reloc => unreachable,1924 .nav, .uav, .lazy_sym, .extern_func => unreachable,
1989 }) |small_imm| {1925 }) |small_imm| {
1990 _ = try self.addInst(.{1926 _ = try self.addInst(.{
1991 .tag = tag[1],1927 .tag = tag[1],
...@@ -2001,7 +1937,7 @@ fn asmRegisterMemoryImmediate(...@@ -2001,7 +1937,7 @@ fn asmRegisterMemoryImmediate(
2001 const payload = try self.addExtra(Mir.Imm32{ .imm = switch (imm) {1937 const payload = try self.addExtra(Mir.Imm32{ .imm = switch (imm) {
2002 .signed => |s| @bitCast(s),1938 .signed => |s| @bitCast(s),
2003 .unsigned => |u| @as(u32, @intCast(u)),1939 .unsigned => |u| @as(u32, @intCast(u)),
2004 .reloc => unreachable,1940 .nav, .uav, .lazy_sym, .extern_func => unreachable,
2005 } });1941 } });
2006 assert(payload + 1 == try self.addExtra(Mir.Memory.encode(m)));1942 assert(payload + 1 == try self.addExtra(Mir.Memory.encode(m)));
2007 _ = try self.addInst(.{1943 _ = try self.addInst(.{
...@@ -2009,7 +1945,7 @@ fn asmRegisterMemoryImmediate(...@@ -2009,7 +1945,7 @@ fn asmRegisterMemoryImmediate(
2009 .ops = switch (imm) {1945 .ops = switch (imm) {
2010 .signed => .rmi_s,1946 .signed => .rmi_s,
2011 .unsigned => .rmi_u,1947 .unsigned => .rmi_u,
2012 .reloc => unreachable,1948 .nav, .uav, .lazy_sym, .extern_func => unreachable,
2013 },1949 },
2014 .data = .{ .rx = .{1950 .data = .{ .rx = .{
2015 .fixes = tag[0],1951 .fixes = tag[0],
...@@ -2057,7 +1993,7 @@ fn asmMemoryImmediate(self: *CodeGen, tag: Mir.Inst.FixedTag, m: Memory, imm: Im...@@ -2057,7 +1993,7 @@ fn asmMemoryImmediate(self: *CodeGen, tag: Mir.Inst.FixedTag, m: Memory, imm: Im
2057 const payload = try self.addExtra(Mir.Imm32{ .imm = switch (imm) {1993 const payload = try self.addExtra(Mir.Imm32{ .imm = switch (imm) {
2058 .signed => |s| @bitCast(s),1994 .signed => |s| @bitCast(s),
2059 .unsigned => |u| @intCast(u),1995 .unsigned => |u| @intCast(u),
2060 .reloc => unreachable,1996 .nav, .uav, .lazy_sym, .extern_func => unreachable,
2061 } });1997 } });
2062 assert(payload + 1 == try self.addExtra(Mir.Memory.encode(m)));1998 assert(payload + 1 == try self.addExtra(Mir.Memory.encode(m)));
2063 _ = try self.addInst(.{1999 _ = try self.addInst(.{
...@@ -2065,7 +2001,7 @@ fn asmMemoryImmediate(self: *CodeGen, tag: Mir.Inst.FixedTag, m: Memory, imm: Im...@@ -2065,7 +2001,7 @@ fn asmMemoryImmediate(self: *CodeGen, tag: Mir.Inst.FixedTag, m: Memory, imm: Im
2065 .ops = switch (imm) {2001 .ops = switch (imm) {
2066 .signed => .mi_s,2002 .signed => .mi_s,
2067 .unsigned => .mi_u,2003 .unsigned => .mi_u,
2068 .reloc => unreachable,2004 .nav, .uav, .lazy_sym, .extern_func => unreachable,
2069 },2005 },
2070 .data = .{ .x = .{2006 .data = .{ .x = .{
2071 .fixes = tag[0],2007 .fixes = tag[0],
...@@ -2347,16 +2283,18 @@ fn genMainBody(...@@ -2347,16 +2283,18 @@ fn genMainBody(
2347 var air_arg_index: usize = 0;2283 var air_arg_index: usize = 0;
2348 const fn_info = zcu.typeToFunc(cg.fn_type).?;2284 const fn_info = zcu.typeToFunc(cg.fn_type).?;
2349 var fn_param_index: usize = 0;2285 var fn_param_index: usize = 0;
2350 try cg.mir_local_types.ensureTotalCapacity(cg.gpa, fn_info.param_types.len);
2351 var zir_param_index: usize = 0;2286 var zir_param_index: usize = 0;
2352 for (zir.getParamBody(func_zir_inst)) |zir_param_inst| {2287 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 };
2354 defer zir_param_index += 1;2292 defer zir_param_index += 1;
2355 try cg.mir_local_name_bytes.appendSlice(cg.gpa, name[0 .. name.len + 1]);
23562293
2357 if (comptime_args.len > 0) switch (comptime_args.get(ip)[zir_param_index]) {2294 if (comptime_args.len > 0) switch (comptime_args.get(ip)[zir_param_index]) {
2358 .none => {},2295 .none => {},
2359 else => |comptime_arg| {2296 else => |comptime_arg| {
2297 try cg.mir_locals.append(cg.gpa, .{ .name = name, .type = ip.typeOf(comptime_arg) });
2360 _ = try cg.addInst(.{2298 _ = try cg.addInst(.{
2361 .tag = .pseudo,2299 .tag = .pseudo,
2362 .ops = .pseudo_dbg_arg_val,2300 .ops = .pseudo_dbg_arg_val,
...@@ -2366,9 +2304,9 @@ fn genMainBody(...@@ -2366,9 +2304,9 @@ fn genMainBody(
2366 },2304 },
2367 };2305 };
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 });
2370 fn_param_index += 1;2309 fn_param_index += 1;
2371 cg.mir_local_types.appendAssumeCapacity(arg_ty.toIntern());
23722310
2373 if (air_arg_index == air_args_body.len) {2311 if (air_arg_index == air_args_body.len) {
2374 try cg.asmPseudo(.pseudo_dbg_arg_none);2312 try cg.asmPseudo(.pseudo_dbg_arg_none);
...@@ -2381,7 +2319,11 @@ fn genMainBody(...@@ -2381,7 +2319,11 @@ fn genMainBody(
2381 continue;2319 continue;
2382 }2320 }
2383 air_arg_index += 1;2321 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 );
2385 }2327 }
2386 if (fn_info.is_var_args) try cg.asmPseudo(.pseudo_dbg_var_args_none);2328 if (fn_info.is_var_args) try cg.asmPseudo(.pseudo_dbg_var_args_none);
2387 }2329 }
...@@ -3453,7 +3395,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -3453,7 +3395,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3453 },3395 },
3454 .call_frame = .{ .alignment = .@"16" },3396 .call_frame = .{ .alignment = .@"16" },
3455 .extra_temps = .{3397 .extra_temps = .{
3456 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addhf3" } } },3398 .{ .type = .usize, .kind = .{ .extern_func = "__addhf3" } },
3457 .unused,3399 .unused,
3458 .unused,3400 .unused,
3459 .unused,3401 .unused,
...@@ -3585,7 +3527,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -3585,7 +3527,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3585 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },3527 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
3586 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },3528 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
3587 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },3529 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
3588 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addhf3" } } },3530 .{ .type = .usize, .kind = .{ .extern_func = "__addhf3" } },
3589 .unused,3531 .unused,
3590 .unused,3532 .unused,
3591 .unused,3533 .unused,
...@@ -3621,7 +3563,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -3621,7 +3563,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3621 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },3563 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
3622 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },3564 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
3623 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },3565 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
3624 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addhf3" } } },3566 .{ .type = .usize, .kind = .{ .extern_func = "__addhf3" } },
3625 .unused,3567 .unused,
3626 .unused,3568 .unused,
3627 .unused,3569 .unused,
...@@ -3658,7 +3600,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -3658,7 +3600,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3658 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },3600 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
3659 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },3601 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
3660 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },3602 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
3661 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addhf3" } } },3603 .{ .type = .usize, .kind = .{ .extern_func = "__addhf3" } },
3662 .{ .type = .f16, .kind = .{ .reg = .ax } },3604 .{ .type = .f16, .kind = .{ .reg = .ax } },
3663 .unused,3605 .unused,
3664 .unused,3606 .unused,
...@@ -3698,7 +3640,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -3698,7 +3640,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3698 .{ .type = .f32, .kind = .mem },3640 .{ .type = .f32, .kind = .mem },
3699 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },3641 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
3700 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },3642 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
3701 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addhf3" } } },3643 .{ .type = .usize, .kind = .{ .extern_func = "__addhf3" } },
3702 .unused,3644 .unused,
3703 .unused,3645 .unused,
3704 .unused,3646 .unused,
...@@ -4183,7 +4125,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -4183,7 +4125,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
4183 },4125 },
4184 .call_frame = .{ .alignment = .@"16" },4126 .call_frame = .{ .alignment = .@"16" },
4185 .extra_temps = .{4127 .extra_temps = .{
4186 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addtf3" } } },4128 .{ .type = .usize, .kind = .{ .extern_func = "__addtf3" } },
4187 .unused,4129 .unused,
4188 .unused,4130 .unused,
4189 .unused,4131 .unused,
...@@ -4215,7 +4157,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -4215,7 +4157,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
4215 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },4157 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
4216 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },4158 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
4217 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },4159 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
4218 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addtf3" } } },4160 .{ .type = .usize, .kind = .{ .extern_func = "__addtf3" } },
4219 .unused,4161 .unused,
4220 .unused,4162 .unused,
4221 .unused,4163 .unused,
...@@ -4250,7 +4192,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -4250,7 +4192,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
4250 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },4192 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
4251 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },4193 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
4252 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },4194 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
4253 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addtf3" } } },4195 .{ .type = .usize, .kind = .{ .extern_func = "__addtf3" } },
4254 .unused,4196 .unused,
4255 .unused,4197 .unused,
4256 .unused,4198 .unused,
...@@ -4285,7 +4227,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -4285,7 +4227,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
4285 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },4227 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
4286 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },4228 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
4287 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },4229 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
4288 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addtf3" } } },4230 .{ .type = .usize, .kind = .{ .extern_func = "__addtf3" } },
4289 .unused,4231 .unused,
4290 .unused,4232 .unused,
4291 .unused,4233 .unused,
...@@ -13885,7 +13827,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -13885,7 +13827,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
13885 },13827 },
13886 .call_frame = .{ .alignment = .@"16" },13828 .call_frame = .{ .alignment = .@"16" },
13887 .extra_temps = .{13829 .extra_temps = .{
13888 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__subhf3" } } },13830 .{ .type = .usize, .kind = .{ .extern_func = "__subhf3" } },
13889 .unused,13831 .unused,
13890 .unused,13832 .unused,
13891 .unused,13833 .unused,
...@@ -14017,7 +13959,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -14017,7 +13959,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
14017 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },13959 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
14018 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },13960 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
14019 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },13961 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
14020 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__subhf3" } } },13962 .{ .type = .usize, .kind = .{ .extern_func = "__subhf3" } },
14021 .unused,13963 .unused,
14022 .unused,13964 .unused,
14023 .unused,13965 .unused,
...@@ -14053,7 +13995,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -14053,7 +13995,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
14053 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },13995 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
14054 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },13996 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
14055 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },13997 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
14056 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__subhf3" } } },13998 .{ .type = .usize, .kind = .{ .extern_func = "__subhf3" } },
14057 .unused,13999 .unused,
14058 .unused,14000 .unused,
14059 .unused,14001 .unused,
...@@ -14090,7 +14032,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -14090,7 +14032,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
14090 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },14032 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
14091 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },14033 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
14092 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },14034 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
14093 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__subhf3" } } },14035 .{ .type = .usize, .kind = .{ .extern_func = "__subhf3" } },
14094 .{ .type = .f16, .kind = .{ .reg = .ax } },14036 .{ .type = .f16, .kind = .{ .reg = .ax } },
14095 .unused,14037 .unused,
14096 .unused,14038 .unused,
...@@ -14130,7 +14072,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -14130,7 +14072,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
14130 .{ .type = .f32, .kind = .mem },14072 .{ .type = .f32, .kind = .mem },
14131 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },14073 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
14132 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },14074 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
14133 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__subhf3" } } },14075 .{ .type = .usize, .kind = .{ .extern_func = "__subhf3" } },
14134 .unused,14076 .unused,
14135 .unused,14077 .unused,
14136 .unused,14078 .unused,
...@@ -14632,7 +14574,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -14632,7 +14574,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
14632 },14574 },
14633 .call_frame = .{ .alignment = .@"16" },14575 .call_frame = .{ .alignment = .@"16" },
14634 .extra_temps = .{14576 .extra_temps = .{
14635 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__subtf3" } } },14577 .{ .type = .usize, .kind = .{ .extern_func = "__subtf3" } },
14636 .unused,14578 .unused,
14637 .unused,14579 .unused,
14638 .unused,14580 .unused,
...@@ -14664,7 +14606,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -14664,7 +14606,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
14664 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },14606 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
14665 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },14607 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
14666 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },14608 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
14667 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__subtf3" } } },14609 .{ .type = .usize, .kind = .{ .extern_func = "__subtf3" } },
14668 .unused,14610 .unused,
14669 .unused,14611 .unused,
14670 .unused,14612 .unused,
...@@ -14699,7 +14641,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -14699,7 +14641,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
14699 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },14641 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
14700 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },14642 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
14701 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },14643 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
14702 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__subtf3" } } },14644 .{ .type = .usize, .kind = .{ .extern_func = "__subtf3" } },
14703 .unused,14645 .unused,
14704 .unused,14646 .unused,
14705 .unused,14647 .unused,
...@@ -14734,7 +14676,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -14734,7 +14676,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
14734 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },14676 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
14735 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },14677 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
14736 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },14678 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
14737 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__subtf3" } } },14679 .{ .type = .usize, .kind = .{ .extern_func = "__subtf3" } },
14738 .unused,14680 .unused,
14739 .unused,14681 .unused,
14740 .unused,14682 .unused,
...@@ -23415,7 +23357,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -23415,7 +23357,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
23415 },23357 },
23416 .call_frame = .{ .alignment = .@"16" },23358 .call_frame = .{ .alignment = .@"16" },
23417 .extra_temps = .{23359 .extra_temps = .{
23418 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__mulhf3" } } },23360 .{ .type = .usize, .kind = .{ .extern_func = "__mulhf3" } },
23419 .unused,23361 .unused,
23420 .unused,23362 .unused,
23421 .unused,23363 .unused,
...@@ -23547,7 +23489,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -23547,7 +23489,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
23547 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },23489 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
23548 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },23490 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
23549 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },23491 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
23550 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__mulhf3" } } },23492 .{ .type = .usize, .kind = .{ .extern_func = "__mulhf3" } },
23551 .unused,23493 .unused,
23552 .unused,23494 .unused,
23553 .unused,23495 .unused,
...@@ -23583,7 +23525,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -23583,7 +23525,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
23583 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },23525 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
23584 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },23526 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
23585 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },23527 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
23586 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__mulhf3" } } },23528 .{ .type = .usize, .kind = .{ .extern_func = "__mulhf3" } },
23587 .unused,23529 .unused,
23588 .unused,23530 .unused,
23589 .unused,23531 .unused,
...@@ -23620,7 +23562,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -23620,7 +23562,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
23620 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },23562 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
23621 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },23563 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
23622 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },23564 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
23623 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__mulhf3" } } },23565 .{ .type = .usize, .kind = .{ .extern_func = "__mulhf3" } },
23624 .{ .type = .f16, .kind = .{ .reg = .ax } },23566 .{ .type = .f16, .kind = .{ .reg = .ax } },
23625 .unused,23567 .unused,
23626 .unused,23568 .unused,
...@@ -23660,7 +23602,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -23660,7 +23602,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
23660 .{ .type = .f32, .kind = .mem },23602 .{ .type = .f32, .kind = .mem },
23661 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },23603 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
23662 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },23604 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
23663 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__mulhf3" } } },23605 .{ .type = .usize, .kind = .{ .extern_func = "__mulhf3" } },
23664 .unused,23606 .unused,
23665 .unused,23607 .unused,
23666 .unused,23608 .unused,
...@@ -24145,7 +24087,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -24145,7 +24087,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
24145 },24087 },
24146 .call_frame = .{ .alignment = .@"16" },24088 .call_frame = .{ .alignment = .@"16" },
24147 .extra_temps = .{24089 .extra_temps = .{
24148 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__multf3" } } },24090 .{ .type = .usize, .kind = .{ .extern_func = "__multf3" } },
24149 .unused,24091 .unused,
24150 .unused,24092 .unused,
24151 .unused,24093 .unused,
...@@ -24177,7 +24119,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -24177,7 +24119,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
24177 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },24119 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
24178 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },24120 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
24179 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },24121 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
24180 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__multf3" } } },24122 .{ .type = .usize, .kind = .{ .extern_func = "__multf3" } },
24181 .unused,24123 .unused,
24182 .unused,24124 .unused,
24183 .unused,24125 .unused,
...@@ -24212,7 +24154,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -24212,7 +24154,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
24212 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },24154 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
24213 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },24155 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
24214 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },24156 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
24215 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__multf3" } } },24157 .{ .type = .usize, .kind = .{ .extern_func = "__multf3" } },
24216 .unused,24158 .unused,
24217 .unused,24159 .unused,
24218 .unused,24160 .unused,
...@@ -24247,7 +24189,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -24247,7 +24189,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
24247 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },24189 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
24248 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },24190 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
24249 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },24191 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
24250 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__multf3" } } },24192 .{ .type = .usize, .kind = .{ .extern_func = "__multf3" } },
24251 .unused,24193 .unused,
24252 .unused,24194 .unused,
24253 .unused,24195 .unused,
...@@ -26107,7 +26049,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -26107,7 +26049,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
26107 },26049 },
26108 .call_frame = .{ .alignment = .@"16" },26050 .call_frame = .{ .alignment = .@"16" },
26109 .extra_temps = .{26051 .extra_temps = .{
26110 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__mulhf3" } } },26052 .{ .type = .usize, .kind = .{ .extern_func = "__mulhf3" } },
26111 .unused,26053 .unused,
26112 .unused,26054 .unused,
26113 .unused,26055 .unused,
...@@ -26239,7 +26181,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -26239,7 +26181,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
26239 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },26181 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
26240 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },26182 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
26241 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },26183 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
26242 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__mulhf3" } } },26184 .{ .type = .usize, .kind = .{ .extern_func = "__mulhf3" } },
26243 .unused,26185 .unused,
26244 .unused,26186 .unused,
26245 .unused,26187 .unused,
...@@ -26275,7 +26217,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -26275,7 +26217,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
26275 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },26217 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
26276 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },26218 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
26277 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },26219 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
26278 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__mulhf3" } } },26220 .{ .type = .usize, .kind = .{ .extern_func = "__mulhf3" } },
26279 .unused,26221 .unused,
26280 .unused,26222 .unused,
26281 .unused,26223 .unused,
...@@ -26312,7 +26254,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -26312,7 +26254,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
26312 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },26254 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
26313 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },26255 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
26314 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },26256 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
26315 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__mulhf3" } } },26257 .{ .type = .usize, .kind = .{ .extern_func = "__mulhf3" } },
26316 .{ .type = .f16, .kind = .{ .reg = .ax } },26258 .{ .type = .f16, .kind = .{ .reg = .ax } },
26317 .unused,26259 .unused,
26318 .unused,26260 .unused,
...@@ -26352,7 +26294,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -26352,7 +26294,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
26352 .{ .type = .f32, .kind = .mem },26294 .{ .type = .f32, .kind = .mem },
26353 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },26295 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
26354 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },26296 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
26355 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__mulhf3" } } },26297 .{ .type = .usize, .kind = .{ .extern_func = "__mulhf3" } },
26356 .unused,26298 .unused,
26357 .unused,26299 .unused,
26358 .unused,26300 .unused,
...@@ -26837,7 +26779,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -26837,7 +26779,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
26837 },26779 },
26838 .call_frame = .{ .alignment = .@"16" },26780 .call_frame = .{ .alignment = .@"16" },
26839 .extra_temps = .{26781 .extra_temps = .{
26840 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__multf3" } } },26782 .{ .type = .usize, .kind = .{ .extern_func = "__multf3" } },
26841 .unused,26783 .unused,
26842 .unused,26784 .unused,
26843 .unused,26785 .unused,
...@@ -26869,7 +26811,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -26869,7 +26811,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
26869 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },26811 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
26870 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },26812 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
26871 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },26813 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
26872 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__multf3" } } },26814 .{ .type = .usize, .kind = .{ .extern_func = "__multf3" } },
26873 .unused,26815 .unused,
26874 .unused,26816 .unused,
26875 .unused,26817 .unused,
...@@ -26904,7 +26846,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -26904,7 +26846,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
26904 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },26846 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
26905 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },26847 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
26906 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },26848 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
26907 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__multf3" } } },26849 .{ .type = .usize, .kind = .{ .extern_func = "__multf3" } },
26908 .unused,26850 .unused,
26909 .unused,26851 .unused,
26910 .unused,26852 .unused,
...@@ -26939,7 +26881,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -26939,7 +26881,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
26939 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },26881 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
26940 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },26882 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
26941 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },26883 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
26942 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__multf3" } } },26884 .{ .type = .usize, .kind = .{ .extern_func = "__multf3" } },
26943 .unused,26885 .unused,
26944 .unused,26886 .unused,
26945 .unused,26887 .unused,
...@@ -32247,7 +32189,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -32247,7 +32189,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
32247 },32189 },
32248 .call_frame = .{ .alignment = .@"16" },32190 .call_frame = .{ .alignment = .@"16" },
32249 .extra_temps = .{32191 .extra_temps = .{
32250 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divhf3" } } },32192 .{ .type = .usize, .kind = .{ .extern_func = "__divhf3" } },
32251 .unused,32193 .unused,
32252 .unused,32194 .unused,
32253 .unused,32195 .unused,
...@@ -32379,7 +32321,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -32379,7 +32321,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
32379 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },32321 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
32380 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },32322 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
32381 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },32323 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
32382 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divhf3" } } },32324 .{ .type = .usize, .kind = .{ .extern_func = "__divhf3" } },
32383 .unused,32325 .unused,
32384 .unused,32326 .unused,
32385 .unused,32327 .unused,
...@@ -32415,7 +32357,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -32415,7 +32357,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
32415 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },32357 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
32416 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },32358 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
32417 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },32359 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
32418 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divhf3" } } },32360 .{ .type = .usize, .kind = .{ .extern_func = "__divhf3" } },
32419 .unused,32361 .unused,
32420 .unused,32362 .unused,
32421 .unused,32363 .unused,
...@@ -32452,7 +32394,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -32452,7 +32394,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
32452 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },32394 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
32453 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },32395 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
32454 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },32396 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
32455 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divhf3" } } },32397 .{ .type = .usize, .kind = .{ .extern_func = "__divhf3" } },
32456 .{ .type = .f16, .kind = .{ .reg = .ax } },32398 .{ .type = .f16, .kind = .{ .reg = .ax } },
32457 .unused,32399 .unused,
32458 .unused,32400 .unused,
...@@ -32492,7 +32434,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -32492,7 +32434,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
32492 .{ .type = .f32, .kind = .mem },32434 .{ .type = .f32, .kind = .mem },
32493 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },32435 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
32494 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },32436 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
32495 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divhf3" } } },32437 .{ .type = .usize, .kind = .{ .extern_func = "__divhf3" } },
32496 .unused,32438 .unused,
32497 .unused,32439 .unused,
32498 .unused,32440 .unused,
...@@ -32995,7 +32937,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -32995,7 +32937,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
32995 },32937 },
32996 .call_frame = .{ .alignment = .@"16" },32938 .call_frame = .{ .alignment = .@"16" },
32997 .extra_temps = .{32939 .extra_temps = .{
32998 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divtf3" } } },32940 .{ .type = .usize, .kind = .{ .extern_func = "__divtf3" } },
32999 .unused,32941 .unused,
33000 .unused,32942 .unused,
33001 .unused,32943 .unused,
...@@ -33027,7 +32969,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -33027,7 +32969,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
33027 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },32969 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
33028 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },32970 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
33029 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },32971 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
33030 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divtf3" } } },32972 .{ .type = .usize, .kind = .{ .extern_func = "__divtf3" } },
33031 .unused,32973 .unused,
33032 .unused,32974 .unused,
33033 .unused,32975 .unused,
...@@ -33062,7 +33004,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -33062,7 +33004,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
33062 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },33004 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
33063 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },33005 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
33064 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },33006 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
33065 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divtf3" } } },33007 .{ .type = .usize, .kind = .{ .extern_func = "__divtf3" } },
33066 .unused,33008 .unused,
33067 .unused,33009 .unused,
33068 .unused,33010 .unused,
...@@ -33097,7 +33039,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -33097,7 +33039,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
33097 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },33039 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
33098 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },33040 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
33099 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },33041 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
33100 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divtf3" } } },33042 .{ .type = .usize, .kind = .{ .extern_func = "__divtf3" } },
33101 .unused,33043 .unused,
33102 .unused,33044 .unused,
33103 .unused,33045 .unused,
...@@ -33181,8 +33123,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -33181,8 +33123,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
33181 },33123 },
33182 .call_frame = .{ .alignment = .@"16" },33124 .call_frame = .{ .alignment = .@"16" },
33183 .extra_temps = .{33125 .extra_temps = .{
33184 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divhf3" } } },33126 .{ .type = .usize, .kind = .{ .extern_func = "__divhf3" } },
33185 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunch" } } },33127 .{ .type = .usize, .kind = .{ .extern_func = "__trunch" } },
33186 .unused,33128 .unused,
33187 .unused,33129 .unused,
33188 .unused,33130 .unused,
...@@ -33323,8 +33265,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -33323,8 +33265,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
33323 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },33265 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
33324 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },33266 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
33325 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },33267 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
33326 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divhf3" } } },33268 .{ .type = .usize, .kind = .{ .extern_func = "__divhf3" } },
33327 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunch" } } },33269 .{ .type = .usize, .kind = .{ .extern_func = "__trunch" } },
33328 .unused,33270 .unused,
33329 .unused,33271 .unused,
33330 .unused,33272 .unused,
...@@ -33360,8 +33302,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -33360,8 +33302,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
33360 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },33302 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
33361 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },33303 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
33362 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },33304 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
33363 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divhf3" } } },33305 .{ .type = .usize, .kind = .{ .extern_func = "__divhf3" } },
33364 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunch" } } },33306 .{ .type = .usize, .kind = .{ .extern_func = "__trunch" } },
33365 .unused,33307 .unused,
33366 .unused,33308 .unused,
33367 .unused,33309 .unused,
...@@ -33398,8 +33340,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -33398,8 +33340,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
33398 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },33340 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
33399 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },33341 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
33400 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },33342 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
33401 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divhf3" } } },33343 .{ .type = .usize, .kind = .{ .extern_func = "__divhf3" } },
33402 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunch" } } },33344 .{ .type = .usize, .kind = .{ .extern_func = "__trunch" } },
33403 .{ .type = .f16, .kind = .{ .reg = .ax } },33345 .{ .type = .f16, .kind = .{ .reg = .ax } },
33404 .unused,33346 .unused,
33405 .unused,33347 .unused,
...@@ -33439,8 +33381,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -33439,8 +33381,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
33439 .{ .type = .f32, .kind = .mem },33381 .{ .type = .f32, .kind = .mem },
33440 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },33382 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
33441 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },33383 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
33442 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divhf3" } } },33384 .{ .type = .usize, .kind = .{ .extern_func = "__divhf3" } },
33443 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunch" } } },33385 .{ .type = .usize, .kind = .{ .extern_func = "__trunch" } },
33444 .unused,33386 .unused,
33445 .unused,33387 .unused,
33446 .unused,33388 .unused,
...@@ -33508,7 +33450,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -33508,7 +33450,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
33508 },33450 },
33509 .call_frame = .{ .alignment = .@"16" },33451 .call_frame = .{ .alignment = .@"16" },
33510 .extra_temps = .{33452 .extra_temps = .{
33511 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "truncf" } } },33453 .{ .type = .usize, .kind = .{ .extern_func = "truncf" } },
33512 .unused,33454 .unused,
33513 .unused,33455 .unused,
33514 .unused,33456 .unused,
...@@ -33572,7 +33514,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -33572,7 +33514,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
33572 .extra_temps = .{33514 .extra_temps = .{
33573 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },33515 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
33574 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },33516 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
33575 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "truncf" } } },33517 .{ .type = .usize, .kind = .{ .extern_func = "truncf" } },
33576 .unused,33518 .unused,
33577 .unused,33519 .unused,
33578 .unused,33520 .unused,
...@@ -33721,7 +33663,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -33721,7 +33663,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
33721 },33663 },
33722 .call_frame = .{ .alignment = .@"16" },33664 .call_frame = .{ .alignment = .@"16" },
33723 .extra_temps = .{33665 .extra_temps = .{
33724 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "trunc" } } },33666 .{ .type = .usize, .kind = .{ .extern_func = "trunc" } },
33725 .unused,33667 .unused,
33726 .unused,33668 .unused,
33727 .unused,33669 .unused,
...@@ -33751,8 +33693,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -33751,8 +33693,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
33751 },33693 },
33752 .call_frame = .{ .alignment = .@"16" },33694 .call_frame = .{ .alignment = .@"16" },
33753 .extra_temps = .{33695 .extra_temps = .{
33754 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divdf3" } } },33696 .{ .type = .usize, .kind = .{ .extern_func = "__divdf3" } },
33755 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "trunc" } } },33697 .{ .type = .usize, .kind = .{ .extern_func = "trunc" } },
33756 .unused,33698 .unused,
33757 .unused,33699 .unused,
33758 .unused,33700 .unused,
...@@ -33899,7 +33841,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -33899,7 +33841,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
33899 .extra_temps = .{33841 .extra_temps = .{
33900 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },33842 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
33901 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },33843 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
33902 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "trunc" } } },33844 .{ .type = .usize, .kind = .{ .extern_func = "trunc" } },
33903 .unused,33845 .unused,
33904 .unused,33846 .unused,
33905 .unused,33847 .unused,
...@@ -33935,8 +33877,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -33935,8 +33877,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
33935 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },33877 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
33936 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },33878 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
33937 .{ .type = .f64, .kind = .{ .reg = .xmm1 } },33879 .{ .type = .f64, .kind = .{ .reg = .xmm1 } },
33938 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divdf3" } } },33880 .{ .type = .usize, .kind = .{ .extern_func = "__divdf3" } },
33939 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "trunc" } } },33881 .{ .type = .usize, .kind = .{ .extern_func = "trunc" } },
33940 .unused,33882 .unused,
33941 .unused,33883 .unused,
33942 .unused,33884 .unused,
...@@ -33973,7 +33915,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -33973,7 +33915,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
33973 .{ .type = .f80, .kind = .{ .reg = .st6 } },33915 .{ .type = .f80, .kind = .{ .reg = .st6 } },
33974 .{ .type = .f80, .kind = .{ .reg = .st7 } },33916 .{ .type = .f80, .kind = .{ .reg = .st7 } },
33975 .{ .type = .f80, .kind = .{ .frame = .call_frame } },33917 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
33976 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__truncx" } } },33918 .{ .type = .usize, .kind = .{ .extern_func = "__truncx" } },
33977 .unused,33919 .unused,
33978 .unused,33920 .unused,
33979 .unused,33921 .unused,
...@@ -34007,7 +33949,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -34007,7 +33949,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
34007 .{ .type = .f80, .kind = .{ .reg = .st6 } },33949 .{ .type = .f80, .kind = .{ .reg = .st6 } },
34008 .{ .type = .f80, .kind = .{ .reg = .st7 } },33950 .{ .type = .f80, .kind = .{ .reg = .st7 } },
34009 .{ .type = .f80, .kind = .{ .frame = .call_frame } },33951 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
34010 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__truncx" } } },33952 .{ .type = .usize, .kind = .{ .extern_func = "__truncx" } },
34011 .unused,33953 .unused,
34012 .unused,33954 .unused,
34013 .unused,33955 .unused,
...@@ -34041,8 +33983,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -34041,8 +33983,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
34041 },33983 },
34042 .call_frame = .{ .alignment = .@"16" },33984 .call_frame = .{ .alignment = .@"16" },
34043 .extra_temps = .{33985 .extra_temps = .{
34044 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divtf3" } } },33986 .{ .type = .usize, .kind = .{ .extern_func = "__divtf3" } },
34045 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "truncq" } } },33987 .{ .type = .usize, .kind = .{ .extern_func = "truncq" } },
34046 .unused,33988 .unused,
34047 .unused,33989 .unused,
34048 .unused,33990 .unused,
...@@ -34074,8 +34016,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -34074,8 +34016,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
34074 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },34016 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
34075 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },34017 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
34076 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },34018 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
34077 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divtf3" } } },34019 .{ .type = .usize, .kind = .{ .extern_func = "__divtf3" } },
34078 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "truncq" } } },34020 .{ .type = .usize, .kind = .{ .extern_func = "truncq" } },
34079 .unused,34021 .unused,
34080 .unused,34022 .unused,
34081 .unused,34023 .unused,
...@@ -34110,8 +34052,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -34110,8 +34052,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
34110 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },34052 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
34111 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },34053 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
34112 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },34054 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
34113 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divtf3" } } },34055 .{ .type = .usize, .kind = .{ .extern_func = "__divtf3" } },
34114 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "truncq" } } },34056 .{ .type = .usize, .kind = .{ .extern_func = "truncq" } },
34115 .unused,34057 .unused,
34116 .unused,34058 .unused,
34117 .unused,34059 .unused,
...@@ -34146,8 +34088,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -34146,8 +34088,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
34146 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },34088 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
34147 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },34089 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
34148 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },34090 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
34149 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divtf3" } } },34091 .{ .type = .usize, .kind = .{ .extern_func = "__divtf3" } },
34150 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "truncq" } } },34092 .{ .type = .usize, .kind = .{ .extern_func = "truncq" } },
34151 .unused,34093 .unused,
34152 .unused,34094 .unused,
34153 .unused,34095 .unused,
...@@ -34237,12 +34179,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -34237,12 +34179,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
34237 },34179 },
34238 .call_frame = .{ .alignment = .@"16" },34180 .call_frame = .{ .alignment = .@"16" },
34239 .extra_temps = .{34181 .extra_temps = .{
34240 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divhf3" } } },34182 .{ .type = .usize, .kind = .{ .extern_func = "__divhf3" } },
34241 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {34183 .{ .type = .usize, .kind = .{ .extern_func = switch (direction) {
34242 else => unreachable,34184 else => unreachable,
34243 .zero => "__trunch",34185 .zero => "__trunch",
34244 .down => "__floorh",34186 .down => "__floorh",
34245 } } } },34187 } } },
34246 .unused,34188 .unused,
34247 .unused,34189 .unused,
34248 .unused,34190 .unused,
...@@ -34377,12 +34319,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -34377,12 +34319,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
34377 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },34319 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
34378 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },34320 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
34379 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },34321 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
34380 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divhf3" } } },34322 .{ .type = .usize, .kind = .{ .extern_func = "__divhf3" } },
34381 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {34323 .{ .type = .usize, .kind = .{ .extern_func = switch (direction) {
34382 else => unreachable,34324 else => unreachable,
34383 .zero => "__trunch",34325 .zero => "__trunch",
34384 .down => "__floorh",34326 .down => "__floorh",
34385 } } } },34327 } } },
34386 .unused,34328 .unused,
34387 .unused,34329 .unused,
34388 .unused,34330 .unused,
...@@ -34418,12 +34360,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -34418,12 +34360,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
34418 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },34360 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
34419 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },34361 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
34420 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },34362 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
34421 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divhf3" } } },34363 .{ .type = .usize, .kind = .{ .extern_func = "__divhf3" } },
34422 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {34364 .{ .type = .usize, .kind = .{ .extern_func = switch (direction) {
34423 else => unreachable,34365 else => unreachable,
34424 .zero => "__trunch",34366 .zero => "__trunch",
34425 .down => "__floorh",34367 .down => "__floorh",
34426 } } } },34368 } } },
34427 .unused,34369 .unused,
34428 .unused,34370 .unused,
34429 .unused,34371 .unused,
...@@ -34460,12 +34402,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -34460,12 +34402,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
34460 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },34402 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
34461 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },34403 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
34462 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },34404 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
34463 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divhf3" } } },34405 .{ .type = .usize, .kind = .{ .extern_func = "__divhf3" } },
34464 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {34406 .{ .type = .usize, .kind = .{ .extern_func = switch (direction) {
34465 else => unreachable,34407 else => unreachable,
34466 .zero => "__trunch",34408 .zero => "__trunch",
34467 .down => "__floorh",34409 .down => "__floorh",
34468 } } } },34410 } } },
34469 .{ .type = .f16, .kind = .{ .reg = .ax } },34411 .{ .type = .f16, .kind = .{ .reg = .ax } },
34470 .unused,34412 .unused,
34471 .unused,34413 .unused,
...@@ -34505,12 +34447,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -34505,12 +34447,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
34505 .{ .type = .f32, .kind = .mem },34447 .{ .type = .f32, .kind = .mem },
34506 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },34448 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
34507 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },34449 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
34508 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divhf3" } } },34450 .{ .type = .usize, .kind = .{ .extern_func = "__divhf3" } },
34509 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {34451 .{ .type = .usize, .kind = .{ .extern_func = switch (direction) {
34510 else => unreachable,34452 else => unreachable,
34511 .zero => "__trunch",34453 .zero => "__trunch",
34512 .down => "__floorh",34454 .down => "__floorh",
34513 } } } },34455 } } },
34514 .unused,34456 .unused,
34515 .unused,34457 .unused,
34516 .unused,34458 .unused,
...@@ -34578,11 +34520,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -34578,11 +34520,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
34578 },34520 },
34579 .call_frame = .{ .alignment = .@"16" },34521 .call_frame = .{ .alignment = .@"16" },
34580 .extra_temps = .{34522 .extra_temps = .{
34581 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {34523 .{ .type = .usize, .kind = .{ .extern_func = switch (direction) {
34582 else => unreachable,34524 else => unreachable,
34583 .zero => "truncf",34525 .zero => "truncf",
34584 .down => "floorf",34526 .down => "floorf",
34585 } } } },34527 } } },
34586 .unused,34528 .unused,
34587 .unused,34529 .unused,
34588 .unused,34530 .unused,
...@@ -34646,11 +34588,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -34646,11 +34588,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
34646 .extra_temps = .{34588 .extra_temps = .{
34647 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },34589 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
34648 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },34590 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
34649 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {34591 .{ .type = .usize, .kind = .{ .extern_func = switch (direction) {
34650 else => unreachable,34592 else => unreachable,
34651 .zero => "truncf",34593 .zero => "truncf",
34652 .down => "floorf",34594 .down => "floorf",
34653 } } } },34595 } } },
34654 .unused,34596 .unused,
34655 .unused,34597 .unused,
34656 .unused,34598 .unused,
...@@ -34799,11 +34741,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -34799,11 +34741,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
34799 },34741 },
34800 .call_frame = .{ .alignment = .@"16" },34742 .call_frame = .{ .alignment = .@"16" },
34801 .extra_temps = .{34743 .extra_temps = .{
34802 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {34744 .{ .type = .usize, .kind = .{ .extern_func = switch (direction) {
34803 else => unreachable,34745 else => unreachable,
34804 .zero => "trunc",34746 .zero => "trunc",
34805 .down => "floor",34747 .down => "floor",
34806 } } } },34748 } } },
34807 .unused,34749 .unused,
34808 .unused,34750 .unused,
34809 .unused,34751 .unused,
...@@ -34833,12 +34775,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -34833,12 +34775,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
34833 },34775 },
34834 .call_frame = .{ .alignment = .@"16" },34776 .call_frame = .{ .alignment = .@"16" },
34835 .extra_temps = .{34777 .extra_temps = .{
34836 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divdf3" } } },34778 .{ .type = .usize, .kind = .{ .extern_func = "__divdf3" } },
34837 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {34779 .{ .type = .usize, .kind = .{ .extern_func = switch (direction) {
34838 else => unreachable,34780 else => unreachable,
34839 .zero => "trunc",34781 .zero => "trunc",
34840 .down => "floor",34782 .down => "floor",
34841 } } } },34783 } } },
34842 .unused,34784 .unused,
34843 .unused,34785 .unused,
34844 .unused,34786 .unused,
...@@ -34985,11 +34927,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -34985,11 +34927,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
34985 .extra_temps = .{34927 .extra_temps = .{
34986 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },34928 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
34987 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },34929 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
34988 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {34930 .{ .type = .usize, .kind = .{ .extern_func = switch (direction) {
34989 else => unreachable,34931 else => unreachable,
34990 .zero => "trunc",34932 .zero => "trunc",
34991 .down => "floor",34933 .down => "floor",
34992 } } } },34934 } } },
34993 .unused,34935 .unused,
34994 .unused,34936 .unused,
34995 .unused,34937 .unused,
...@@ -35025,12 +34967,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -35025,12 +34967,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
35025 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },34967 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
35026 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },34968 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
35027 .{ .type = .f64, .kind = .{ .reg = .xmm1 } },34969 .{ .type = .f64, .kind = .{ .reg = .xmm1 } },
35028 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divdf3" } } },34970 .{ .type = .usize, .kind = .{ .extern_func = "__divdf3" } },
35029 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {34971 .{ .type = .usize, .kind = .{ .extern_func = switch (direction) {
35030 else => unreachable,34972 else => unreachable,
35031 .zero => "trunc",34973 .zero => "trunc",
35032 .down => "floor",34974 .down => "floor",
35033 } } } },34975 } } },
35034 .unused,34976 .unused,
35035 .unused,34977 .unused,
35036 .unused,34978 .unused,
...@@ -35067,11 +35009,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -35067,11 +35009,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
35067 .{ .type = .f80, .kind = .{ .reg = .st6 } },35009 .{ .type = .f80, .kind = .{ .reg = .st6 } },
35068 .{ .type = .f80, .kind = .{ .reg = .st7 } },35010 .{ .type = .f80, .kind = .{ .reg = .st7 } },
35069 .{ .type = .f80, .kind = .{ .frame = .call_frame } },35011 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
35070 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {35012 .{ .type = .usize, .kind = .{ .extern_func = switch (direction) {
35071 else => unreachable,35013 else => unreachable,
35072 .zero => "__truncx",35014 .zero => "__truncx",
35073 .down => "__floorx",35015 .down => "__floorx",
35074 } } } },35016 } } },
35075 .unused,35017 .unused,
35076 .unused,35018 .unused,
35077 .unused,35019 .unused,
...@@ -35103,11 +35045,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -35103,11 +35045,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
35103 .extra_temps = .{35045 .extra_temps = .{
35104 .{ .type = .f80, .kind = .{ .reg = .st7 } },35046 .{ .type = .f80, .kind = .{ .reg = .st7 } },
35105 .{ .type = .f80, .kind = .{ .frame = .call_frame } },35047 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
35106 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {35048 .{ .type = .usize, .kind = .{ .extern_func = switch (direction) {
35107 else => unreachable,35049 else => unreachable,
35108 .zero => "__truncx",35050 .zero => "__truncx",
35109 .down => "__floorx",35051 .down => "__floorx",
35110 } } } },35052 } } },
35111 .unused,35053 .unused,
35112 .unused,35054 .unused,
35113 .unused,35055 .unused,
...@@ -35140,11 +35082,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -35140,11 +35082,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
35140 .extra_temps = .{35082 .extra_temps = .{
35141 .{ .type = .f80, .kind = .{ .reg = .st7 } },35083 .{ .type = .f80, .kind = .{ .reg = .st7 } },
35142 .{ .type = .f80, .kind = .{ .frame = .call_frame } },35084 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
35143 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {35085 .{ .type = .usize, .kind = .{ .extern_func = switch (direction) {
35144 else => unreachable,35086 else => unreachable,
35145 .zero => "__truncx",35087 .zero => "__truncx",
35146 .down => "__floorx",35088 .down => "__floorx",
35147 } } } },35089 } } },
35148 .unused,35090 .unused,
35149 .unused,35091 .unused,
35150 .unused,35092 .unused,
...@@ -35178,11 +35120,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -35178,11 +35120,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
35178 .{ .type = .f80, .kind = .{ .reg = .st6 } },35120 .{ .type = .f80, .kind = .{ .reg = .st6 } },
35179 .{ .type = .f80, .kind = .{ .reg = .st7 } },35121 .{ .type = .f80, .kind = .{ .reg = .st7 } },
35180 .{ .type = .f80, .kind = .{ .frame = .call_frame } },35122 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
35181 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {35123 .{ .type = .usize, .kind = .{ .extern_func = switch (direction) {
35182 else => unreachable,35124 else => unreachable,
35183 .zero => "__truncx",35125 .zero => "__truncx",
35184 .down => "__floorx",35126 .down => "__floorx",
35185 } } } },35127 } } },
35186 .unused,35128 .unused,
35187 .unused,35129 .unused,
35188 .unused,35130 .unused,
...@@ -35216,12 +35158,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -35216,12 +35158,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
35216 },35158 },
35217 .call_frame = .{ .alignment = .@"16" },35159 .call_frame = .{ .alignment = .@"16" },
35218 .extra_temps = .{35160 .extra_temps = .{
35219 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divtf3" } } },35161 .{ .type = .usize, .kind = .{ .extern_func = "__divtf3" } },
35220 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {35162 .{ .type = .usize, .kind = .{ .extern_func = switch (direction) {
35221 else => unreachable,35163 else => unreachable,
35222 .zero => "truncq",35164 .zero => "truncq",
35223 .down => "floorq",35165 .down => "floorq",
35224 } } } },35166 } } },
35225 .unused,35167 .unused,
35226 .unused,35168 .unused,
35227 .unused,35169 .unused,
...@@ -35253,12 +35195,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -35253,12 +35195,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
35253 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },35195 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
35254 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },35196 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
35255 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },35197 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
35256 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divtf3" } } },35198 .{ .type = .usize, .kind = .{ .extern_func = "__divtf3" } },
35257 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {35199 .{ .type = .usize, .kind = .{ .extern_func = switch (direction) {
35258 else => unreachable,35200 else => unreachable,
35259 .zero => "truncq",35201 .zero => "truncq",
35260 .down => "floorq",35202 .down => "floorq",
35261 } } } },35203 } } },
35262 .unused,35204 .unused,
35263 .unused,35205 .unused,
35264 .unused,35206 .unused,
...@@ -35293,12 +35235,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -35293,12 +35235,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
35293 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },35235 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
35294 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },35236 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
35295 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },35237 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
35296 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divtf3" } } },35238 .{ .type = .usize, .kind = .{ .extern_func = "__divtf3" } },
35297 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {35239 .{ .type = .usize, .kind = .{ .extern_func = switch (direction) {
35298 else => unreachable,35240 else => unreachable,
35299 .zero => "truncq",35241 .zero => "truncq",
35300 .down => "floorq",35242 .down => "floorq",
35301 } } } },35243 } } },
35302 .unused,35244 .unused,
35303 .unused,35245 .unused,
35304 .unused,35246 .unused,
...@@ -35333,12 +35275,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -35333,12 +35275,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
35333 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },35275 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
35334 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },35276 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
35335 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },35277 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
35336 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divtf3" } } },35278 .{ .type = .usize, .kind = .{ .extern_func = "__divtf3" } },
35337 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {35279 .{ .type = .usize, .kind = .{ .extern_func = switch (direction) {
35338 else => unreachable,35280 else => unreachable,
35339 .zero => "truncq",35281 .zero => "truncq",
35340 .down => "floorq",35282 .down => "floorq",
35341 } } } },35283 } } },
35342 .unused,35284 .unused,
35343 .unused,35285 .unused,
35344 .unused,35286 .unused,
...@@ -35525,9 +35467,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -35525,9 +35467,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
35525 .extra_temps = .{35467 .extra_temps = .{
35526 .{ .type = .i128, .kind = .{ .param_gpr_pair = .{ .cc = .ccc, .at = 0 } } },35468 .{ .type = .i128, .kind = .{ .param_gpr_pair = .{ .cc = .ccc, .at = 0 } } },
35527 .{ .type = .i64, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 3 } } },35469 .{ .type = .i64, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 3 } } },
35528 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__modti3" } } },35470 .{ .type = .usize, .kind = .{ .extern_func = "__modti3" } },
35529 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },35471 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
35530 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divti3" } } },35472 .{ .type = .usize, .kind = .{ .extern_func = "__divti3" } },
35531 .unused,35473 .unused,
35532 .unused,35474 .unused,
35533 .unused,35475 .unused,
...@@ -35576,9 +35518,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -35576,9 +35518,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
35576 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 2 } } },35518 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 2 } } },
35577 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 3 } } },35519 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 3 } } },
35578 .{ .type = .i32, .kind = .{ .rc = .general_purpose } },35520 .{ .type = .i32, .kind = .{ .rc = .general_purpose } },
35579 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divei4" } } },35521 .{ .type = .usize, .kind = .{ .extern_func = "__divei4" } },
35580 .{ .kind = .{ .mem_of_type = .dst0 } },35522 .{ .kind = .{ .mem_of_type = .dst0 } },
35581 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__modei4" } } },35523 .{ .type = .usize, .kind = .{ .extern_func = "__modei4" } },
35582 .unused,35524 .unused,
35583 .unused,35525 .unused,
35584 .unused,35526 .unused,
...@@ -35657,8 +35599,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -35657,8 +35599,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
35657 },35599 },
35658 .call_frame = .{ .alignment = .@"16" },35600 .call_frame = .{ .alignment = .@"16" },
35659 .extra_temps = .{35601 .extra_temps = .{
35660 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divhf3" } } },35602 .{ .type = .usize, .kind = .{ .extern_func = "__divhf3" } },
35661 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floorh" } } },35603 .{ .type = .usize, .kind = .{ .extern_func = "__floorh" } },
35662 .unused,35604 .unused,
35663 .unused,35605 .unused,
35664 .unused,35606 .unused,
...@@ -35799,8 +35741,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -35799,8 +35741,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
35799 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },35741 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
35800 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },35742 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
35801 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },35743 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
35802 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divhf3" } } },35744 .{ .type = .usize, .kind = .{ .extern_func = "__divhf3" } },
35803 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floorh" } } },35745 .{ .type = .usize, .kind = .{ .extern_func = "__floorh" } },
35804 .unused,35746 .unused,
35805 .unused,35747 .unused,
35806 .unused,35748 .unused,
...@@ -35836,8 +35778,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -35836,8 +35778,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
35836 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },35778 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
35837 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },35779 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
35838 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },35780 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
35839 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divhf3" } } },35781 .{ .type = .usize, .kind = .{ .extern_func = "__divhf3" } },
35840 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floorh" } } },35782 .{ .type = .usize, .kind = .{ .extern_func = "__floorh" } },
35841 .unused,35783 .unused,
35842 .unused,35784 .unused,
35843 .unused,35785 .unused,
...@@ -35874,8 +35816,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -35874,8 +35816,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
35874 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },35816 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
35875 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },35817 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
35876 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },35818 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
35877 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divhf3" } } },35819 .{ .type = .usize, .kind = .{ .extern_func = "__divhf3" } },
35878 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floorh" } } },35820 .{ .type = .usize, .kind = .{ .extern_func = "__floorh" } },
35879 .{ .type = .f16, .kind = .{ .reg = .ax } },35821 .{ .type = .f16, .kind = .{ .reg = .ax } },
35880 .unused,35822 .unused,
35881 .unused,35823 .unused,
...@@ -35915,8 +35857,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -35915,8 +35857,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
35915 .{ .type = .f32, .kind = .mem },35857 .{ .type = .f32, .kind = .mem },
35916 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },35858 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
35917 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },35859 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
35918 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divhf3" } } },35860 .{ .type = .usize, .kind = .{ .extern_func = "__divhf3" } },
35919 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floorh" } } },35861 .{ .type = .usize, .kind = .{ .extern_func = "__floorh" } },
35920 .unused,35862 .unused,
35921 .unused,35863 .unused,
35922 .unused,35864 .unused,
...@@ -35984,7 +35926,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -35984,7 +35926,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
35984 },35926 },
35985 .call_frame = .{ .alignment = .@"16" },35927 .call_frame = .{ .alignment = .@"16" },
35986 .extra_temps = .{35928 .extra_temps = .{
35987 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "floorf" } } },35929 .{ .type = .usize, .kind = .{ .extern_func = "floorf" } },
35988 .unused,35930 .unused,
35989 .unused,35931 .unused,
35990 .unused,35932 .unused,
...@@ -36048,7 +35990,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -36048,7 +35990,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
36048 .extra_temps = .{35990 .extra_temps = .{
36049 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },35991 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
36050 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },35992 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
36051 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "floorf" } } },35993 .{ .type = .usize, .kind = .{ .extern_func = "floorf" } },
36052 .unused,35994 .unused,
36053 .unused,35995 .unused,
36054 .unused,35996 .unused,
...@@ -36197,7 +36139,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -36197,7 +36139,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
36197 },36139 },
36198 .call_frame = .{ .alignment = .@"16" },36140 .call_frame = .{ .alignment = .@"16" },
36199 .extra_temps = .{36141 .extra_temps = .{
36200 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "floor" } } },36142 .{ .type = .usize, .kind = .{ .extern_func = "floor" } },
36201 .unused,36143 .unused,
36202 .unused,36144 .unused,
36203 .unused,36145 .unused,
...@@ -36227,8 +36169,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -36227,8 +36169,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
36227 },36169 },
36228 .call_frame = .{ .alignment = .@"16" },36170 .call_frame = .{ .alignment = .@"16" },
36229 .extra_temps = .{36171 .extra_temps = .{
36230 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divdf3" } } },36172 .{ .type = .usize, .kind = .{ .extern_func = "__divdf3" } },
36231 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "floor" } } },36173 .{ .type = .usize, .kind = .{ .extern_func = "floor" } },
36232 .unused,36174 .unused,
36233 .unused,36175 .unused,
36234 .unused,36176 .unused,
...@@ -36375,7 +36317,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -36375,7 +36317,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
36375 .extra_temps = .{36317 .extra_temps = .{
36376 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },36318 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
36377 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },36319 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
36378 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "floor" } } },36320 .{ .type = .usize, .kind = .{ .extern_func = "floor" } },
36379 .unused,36321 .unused,
36380 .unused,36322 .unused,
36381 .unused,36323 .unused,
...@@ -36411,8 +36353,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -36411,8 +36353,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
36411 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },36353 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
36412 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },36354 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
36413 .{ .type = .f64, .kind = .{ .reg = .xmm1 } },36355 .{ .type = .f64, .kind = .{ .reg = .xmm1 } },
36414 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divdf3" } } },36356 .{ .type = .usize, .kind = .{ .extern_func = "__divdf3" } },
36415 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "floor" } } },36357 .{ .type = .usize, .kind = .{ .extern_func = "floor" } },
36416 .unused,36358 .unused,
36417 .unused,36359 .unused,
36418 .unused,36360 .unused,
...@@ -36449,7 +36391,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -36449,7 +36391,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
36449 .{ .type = .f80, .kind = .{ .reg = .st6 } },36391 .{ .type = .f80, .kind = .{ .reg = .st6 } },
36450 .{ .type = .f80, .kind = .{ .reg = .st7 } },36392 .{ .type = .f80, .kind = .{ .reg = .st7 } },
36451 .{ .type = .f80, .kind = .{ .frame = .call_frame } },36393 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
36452 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floorx" } } },36394 .{ .type = .usize, .kind = .{ .extern_func = "__floorx" } },
36453 .unused,36395 .unused,
36454 .unused,36396 .unused,
36455 .unused,36397 .unused,
...@@ -36483,7 +36425,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -36483,7 +36425,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
36483 .{ .type = .f80, .kind = .{ .reg = .st6 } },36425 .{ .type = .f80, .kind = .{ .reg = .st6 } },
36484 .{ .type = .f80, .kind = .{ .reg = .st7 } },36426 .{ .type = .f80, .kind = .{ .reg = .st7 } },
36485 .{ .type = .f80, .kind = .{ .frame = .call_frame } },36427 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
36486 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floorx" } } },36428 .{ .type = .usize, .kind = .{ .extern_func = "__floorx" } },
36487 .unused,36429 .unused,
36488 .unused,36430 .unused,
36489 .unused,36431 .unused,
...@@ -36517,8 +36459,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -36517,8 +36459,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
36517 },36459 },
36518 .call_frame = .{ .alignment = .@"16" },36460 .call_frame = .{ .alignment = .@"16" },
36519 .extra_temps = .{36461 .extra_temps = .{
36520 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divtf3" } } },36462 .{ .type = .usize, .kind = .{ .extern_func = "__divtf3" } },
36521 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "floorq" } } },36463 .{ .type = .usize, .kind = .{ .extern_func = "floorq" } },
36522 .unused,36464 .unused,
36523 .unused,36465 .unused,
36524 .unused,36466 .unused,
...@@ -36550,8 +36492,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -36550,8 +36492,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
36550 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },36492 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
36551 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },36493 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
36552 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },36494 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
36553 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divtf3" } } },36495 .{ .type = .usize, .kind = .{ .extern_func = "__divtf3" } },
36554 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "floorq" } } },36496 .{ .type = .usize, .kind = .{ .extern_func = "floorq" } },
36555 .unused,36497 .unused,
36556 .unused,36498 .unused,
36557 .unused,36499 .unused,
...@@ -36586,8 +36528,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -36586,8 +36528,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
36586 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },36528 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
36587 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },36529 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
36588 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },36530 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
36589 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divtf3" } } },36531 .{ .type = .usize, .kind = .{ .extern_func = "__divtf3" } },
36590 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "floorq" } } },36532 .{ .type = .usize, .kind = .{ .extern_func = "floorq" } },
36591 .unused,36533 .unused,
36592 .unused,36534 .unused,
36593 .unused,36535 .unused,
...@@ -36622,8 +36564,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -36622,8 +36564,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
36622 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },36564 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
36623 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },36565 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
36624 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },36566 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
36625 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divtf3" } } },36567 .{ .type = .usize, .kind = .{ .extern_func = "__divtf3" } },
36626 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "floorq" } } },36568 .{ .type = .usize, .kind = .{ .extern_func = "floorq" } },
36627 .unused,36569 .unused,
36628 .unused,36570 .unused,
36629 .unused,36571 .unused,
...@@ -36779,7 +36721,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -36779,7 +36721,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
36779 },36721 },
36780 .call_frame = .{ .alignment = .@"16" },36722 .call_frame = .{ .alignment = .@"16" },
36781 .extra_temps = .{36723 .extra_temps = .{
36782 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__modti3" } } },36724 .{ .type = .usize, .kind = .{ .extern_func = "__modti3" } },
36783 .unused,36725 .unused,
36784 .unused,36726 .unused,
36785 .unused,36727 .unused,
...@@ -36808,7 +36750,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -36808,7 +36750,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
36808 },36750 },
36809 .call_frame = .{ .alignment = .@"16" },36751 .call_frame = .{ .alignment = .@"16" },
36810 .extra_temps = .{36752 .extra_temps = .{
36811 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__umodti3" } } },36753 .{ .type = .usize, .kind = .{ .extern_func = "__umodti3" } },
36812 .unused,36754 .unused,
36813 .unused,36755 .unused,
36814 .unused,36756 .unused,
...@@ -36841,7 +36783,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -36841,7 +36783,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
36841 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 1 } } },36783 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 1 } } },
36842 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 2 } } },36784 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 2 } } },
36843 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 3 } } },36785 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 3 } } },
36844 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__modei4" } } },36786 .{ .type = .usize, .kind = .{ .extern_func = "__modei4" } },
36845 .unused,36787 .unused,
36846 .unused,36788 .unused,
36847 .unused,36789 .unused,
...@@ -36874,7 +36816,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -36874,7 +36816,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
36874 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 1 } } },36816 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 1 } } },
36875 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 2 } } },36817 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 2 } } },
36876 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 3 } } },36818 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 3 } } },
36877 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__umodei4" } } },36819 .{ .type = .usize, .kind = .{ .extern_func = "__umodei4" } },
36878 .unused,36820 .unused,
36879 .unused,36821 .unused,
36880 .unused,36822 .unused,
...@@ -37238,7 +37180,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -37238,7 +37180,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
37238 .{ .type = .i64, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 1 } } },37180 .{ .type = .i64, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 1 } } },
37239 .{ .type = .u64, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 2 } } },37181 .{ .type = .u64, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 2 } } },
37240 .{ .type = .i64, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 3 } } },37182 .{ .type = .i64, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 3 } } },
37241 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__modti3" } } },37183 .{ .type = .usize, .kind = .{ .extern_func = "__modti3" } },
37242 .{ .type = .u64, .kind = .{ .ret_gpr = .{ .cc = .ccc, .at = 0 } } },37184 .{ .type = .u64, .kind = .{ .ret_gpr = .{ .cc = .ccc, .at = 0 } } },
37243 .unused,37185 .unused,
37244 .unused,37186 .unused,
...@@ -37276,7 +37218,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -37276,7 +37218,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
37276 .{ .type = .u64, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 1 } } },37218 .{ .type = .u64, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 1 } } },
37277 .{ .type = .u64, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 2 } } },37219 .{ .type = .u64, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 2 } } },
37278 .{ .type = .u64, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 3 } } },37220 .{ .type = .u64, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 3 } } },
37279 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__umodti3" } } },37221 .{ .type = .usize, .kind = .{ .extern_func = "__umodti3" } },
37280 .{ .type = .u64, .kind = .{ .ret_gpr = .{ .cc = .ccc, .at = 0 } } },37222 .{ .type = .u64, .kind = .{ .ret_gpr = .{ .cc = .ccc, .at = 0 } } },
37281 .unused,37223 .unused,
37282 .unused,37224 .unused,
...@@ -37314,7 +37256,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -37314,7 +37256,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
37314 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 1 } } },37256 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 1 } } },
37315 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 2 } } },37257 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 2 } } },
37316 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 3 } } },37258 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 3 } } },
37317 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__modei4" } } },37259 .{ .type = .usize, .kind = .{ .extern_func = "__modei4" } },
37318 .unused,37260 .unused,
37319 .unused,37261 .unused,
37320 .unused,37262 .unused,
...@@ -37350,7 +37292,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -37350,7 +37292,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
37350 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 1 } } },37292 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 1 } } },
37351 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 2 } } },37293 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 2 } } },
37352 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 3 } } },37294 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 3 } } },
37353 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__umodei4" } } },37295 .{ .type = .usize, .kind = .{ .extern_func = "__umodei4" } },
37354 .unused,37296 .unused,
37355 .unused,37297 .unused,
37356 .unused,37298 .unused,
...@@ -37381,7 +37323,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -37381,7 +37323,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
37381 },37323 },
37382 .call_frame = .{ .alignment = .@"16" },37324 .call_frame = .{ .alignment = .@"16" },
37383 .extra_temps = .{37325 .extra_temps = .{
37384 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodh" } } },37326 .{ .type = .usize, .kind = .{ .extern_func = "__fmodh" } },
37385 .unused,37327 .unused,
37386 .unused,37328 .unused,
37387 .unused,37329 .unused,
...@@ -37413,7 +37355,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -37413,7 +37355,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
37413 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },37355 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
37414 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },37356 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
37415 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },37357 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
37416 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodh" } } },37358 .{ .type = .usize, .kind = .{ .extern_func = "__fmodh" } },
37417 .unused,37359 .unused,
37418 .unused,37360 .unused,
37419 .unused,37361 .unused,
...@@ -37449,7 +37391,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -37449,7 +37391,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
37449 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },37391 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
37450 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },37392 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
37451 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },37393 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
37452 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodh" } } },37394 .{ .type = .usize, .kind = .{ .extern_func = "__fmodh" } },
37453 .unused,37395 .unused,
37454 .unused,37396 .unused,
37455 .unused,37397 .unused,
...@@ -37486,7 +37428,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -37486,7 +37428,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
37486 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },37428 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
37487 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },37429 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
37488 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },37430 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
37489 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodh" } } },37431 .{ .type = .usize, .kind = .{ .extern_func = "__fmodh" } },
37490 .{ .type = .f16, .kind = .{ .reg = .ax } },37432 .{ .type = .f16, .kind = .{ .reg = .ax } },
37491 .unused,37433 .unused,
37492 .unused,37434 .unused,
...@@ -37526,7 +37468,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -37526,7 +37468,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
37526 .{ .type = .f32, .kind = .mem },37468 .{ .type = .f32, .kind = .mem },
37527 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },37469 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
37528 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },37470 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
37529 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodh" } } },37471 .{ .type = .usize, .kind = .{ .extern_func = "__fmodh" } },
37530 .unused,37472 .unused,
37531 .unused,37473 .unused,
37532 .unused,37474 .unused,
...@@ -37562,7 +37504,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -37562,7 +37504,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
37562 },37504 },
37563 .call_frame = .{ .alignment = .@"16" },37505 .call_frame = .{ .alignment = .@"16" },
37564 .extra_temps = .{37506 .extra_temps = .{
37565 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmodf" } } },37507 .{ .type = .usize, .kind = .{ .extern_func = "fmodf" } },
37566 .unused,37508 .unused,
37567 .unused,37509 .unused,
37568 .unused,37510 .unused,
...@@ -37594,7 +37536,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -37594,7 +37536,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
37594 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },37536 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
37595 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },37537 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
37596 .{ .type = .f32, .kind = .{ .reg = .xmm1 } },37538 .{ .type = .f32, .kind = .{ .reg = .xmm1 } },
37597 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmodf" } } },37539 .{ .type = .usize, .kind = .{ .extern_func = "fmodf" } },
37598 .unused,37540 .unused,
37599 .unused,37541 .unused,
37600 .unused,37542 .unused,
...@@ -37629,7 +37571,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -37629,7 +37571,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
37629 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },37571 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
37630 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },37572 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
37631 .{ .type = .f32, .kind = .{ .reg = .xmm1 } },37573 .{ .type = .f32, .kind = .{ .reg = .xmm1 } },
37632 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmodf" } } },37574 .{ .type = .usize, .kind = .{ .extern_func = "fmodf" } },
37633 .unused,37575 .unused,
37634 .unused,37576 .unused,
37635 .unused,37577 .unused,
...@@ -37661,7 +37603,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -37661,7 +37603,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
37661 },37603 },
37662 .call_frame = .{ .alignment = .@"16" },37604 .call_frame = .{ .alignment = .@"16" },
37663 .extra_temps = .{37605 .extra_temps = .{
37664 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmod" } } },37606 .{ .type = .usize, .kind = .{ .extern_func = "fmod" } },
37665 .unused,37607 .unused,
37666 .unused,37608 .unused,
37667 .unused,37609 .unused,
...@@ -37693,7 +37635,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -37693,7 +37635,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
37693 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },37635 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
37694 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },37636 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
37695 .{ .type = .f64, .kind = .{ .reg = .xmm1 } },37637 .{ .type = .f64, .kind = .{ .reg = .xmm1 } },
37696 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmod" } } },37638 .{ .type = .usize, .kind = .{ .extern_func = "fmod" } },
37697 .unused,37639 .unused,
37698 .unused,37640 .unused,
37699 .unused,37641 .unused,
...@@ -37728,7 +37670,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -37728,7 +37670,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
37728 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },37670 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
37729 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },37671 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
37730 .{ .type = .f64, .kind = .{ .reg = .xmm1 } },37672 .{ .type = .f64, .kind = .{ .reg = .xmm1 } },
37731 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmod" } } },37673 .{ .type = .usize, .kind = .{ .extern_func = "fmod" } },
37732 .unused,37674 .unused,
37733 .unused,37675 .unused,
37734 .unused,37676 .unused,
...@@ -37763,7 +37705,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -37763,7 +37705,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
37763 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },37705 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
37764 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },37706 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
37765 .{ .type = .f64, .kind = .{ .reg = .xmm1 } },37707 .{ .type = .f64, .kind = .{ .reg = .xmm1 } },
37766 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmod" } } },37708 .{ .type = .usize, .kind = .{ .extern_func = "fmod" } },
37767 .unused,37709 .unused,
37768 .unused,37710 .unused,
37769 .unused,37711 .unused,
...@@ -37799,7 +37741,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -37799,7 +37741,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
37799 .extra_temps = .{37741 .extra_temps = .{
37800 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },37742 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
37801 .{ .type = .f80, .kind = .{ .frame = .call_frame } },37743 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
37802 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodx" } } },37744 .{ .type = .usize, .kind = .{ .extern_func = "__fmodx" } },
37803 .unused,37745 .unused,
37804 .unused,37746 .unused,
37805 .unused,37747 .unused,
...@@ -37832,7 +37774,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -37832,7 +37774,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
37832 .extra_temps = .{37774 .extra_temps = .{
37833 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },37775 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
37834 .{ .type = .f80, .kind = .{ .frame = .call_frame } },37776 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
37835 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodx" } } },37777 .{ .type = .usize, .kind = .{ .extern_func = "__fmodx" } },
37836 .unused,37778 .unused,
37837 .unused,37779 .unused,
37838 .unused,37780 .unused,
...@@ -37865,7 +37807,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -37865,7 +37807,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
37865 .extra_temps = .{37807 .extra_temps = .{
37866 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },37808 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
37867 .{ .type = .f80, .kind = .{ .frame = .call_frame } },37809 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
37868 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodx" } } },37810 .{ .type = .usize, .kind = .{ .extern_func = "__fmodx" } },
37869 .unused,37811 .unused,
37870 .unused,37812 .unused,
37871 .unused,37813 .unused,
...@@ -37899,7 +37841,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -37899,7 +37841,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
37899 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },37841 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
37900 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },37842 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
37901 .{ .type = .f80, .kind = .{ .frame = .call_frame } },37843 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
37902 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodx" } } },37844 .{ .type = .usize, .kind = .{ .extern_func = "__fmodx" } },
37903 .unused,37845 .unused,
37904 .unused,37846 .unused,
37905 .unused,37847 .unused,
...@@ -37937,7 +37879,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -37937,7 +37879,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
37937 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },37879 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
37938 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },37880 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
37939 .{ .type = .f80, .kind = .{ .frame = .call_frame } },37881 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
37940 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodx" } } },37882 .{ .type = .usize, .kind = .{ .extern_func = "__fmodx" } },
37941 .unused,37883 .unused,
37942 .unused,37884 .unused,
37943 .unused,37885 .unused,
...@@ -37975,7 +37917,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -37975,7 +37917,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
37975 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },37917 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
37976 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },37918 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
37977 .{ .type = .f80, .kind = .{ .frame = .call_frame } },37919 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
37978 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodx" } } },37920 .{ .type = .usize, .kind = .{ .extern_func = "__fmodx" } },
37979 .unused,37921 .unused,
37980 .unused,37922 .unused,
37981 .unused,37923 .unused,
...@@ -38010,7 +37952,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -38010,7 +37952,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
38010 },37952 },
38011 .call_frame = .{ .alignment = .@"16" },37953 .call_frame = .{ .alignment = .@"16" },
38012 .extra_temps = .{37954 .extra_temps = .{
38013 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmodq" } } },37955 .{ .type = .usize, .kind = .{ .extern_func = "fmodq" } },
38014 .unused,37956 .unused,
38015 .unused,37957 .unused,
38016 .unused,37958 .unused,
...@@ -38042,7 +37984,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -38042,7 +37984,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
38042 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },37984 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
38043 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },37985 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
38044 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },37986 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
38045 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmodq" } } },37987 .{ .type = .usize, .kind = .{ .extern_func = "fmodq" } },
38046 .unused,37988 .unused,
38047 .unused,37989 .unused,
38048 .unused,37990 .unused,
...@@ -38077,7 +38019,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -38077,7 +38019,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
38077 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },38019 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
38078 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },38020 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
38079 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },38021 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
38080 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmodq" } } },38022 .{ .type = .usize, .kind = .{ .extern_func = "fmodq" } },
38081 .unused,38023 .unused,
38082 .unused,38024 .unused,
38083 .unused,38025 .unused,
...@@ -38112,7 +38054,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -38112,7 +38054,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
38112 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },38054 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
38113 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },38055 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
38114 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },38056 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
38115 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmodq" } } },38057 .{ .type = .usize, .kind = .{ .extern_func = "fmodq" } },
38116 .unused,38058 .unused,
38117 .unused,38059 .unused,
38118 .unused,38060 .unused,
...@@ -38447,7 +38389,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -38447,7 +38389,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
38447 .call_frame = .{ .alignment = .@"16" },38389 .call_frame = .{ .alignment = .@"16" },
38448 .extra_temps = .{38390 .extra_temps = .{
38449 .{ .type = .i64, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 3 } } },38391 .{ .type = .i64, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 3 } } },
38450 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__modti3" } } },38392 .{ .type = .usize, .kind = .{ .extern_func = "__modti3" } },
38451 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },38393 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
38452 .unused,38394 .unused,
38453 .unused,38395 .unused,
...@@ -38486,7 +38428,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -38486,7 +38428,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
38486 .call_frame = .{ .alignment = .@"16" },38428 .call_frame = .{ .alignment = .@"16" },
38487 .extra_temps = .{38429 .extra_temps = .{
38488 .{ .type = .i64, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 3 } } },38430 .{ .type = .i64, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 3 } } },
38489 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__modti3" } } },38431 .{ .type = .usize, .kind = .{ .extern_func = "__modti3" } },
38490 .unused,38432 .unused,
38491 .unused,38433 .unused,
38492 .unused,38434 .unused,
...@@ -38526,7 +38468,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -38526,7 +38468,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
38526 },38468 },
38527 .call_frame = .{ .alignment = .@"16" },38469 .call_frame = .{ .alignment = .@"16" },
38528 .extra_temps = .{38470 .extra_temps = .{
38529 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__umodti3" } } },38471 .{ .type = .usize, .kind = .{ .extern_func = "__umodti3" } },
38530 .unused,38472 .unused,
38531 .unused,38473 .unused,
38532 .unused,38474 .unused,
...@@ -38560,7 +38502,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -38560,7 +38502,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
38560 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 2 } } },38502 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 2 } } },
38561 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 3 } } },38503 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 3 } } },
38562 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },38504 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
38563 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__modei4" } } },38505 .{ .type = .usize, .kind = .{ .extern_func = "__modei4" } },
38564 .unused,38506 .unused,
38565 .unused,38507 .unused,
38566 .unused,38508 .unused,
...@@ -38617,7 +38559,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -38617,7 +38559,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
38617 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 1 } } },38559 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 1 } } },
38618 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 2 } } },38560 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 2 } } },
38619 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 3 } } },38561 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 3 } } },
38620 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__umodei4" } } },38562 .{ .type = .usize, .kind = .{ .extern_func = "__umodei4" } },
38621 .unused,38563 .unused,
38622 .unused,38564 .unused,
38623 .unused,38565 .unused,
...@@ -38647,7 +38589,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -38647,7 +38589,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
38647 .call_frame = .{ .alignment = .@"16" },38589 .call_frame = .{ .alignment = .@"16" },
38648 .extra_temps = .{38590 .extra_temps = .{
38649 .{ .type = .f16, .kind = .{ .rc = .general_purpose } },38591 .{ .type = .f16, .kind = .{ .rc = .general_purpose } },
38650 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodh" } } },38592 .{ .type = .usize, .kind = .{ .extern_func = "__fmodh" } },
38651 .{ .type = .f16, .kind = .{ .reg = .dx } },38593 .{ .type = .f16, .kind = .{ .reg = .dx } },
38652 .{ .type = .f16, .kind = .{ .reg = .ax } },38594 .{ .type = .f16, .kind = .{ .reg = .ax } },
38653 .unused,38595 .unused,
...@@ -38688,7 +38630,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -38688,7 +38630,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
38688 .call_frame = .{ .alignment = .@"16" },38630 .call_frame = .{ .alignment = .@"16" },
38689 .extra_temps = .{38631 .extra_temps = .{
38690 .{ .type = .f16, .kind = .{ .rc = .general_purpose } },38632 .{ .type = .f16, .kind = .{ .rc = .general_purpose } },
38691 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodh" } } },38633 .{ .type = .usize, .kind = .{ .extern_func = "__fmodh" } },
38692 .{ .type = .f16, .kind = .{ .reg = .dx } },38634 .{ .type = .f16, .kind = .{ .reg = .dx } },
38693 .{ .type = .f16, .kind = .{ .reg = .ax } },38635 .{ .type = .f16, .kind = .{ .reg = .ax } },
38694 .unused,38636 .unused,
...@@ -38729,10 +38671,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -38729,10 +38671,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
38729 .call_frame = .{ .alignment = .@"16" },38671 .call_frame = .{ .alignment = .@"16" },
38730 .extra_temps = .{38672 .extra_temps = .{
38731 .{ .type = .f16, .kind = .{ .rc = .general_purpose } },38673 .{ .type = .f16, .kind = .{ .rc = .general_purpose } },
38732 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodh" } } },38674 .{ .type = .usize, .kind = .{ .extern_func = "__fmodh" } },
38733 .{ .type = .f16, .kind = .{ .reg = .dx } },38675 .{ .type = .f16, .kind = .{ .reg = .dx } },
38734 .{ .type = .f16, .kind = .{ .reg = .ax } },38676 .{ .type = .f16, .kind = .{ .reg = .ax } },
38735 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addhf3" } } },38677 .{ .type = .usize, .kind = .{ .extern_func = "__addhf3" } },
38736 .unused,38678 .unused,
38737 .unused,38679 .unused,
38738 .unused,38680 .unused,
...@@ -38767,10 +38709,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -38767,10 +38709,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
38767 .call_frame = .{ .alignment = .@"16" },38709 .call_frame = .{ .alignment = .@"16" },
38768 .extra_temps = .{38710 .extra_temps = .{
38769 .{ .type = .f16, .kind = .{ .rc = .general_purpose } },38711 .{ .type = .f16, .kind = .{ .rc = .general_purpose } },
38770 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodh" } } },38712 .{ .type = .usize, .kind = .{ .extern_func = "__fmodh" } },
38771 .{ .type = .f16, .kind = .{ .reg = .dx } },38713 .{ .type = .f16, .kind = .{ .reg = .dx } },
38772 .{ .type = .f16, .kind = .{ .reg = .ax } },38714 .{ .type = .f16, .kind = .{ .reg = .ax } },
38773 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addhf3" } } },38715 .{ .type = .usize, .kind = .{ .extern_func = "__addhf3" } },
38774 .unused,38716 .unused,
38775 .unused,38717 .unused,
38776 .unused,38718 .unused,
...@@ -38805,10 +38747,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -38805,10 +38747,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
38805 .call_frame = .{ .alignment = .@"16" },38747 .call_frame = .{ .alignment = .@"16" },
38806 .extra_temps = .{38748 .extra_temps = .{
38807 .{ .type = .f16, .kind = .{ .rc = .general_purpose } },38749 .{ .type = .f16, .kind = .{ .rc = .general_purpose } },
38808 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodh" } } },38750 .{ .type = .usize, .kind = .{ .extern_func = "__fmodh" } },
38809 .{ .type = .f16, .kind = .{ .reg = .dx } },38751 .{ .type = .f16, .kind = .{ .reg = .dx } },
38810 .{ .type = .f16, .kind = .{ .reg = .ax } },38752 .{ .type = .f16, .kind = .{ .reg = .ax } },
38811 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addhf3" } } },38753 .{ .type = .usize, .kind = .{ .extern_func = "__addhf3" } },
38812 .unused,38754 .unused,
38813 .unused,38755 .unused,
38814 .unused,38756 .unused,
...@@ -38843,10 +38785,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -38843,10 +38785,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
38843 .call_frame = .{ .alignment = .@"16" },38785 .call_frame = .{ .alignment = .@"16" },
38844 .extra_temps = .{38786 .extra_temps = .{
38845 .{ .type = .f16, .kind = .{ .rc = .general_purpose } },38787 .{ .type = .f16, .kind = .{ .rc = .general_purpose } },
38846 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodh" } } },38788 .{ .type = .usize, .kind = .{ .extern_func = "__fmodh" } },
38847 .{ .type = .f16, .kind = .{ .reg = .dx } },38789 .{ .type = .f16, .kind = .{ .reg = .dx } },
38848 .{ .type = .f16, .kind = .{ .reg = .ax } },38790 .{ .type = .f16, .kind = .{ .reg = .ax } },
38849 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addhf3" } } },38791 .{ .type = .usize, .kind = .{ .extern_func = "__addhf3" } },
38850 .unused,38792 .unused,
38851 .unused,38793 .unused,
38852 .unused,38794 .unused,
...@@ -38881,10 +38823,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -38881,10 +38823,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
38881 .call_frame = .{ .alignment = .@"16" },38823 .call_frame = .{ .alignment = .@"16" },
38882 .extra_temps = .{38824 .extra_temps = .{
38883 .{ .type = .f32, .kind = .mem },38825 .{ .type = .f32, .kind = .mem },
38884 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodh" } } },38826 .{ .type = .usize, .kind = .{ .extern_func = "__fmodh" } },
38885 .{ .type = .f32, .kind = .mem },38827 .{ .type = .f32, .kind = .mem },
38886 .{ .type = .f16, .kind = .{ .reg = .ax } },38828 .{ .type = .f16, .kind = .{ .reg = .ax } },
38887 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addhf3" } } },38829 .{ .type = .usize, .kind = .{ .extern_func = "__addhf3" } },
38888 .unused,38830 .unused,
38889 .unused,38831 .unused,
38890 .unused,38832 .unused,
...@@ -38919,10 +38861,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -38919,10 +38861,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
38919 .call_frame = .{ .alignment = .@"16" },38861 .call_frame = .{ .alignment = .@"16" },
38920 .extra_temps = .{38862 .extra_temps = .{
38921 .{ .type = .f32, .kind = .mem },38863 .{ .type = .f32, .kind = .mem },
38922 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodh" } } },38864 .{ .type = .usize, .kind = .{ .extern_func = "__fmodh" } },
38923 .{ .type = .f32, .kind = .mem },38865 .{ .type = .f32, .kind = .mem },
38924 .{ .type = .f16, .kind = .{ .reg = .ax } },38866 .{ .type = .f16, .kind = .{ .reg = .ax } },
38925 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addhf3" } } },38867 .{ .type = .usize, .kind = .{ .extern_func = "__addhf3" } },
38926 .unused,38868 .unused,
38927 .unused,38869 .unused,
38928 .unused,38870 .unused,
...@@ -38960,7 +38902,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -38960,7 +38902,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
38960 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },38902 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
38961 .{ .type = .f16, .kind = .{ .rc = .general_purpose } },38903 .{ .type = .f16, .kind = .{ .rc = .general_purpose } },
38962 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },38904 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
38963 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodh" } } },38905 .{ .type = .usize, .kind = .{ .extern_func = "__fmodh" } },
38964 .{ .type = .f16, .kind = .{ .reg = .dx } },38906 .{ .type = .f16, .kind = .{ .reg = .dx } },
38965 .{ .type = .f16, .kind = .{ .reg = .ax } },38907 .{ .type = .f16, .kind = .{ .reg = .ax } },
38966 .unused,38908 .unused,
...@@ -39008,7 +38950,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -39008,7 +38950,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
39008 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },38950 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
39009 .{ .type = .f16, .kind = .{ .rc = .general_purpose } },38951 .{ .type = .f16, .kind = .{ .rc = .general_purpose } },
39010 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },38952 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
39011 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodh" } } },38953 .{ .type = .usize, .kind = .{ .extern_func = "__fmodh" } },
39012 .{ .type = .f16, .kind = .{ .reg = .dx } },38954 .{ .type = .f16, .kind = .{ .reg = .dx } },
39013 .{ .type = .f16, .kind = .{ .reg = .ax } },38955 .{ .type = .f16, .kind = .{ .reg = .ax } },
39014 .unused,38956 .unused,
...@@ -39056,10 +38998,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -39056,10 +38998,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
39056 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },38998 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
39057 .{ .type = .f16, .kind = .{ .rc = .general_purpose } },38999 .{ .type = .f16, .kind = .{ .rc = .general_purpose } },
39058 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },39000 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
39059 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodh" } } },39001 .{ .type = .usize, .kind = .{ .extern_func = "__fmodh" } },
39060 .{ .type = .f16, .kind = .{ .reg = .dx } },39002 .{ .type = .f16, .kind = .{ .reg = .dx } },
39061 .{ .type = .f16, .kind = .{ .reg = .ax } },39003 .{ .type = .f16, .kind = .{ .reg = .ax } },
39062 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addhf3" } } },39004 .{ .type = .usize, .kind = .{ .extern_func = "__addhf3" } },
39063 .unused,39005 .unused,
39064 .unused,39006 .unused,
39065 .unused,39007 .unused,
...@@ -39101,10 +39043,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -39101,10 +39043,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
39101 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },39043 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
39102 .{ .type = .f16, .kind = .{ .rc = .general_purpose } },39044 .{ .type = .f16, .kind = .{ .rc = .general_purpose } },
39103 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },39045 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
39104 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodh" } } },39046 .{ .type = .usize, .kind = .{ .extern_func = "__fmodh" } },
39105 .{ .type = .f16, .kind = .{ .reg = .dx } },39047 .{ .type = .f16, .kind = .{ .reg = .dx } },
39106 .{ .type = .f16, .kind = .{ .reg = .ax } },39048 .{ .type = .f16, .kind = .{ .reg = .ax } },
39107 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addhf3" } } },39049 .{ .type = .usize, .kind = .{ .extern_func = "__addhf3" } },
39108 .unused,39050 .unused,
39109 .unused,39051 .unused,
39110 .unused,39052 .unused,
...@@ -39146,10 +39088,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -39146,10 +39088,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
39146 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },39088 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
39147 .{ .type = .f16, .kind = .{ .rc = .general_purpose } },39089 .{ .type = .f16, .kind = .{ .rc = .general_purpose } },
39148 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },39090 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
39149 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodh" } } },39091 .{ .type = .usize, .kind = .{ .extern_func = "__fmodh" } },
39150 .{ .type = .f16, .kind = .{ .reg = .dx } },39092 .{ .type = .f16, .kind = .{ .reg = .dx } },
39151 .{ .type = .f16, .kind = .{ .reg = .ax } },39093 .{ .type = .f16, .kind = .{ .reg = .ax } },
39152 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addhf3" } } },39094 .{ .type = .usize, .kind = .{ .extern_func = "__addhf3" } },
39153 .unused,39095 .unused,
39154 .unused,39096 .unused,
39155 .unused,39097 .unused,
...@@ -39191,10 +39133,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -39191,10 +39133,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
39191 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },39133 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
39192 .{ .type = .f16, .kind = .{ .rc = .general_purpose } },39134 .{ .type = .f16, .kind = .{ .rc = .general_purpose } },
39193 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },39135 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
39194 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodh" } } },39136 .{ .type = .usize, .kind = .{ .extern_func = "__fmodh" } },
39195 .{ .type = .f16, .kind = .{ .reg = .dx } },39137 .{ .type = .f16, .kind = .{ .reg = .dx } },
39196 .{ .type = .f16, .kind = .{ .reg = .ax } },39138 .{ .type = .f16, .kind = .{ .reg = .ax } },
39197 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addhf3" } } },39139 .{ .type = .usize, .kind = .{ .extern_func = "__addhf3" } },
39198 .unused,39140 .unused,
39199 .unused,39141 .unused,
39200 .unused,39142 .unused,
...@@ -39236,10 +39178,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -39236,10 +39178,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
39236 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },39178 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
39237 .{ .type = .f16, .kind = .{ .rc = .general_purpose } },39179 .{ .type = .f16, .kind = .{ .rc = .general_purpose } },
39238 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },39180 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
39239 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodh" } } },39181 .{ .type = .usize, .kind = .{ .extern_func = "__fmodh" } },
39240 .{ .type = .f16, .kind = .{ .reg = .dx } },39182 .{ .type = .f16, .kind = .{ .reg = .dx } },
39241 .{ .type = .f16, .kind = .{ .reg = .ax } },39183 .{ .type = .f16, .kind = .{ .reg = .ax } },
39242 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addhf3" } } },39184 .{ .type = .usize, .kind = .{ .extern_func = "__addhf3" } },
39243 .unused,39185 .unused,
39244 .unused,39186 .unused,
39245 .unused,39187 .unused,
...@@ -39282,10 +39224,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -39282,10 +39224,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
39282 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },39224 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
39283 .{ .type = .f16, .kind = .{ .rc = .general_purpose } },39225 .{ .type = .f16, .kind = .{ .rc = .general_purpose } },
39284 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },39226 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
39285 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodh" } } },39227 .{ .type = .usize, .kind = .{ .extern_func = "__fmodh" } },
39286 .{ .type = .f16, .kind = .{ .reg = .dx } },39228 .{ .type = .f16, .kind = .{ .reg = .dx } },
39287 .{ .type = .f16, .kind = .{ .reg = .ax } },39229 .{ .type = .f16, .kind = .{ .reg = .ax } },
39288 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addhf3" } } },39230 .{ .type = .usize, .kind = .{ .extern_func = "__addhf3" } },
39289 .unused,39231 .unused,
39290 .unused,39232 .unused,
39291 .unused,39233 .unused,
...@@ -39329,9 +39271,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -39329,9 +39271,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
39329 .{ .type = .f32, .kind = .mem },39271 .{ .type = .f32, .kind = .mem },
39330 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },39272 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
39331 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },39273 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
39332 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodh" } } },39274 .{ .type = .usize, .kind = .{ .extern_func = "__fmodh" } },
39333 .{ .type = .f32, .kind = .mem },39275 .{ .type = .f32, .kind = .mem },
39334 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addhf3" } } },39276 .{ .type = .usize, .kind = .{ .extern_func = "__addhf3" } },
39335 .unused,39277 .unused,
39336 .unused,39278 .unused,
39337 .unused,39279 .unused,
...@@ -39378,9 +39320,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -39378,9 +39320,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
39378 .{ .type = .f32, .kind = .mem },39320 .{ .type = .f32, .kind = .mem },
39379 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },39321 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
39380 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },39322 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
39381 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodh" } } },39323 .{ .type = .usize, .kind = .{ .extern_func = "__fmodh" } },
39382 .{ .type = .f32, .kind = .mem },39324 .{ .type = .f32, .kind = .mem },
39383 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addhf3" } } },39325 .{ .type = .usize, .kind = .{ .extern_func = "__addhf3" } },
39384 .unused,39326 .unused,
39385 .unused,39327 .unused,
39386 .unused,39328 .unused,
...@@ -39423,7 +39365,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -39423,7 +39365,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
39423 .call_frame = .{ .alignment = .@"16" },39365 .call_frame = .{ .alignment = .@"16" },
39424 .extra_temps = .{39366 .extra_temps = .{
39425 .{ .type = .f32, .kind = .{ .rc = .general_purpose } },39367 .{ .type = .f32, .kind = .{ .rc = .general_purpose } },
39426 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmodf" } } },39368 .{ .type = .usize, .kind = .{ .extern_func = "fmodf" } },
39427 .{ .type = .f32, .kind = .{ .reg = .edx } },39369 .{ .type = .f32, .kind = .{ .reg = .edx } },
39428 .{ .type = .f32, .kind = .{ .reg = .eax } },39370 .{ .type = .f32, .kind = .{ .reg = .eax } },
39429 .unused,39371 .unused,
...@@ -39461,7 +39403,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -39461,7 +39403,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
39461 .call_frame = .{ .alignment = .@"16" },39403 .call_frame = .{ .alignment = .@"16" },
39462 .extra_temps = .{39404 .extra_temps = .{
39463 .{ .type = .f32, .kind = .{ .rc = .general_purpose } },39405 .{ .type = .f32, .kind = .{ .rc = .general_purpose } },
39464 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmodf" } } },39406 .{ .type = .usize, .kind = .{ .extern_func = "fmodf" } },
39465 .{ .type = .f32, .kind = .{ .reg = .edx } },39407 .{ .type = .f32, .kind = .{ .reg = .edx } },
39466 .{ .type = .f32, .kind = .{ .reg = .eax } },39408 .{ .type = .f32, .kind = .{ .reg = .eax } },
39467 .unused,39409 .unused,
...@@ -39499,7 +39441,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -39499,7 +39441,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
39499 .call_frame = .{ .alignment = .@"16" },39441 .call_frame = .{ .alignment = .@"16" },
39500 .extra_temps = .{39442 .extra_temps = .{
39501 .{ .type = .f32, .kind = .mem },39443 .{ .type = .f32, .kind = .mem },
39502 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmodf" } } },39444 .{ .type = .usize, .kind = .{ .extern_func = "fmodf" } },
39503 .{ .type = .f32, .kind = .mem },39445 .{ .type = .f32, .kind = .mem },
39504 .{ .type = .f32, .kind = .{ .reg = .eax } },39446 .{ .type = .f32, .kind = .{ .reg = .eax } },
39505 .unused,39447 .unused,
...@@ -39539,7 +39481,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -39539,7 +39481,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
39539 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },39481 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
39540 .{ .type = .f32, .kind = .{ .reg = .xmm1 } },39482 .{ .type = .f32, .kind = .{ .reg = .xmm1 } },
39541 .{ .type = .f32, .kind = .{ .rc = .general_purpose } },39483 .{ .type = .f32, .kind = .{ .rc = .general_purpose } },
39542 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmodf" } } },39484 .{ .type = .usize, .kind = .{ .extern_func = "fmodf" } },
39543 .{ .type = .f32, .kind = .{ .reg = .edx } },39485 .{ .type = .f32, .kind = .{ .reg = .edx } },
39544 .{ .type = .f32, .kind = .{ .reg = .eax } },39486 .{ .type = .f32, .kind = .{ .reg = .eax } },
39545 .unused,39487 .unused,
...@@ -39583,7 +39525,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -39583,7 +39525,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
39583 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },39525 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
39584 .{ .type = .f32, .kind = .{ .reg = .xmm1 } },39526 .{ .type = .f32, .kind = .{ .reg = .xmm1 } },
39585 .{ .type = .f32, .kind = .{ .rc = .general_purpose } },39527 .{ .type = .f32, .kind = .{ .rc = .general_purpose } },
39586 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmodf" } } },39528 .{ .type = .usize, .kind = .{ .extern_func = "fmodf" } },
39587 .{ .type = .f32, .kind = .{ .reg = .edx } },39529 .{ .type = .f32, .kind = .{ .reg = .edx } },
39588 .{ .type = .f32, .kind = .{ .reg = .eax } },39530 .{ .type = .f32, .kind = .{ .reg = .eax } },
39589 .unused,39531 .unused,
...@@ -39626,7 +39568,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -39626,7 +39568,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
39626 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },39568 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
39627 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },39569 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
39628 .{ .type = .f32, .kind = .{ .reg = .xmm1 } },39570 .{ .type = .f32, .kind = .{ .reg = .xmm1 } },
39629 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmodf" } } },39571 .{ .type = .usize, .kind = .{ .extern_func = "fmodf" } },
39630 .{ .type = .f32, .kind = .mem },39572 .{ .type = .f32, .kind = .mem },
39631 .{ .type = .f32, .kind = .{ .reg = .eax } },39573 .{ .type = .f32, .kind = .{ .reg = .eax } },
39632 .unused,39574 .unused,
...@@ -39666,7 +39608,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -39666,7 +39608,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
39666 .call_frame = .{ .alignment = .@"16" },39608 .call_frame = .{ .alignment = .@"16" },
39667 .extra_temps = .{39609 .extra_temps = .{
39668 .{ .type = .f64, .kind = .{ .rc = .general_purpose } },39610 .{ .type = .f64, .kind = .{ .rc = .general_purpose } },
39669 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmod" } } },39611 .{ .type = .usize, .kind = .{ .extern_func = "fmod" } },
39670 .{ .type = .f64, .kind = .{ .reg = .rcx } },39612 .{ .type = .f64, .kind = .{ .reg = .rcx } },
39671 .{ .type = .f64, .kind = .{ .reg = .rdx } },39613 .{ .type = .f64, .kind = .{ .reg = .rdx } },
39672 .{ .type = .f64, .kind = .{ .reg = .rax } },39614 .{ .type = .f64, .kind = .{ .reg = .rax } },
...@@ -39705,7 +39647,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -39705,7 +39647,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
39705 .call_frame = .{ .alignment = .@"16" },39647 .call_frame = .{ .alignment = .@"16" },
39706 .extra_temps = .{39648 .extra_temps = .{
39707 .{ .type = .f64, .kind = .{ .rc = .general_purpose } },39649 .{ .type = .f64, .kind = .{ .rc = .general_purpose } },
39708 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmod" } } },39650 .{ .type = .usize, .kind = .{ .extern_func = "fmod" } },
39709 .{ .type = .f64, .kind = .{ .reg = .rcx } },39651 .{ .type = .f64, .kind = .{ .reg = .rcx } },
39710 .{ .type = .f64, .kind = .{ .reg = .rdx } },39652 .{ .type = .f64, .kind = .{ .reg = .rdx } },
39711 .{ .type = .f64, .kind = .{ .reg = .rax } },39653 .{ .type = .f64, .kind = .{ .reg = .rax } },
...@@ -39744,7 +39686,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -39744,7 +39686,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
39744 .call_frame = .{ .alignment = .@"16" },39686 .call_frame = .{ .alignment = .@"16" },
39745 .extra_temps = .{39687 .extra_temps = .{
39746 .{ .type = .f64, .kind = .mem },39688 .{ .type = .f64, .kind = .mem },
39747 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmod" } } },39689 .{ .type = .usize, .kind = .{ .extern_func = "fmod" } },
39748 .{ .type = .f64, .kind = .mem },39690 .{ .type = .f64, .kind = .mem },
39749 .{ .type = .f64, .kind = .{ .reg = .rdx } },39691 .{ .type = .f64, .kind = .{ .reg = .rdx } },
39750 .{ .type = .f64, .kind = .{ .reg = .rax } },39692 .{ .type = .f64, .kind = .{ .reg = .rax } },
...@@ -39789,7 +39731,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -39789,7 +39731,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
39789 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },39731 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
39790 .{ .type = .f64, .kind = .{ .reg = .xmm1 } },39732 .{ .type = .f64, .kind = .{ .reg = .xmm1 } },
39791 .{ .type = .f64, .kind = .{ .rc = .general_purpose } },39733 .{ .type = .f64, .kind = .{ .rc = .general_purpose } },
39792 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmod" } } },39734 .{ .type = .usize, .kind = .{ .extern_func = "fmod" } },
39793 .{ .type = .f64, .kind = .{ .reg = .rcx } },39735 .{ .type = .f64, .kind = .{ .reg = .rcx } },
39794 .{ .type = .f64, .kind = .{ .reg = .rdx } },39736 .{ .type = .f64, .kind = .{ .reg = .rdx } },
39795 .{ .type = .f64, .kind = .{ .reg = .rax } },39737 .{ .type = .f64, .kind = .{ .reg = .rax } },
...@@ -39834,7 +39776,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -39834,7 +39776,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
39834 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },39776 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
39835 .{ .type = .f64, .kind = .{ .reg = .xmm1 } },39777 .{ .type = .f64, .kind = .{ .reg = .xmm1 } },
39836 .{ .type = .f64, .kind = .{ .rc = .general_purpose } },39778 .{ .type = .f64, .kind = .{ .rc = .general_purpose } },
39837 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmod" } } },39779 .{ .type = .usize, .kind = .{ .extern_func = "fmod" } },
39838 .{ .type = .f64, .kind = .{ .reg = .rcx } },39780 .{ .type = .f64, .kind = .{ .reg = .rcx } },
39839 .{ .type = .f64, .kind = .{ .reg = .rdx } },39781 .{ .type = .f64, .kind = .{ .reg = .rdx } },
39840 .{ .type = .f64, .kind = .{ .reg = .rax } },39782 .{ .type = .f64, .kind = .{ .reg = .rax } },
...@@ -39878,7 +39820,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -39878,7 +39820,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
39878 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },39820 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
39879 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },39821 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
39880 .{ .type = .f64, .kind = .{ .reg = .xmm1 } },39822 .{ .type = .f64, .kind = .{ .reg = .xmm1 } },
39881 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmod" } } },39823 .{ .type = .usize, .kind = .{ .extern_func = "fmod" } },
39882 .{ .type = .f64, .kind = .{ .reg = .rdx } },39824 .{ .type = .f64, .kind = .{ .reg = .rdx } },
39883 .{ .type = .f64, .kind = .mem },39825 .{ .type = .f64, .kind = .mem },
39884 .{ .type = .f64, .kind = .{ .reg = .rax } },39826 .{ .type = .f64, .kind = .{ .reg = .rax } },
...@@ -39926,7 +39868,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -39926,7 +39868,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
39926 .extra_temps = .{39868 .extra_temps = .{
39927 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },39869 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
39928 .{ .type = .f80, .kind = .{ .frame = .call_frame } },39870 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
39929 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodx" } } },39871 .{ .type = .usize, .kind = .{ .extern_func = "__fmodx" } },
39930 .{ .type = .f80, .kind = .{ .reg = .st7 } },39872 .{ .type = .f80, .kind = .{ .reg = .st7 } },
39931 .{ .type = .f80, .kind = .{ .reg = .rax } },39873 .{ .type = .f80, .kind = .{ .reg = .rax } },
39932 .unused,39874 .unused,
...@@ -39969,7 +39911,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -39969,7 +39911,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
39969 .extra_temps = .{39911 .extra_temps = .{
39970 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },39912 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
39971 .{ .type = .f80, .kind = .{ .frame = .call_frame } },39913 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
39972 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodx" } } },39914 .{ .type = .usize, .kind = .{ .extern_func = "__fmodx" } },
39973 .{ .type = .f80, .kind = .{ .reg = .st7 } },39915 .{ .type = .f80, .kind = .{ .reg = .st7 } },
39974 .{ .type = .f80, .kind = .{ .reg = .rax } },39916 .{ .type = .f80, .kind = .{ .reg = .rax } },
39975 .unused,39917 .unused,
...@@ -40012,7 +39954,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -40012,7 +39954,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
40012 .extra_temps = .{39954 .extra_temps = .{
40013 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },39955 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
40014 .{ .type = .f80, .kind = .{ .frame = .call_frame } },39956 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
40015 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodx" } } },39957 .{ .type = .usize, .kind = .{ .extern_func = "__fmodx" } },
40016 .{ .type = .f80, .kind = .{ .reg = .st7 } },39958 .{ .type = .f80, .kind = .{ .reg = .st7 } },
40017 .{ .type = .f80, .kind = .{ .reg = .rax } },39959 .{ .type = .f80, .kind = .{ .reg = .rax } },
40018 .unused,39960 .unused,
...@@ -40055,7 +39997,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -40055,7 +39997,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
40055 .extra_temps = .{39997 .extra_temps = .{
40056 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },39998 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
40057 .{ .type = .f80, .kind = .{ .frame = .call_frame } },39999 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
40058 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodx" } } },40000 .{ .type = .usize, .kind = .{ .extern_func = "__fmodx" } },
40059 .{ .type = .f80, .kind = .{ .reg = .st7 } },40001 .{ .type = .f80, .kind = .{ .reg = .st7 } },
40060 .{ .type = .f80, .kind = .{ .reg = .rax } },40002 .{ .type = .f80, .kind = .{ .reg = .rax } },
40061 .unused,40003 .unused,
...@@ -40098,7 +40040,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -40098,7 +40040,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
40098 .extra_temps = .{40040 .extra_temps = .{
40099 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },40041 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
40100 .{ .type = .f80, .kind = .{ .frame = .call_frame } },40042 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
40101 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodx" } } },40043 .{ .type = .usize, .kind = .{ .extern_func = "__fmodx" } },
40102 .{ .type = .f80, .kind = .{ .reg = .st7 } },40044 .{ .type = .f80, .kind = .{ .reg = .st7 } },
40103 .{ .type = .f80, .kind = .{ .reg = .rax } },40045 .{ .type = .f80, .kind = .{ .reg = .rax } },
40104 .unused,40046 .unused,
...@@ -40141,7 +40083,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -40141,7 +40083,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
40141 .extra_temps = .{40083 .extra_temps = .{
40142 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },40084 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
40143 .{ .type = .f80, .kind = .{ .frame = .call_frame } },40085 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
40144 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodx" } } },40086 .{ .type = .usize, .kind = .{ .extern_func = "__fmodx" } },
40145 .{ .type = .f80, .kind = .{ .reg = .st7 } },40087 .{ .type = .f80, .kind = .{ .reg = .st7 } },
40146 .{ .type = .f80, .kind = .{ .reg = .rax } },40088 .{ .type = .f80, .kind = .{ .reg = .rax } },
40147 .unused,40089 .unused,
...@@ -40185,7 +40127,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -40185,7 +40127,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
40185 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },40127 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
40186 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },40128 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
40187 .{ .type = .f80, .kind = .{ .frame = .call_frame } },40129 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
40188 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodx" } } },40130 .{ .type = .usize, .kind = .{ .extern_func = "__fmodx" } },
40189 .{ .type = .f80, .kind = .{ .reg = .st7 } },40131 .{ .type = .f80, .kind = .{ .reg = .st7 } },
40190 .{ .type = .f80, .kind = .{ .reg = .rax } },40132 .{ .type = .f80, .kind = .{ .reg = .rax } },
40191 .unused,40133 .unused,
...@@ -40233,7 +40175,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -40233,7 +40175,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
40233 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },40175 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
40234 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },40176 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
40235 .{ .type = .f80, .kind = .{ .frame = .call_frame } },40177 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
40236 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodx" } } },40178 .{ .type = .usize, .kind = .{ .extern_func = "__fmodx" } },
40237 .{ .type = .f80, .kind = .{ .reg = .st7 } },40179 .{ .type = .f80, .kind = .{ .reg = .st7 } },
40238 .{ .type = .f80, .kind = .{ .reg = .rax } },40180 .{ .type = .f80, .kind = .{ .reg = .rax } },
40239 .unused,40181 .unused,
...@@ -40281,7 +40223,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -40281,7 +40223,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
40281 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },40223 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
40282 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },40224 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
40283 .{ .type = .f80, .kind = .{ .frame = .call_frame } },40225 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
40284 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodx" } } },40226 .{ .type = .usize, .kind = .{ .extern_func = "__fmodx" } },
40285 .{ .type = .f80, .kind = .{ .reg = .st7 } },40227 .{ .type = .f80, .kind = .{ .reg = .st7 } },
40286 .{ .type = .f80, .kind = .{ .reg = .rax } },40228 .{ .type = .f80, .kind = .{ .reg = .rax } },
40287 .unused,40229 .unused,
...@@ -40329,7 +40271,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -40329,7 +40271,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
40329 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },40271 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
40330 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },40272 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
40331 .{ .type = .f80, .kind = .{ .frame = .call_frame } },40273 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
40332 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodx" } } },40274 .{ .type = .usize, .kind = .{ .extern_func = "__fmodx" } },
40333 .{ .type = .f80, .kind = .{ .reg = .st7 } },40275 .{ .type = .f80, .kind = .{ .reg = .st7 } },
40334 .{ .type = .f80, .kind = .{ .reg = .rax } },40276 .{ .type = .f80, .kind = .{ .reg = .rax } },
40335 .unused,40277 .unused,
...@@ -40377,7 +40319,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -40377,7 +40319,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
40377 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },40319 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
40378 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },40320 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
40379 .{ .type = .f80, .kind = .{ .frame = .call_frame } },40321 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
40380 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodx" } } },40322 .{ .type = .usize, .kind = .{ .extern_func = "__fmodx" } },
40381 .{ .type = .f80, .kind = .{ .reg = .st7 } },40323 .{ .type = .f80, .kind = .{ .reg = .st7 } },
40382 .{ .type = .f80, .kind = .{ .reg = .rax } },40324 .{ .type = .f80, .kind = .{ .reg = .rax } },
40383 .unused,40325 .unused,
...@@ -40425,7 +40367,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -40425,7 +40367,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
40425 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },40367 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
40426 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },40368 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
40427 .{ .type = .f80, .kind = .{ .frame = .call_frame } },40369 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
40428 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodx" } } },40370 .{ .type = .usize, .kind = .{ .extern_func = "__fmodx" } },
40429 .{ .type = .f80, .kind = .{ .reg = .st7 } },40371 .{ .type = .f80, .kind = .{ .reg = .st7 } },
40430 .{ .type = .f80, .kind = .{ .reg = .rax } },40372 .{ .type = .f80, .kind = .{ .reg = .rax } },
40431 .unused,40373 .unused,
...@@ -40471,11 +40413,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -40471,11 +40413,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
40471 .call_frame = .{ .alignment = .@"16" },40413 .call_frame = .{ .alignment = .@"16" },
40472 .extra_temps = .{40414 .extra_temps = .{
40473 .{ .type = .f128, .kind = .mem },40415 .{ .type = .f128, .kind = .mem },
40474 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmodq" } } },40416 .{ .type = .usize, .kind = .{ .extern_func = "fmodq" } },
40475 .{ .type = .f128, .kind = .{ .reg = .rcx } },40417 .{ .type = .f128, .kind = .{ .reg = .rcx } },
40476 .{ .type = .f128, .kind = .{ .reg = .rdx } },40418 .{ .type = .f128, .kind = .{ .reg = .rdx } },
40477 .{ .type = .f128, .kind = .{ .reg = .rax } },40419 .{ .type = .f128, .kind = .{ .reg = .rax } },
40478 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addtf3" } } },40420 .{ .type = .usize, .kind = .{ .extern_func = "__addtf3" } },
40479 .unused,40421 .unused,
40480 .unused,40422 .unused,
40481 .unused,40423 .unused,
...@@ -40512,11 +40454,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -40512,11 +40454,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
40512 .call_frame = .{ .alignment = .@"16" },40454 .call_frame = .{ .alignment = .@"16" },
40513 .extra_temps = .{40455 .extra_temps = .{
40514 .{ .type = .f128, .kind = .mem },40456 .{ .type = .f128, .kind = .mem },
40515 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmodq" } } },40457 .{ .type = .usize, .kind = .{ .extern_func = "fmodq" } },
40516 .{ .type = .f128, .kind = .{ .reg = .rcx } },40458 .{ .type = .f128, .kind = .{ .reg = .rcx } },
40517 .{ .type = .f128, .kind = .{ .reg = .rdx } },40459 .{ .type = .f128, .kind = .{ .reg = .rdx } },
40518 .{ .type = .f128, .kind = .{ .reg = .rax } },40460 .{ .type = .f128, .kind = .{ .reg = .rax } },
40519 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addtf3" } } },40461 .{ .type = .usize, .kind = .{ .extern_func = "__addtf3" } },
40520 .unused,40462 .unused,
40521 .unused,40463 .unused,
40522 .unused,40464 .unused,
...@@ -40553,11 +40495,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -40553,11 +40495,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
40553 .call_frame = .{ .alignment = .@"16" },40495 .call_frame = .{ .alignment = .@"16" },
40554 .extra_temps = .{40496 .extra_temps = .{
40555 .{ .type = .f128, .kind = .mem },40497 .{ .type = .f128, .kind = .mem },
40556 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmodq" } } },40498 .{ .type = .usize, .kind = .{ .extern_func = "fmodq" } },
40557 .{ .type = .f128, .kind = .{ .reg = .rcx } },40499 .{ .type = .f128, .kind = .{ .reg = .rcx } },
40558 .{ .type = .f128, .kind = .{ .reg = .rdx } },40500 .{ .type = .f128, .kind = .{ .reg = .rdx } },
40559 .{ .type = .f128, .kind = .{ .reg = .rax } },40501 .{ .type = .f128, .kind = .{ .reg = .rax } },
40560 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addtf3" } } },40502 .{ .type = .usize, .kind = .{ .extern_func = "__addtf3" } },
40561 .unused,40503 .unused,
40562 .unused,40504 .unused,
40563 .unused,40505 .unused,
...@@ -40595,11 +40537,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -40595,11 +40537,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
40595 .call_frame = .{ .alignment = .@"16" },40537 .call_frame = .{ .alignment = .@"16" },
40596 .extra_temps = .{40538 .extra_temps = .{
40597 .{ .type = .f128, .kind = .mem },40539 .{ .type = .f128, .kind = .mem },
40598 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmodq" } } },40540 .{ .type = .usize, .kind = .{ .extern_func = "fmodq" } },
40599 .{ .type = .f128, .kind = .{ .reg = .rdx } },40541 .{ .type = .f128, .kind = .{ .reg = .rdx } },
40600 .{ .type = .f128, .kind = .mem },40542 .{ .type = .f128, .kind = .mem },
40601 .{ .type = .f128, .kind = .{ .reg = .rax } },40543 .{ .type = .f128, .kind = .{ .reg = .rax } },
40602 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addtf3" } } },40544 .{ .type = .usize, .kind = .{ .extern_func = "__addtf3" } },
40603 .unused,40545 .unused,
40604 .unused,40546 .unused,
40605 .unused,40547 .unused,
...@@ -40637,11 +40579,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -40637,11 +40579,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
40637 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },40579 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
40638 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },40580 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
40639 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },40581 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
40640 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmodq" } } },40582 .{ .type = .usize, .kind = .{ .extern_func = "fmodq" } },
40641 .{ .type = .f128, .kind = .{ .reg = .rcx } },40583 .{ .type = .f128, .kind = .{ .reg = .rcx } },
40642 .{ .type = .f128, .kind = .{ .reg = .rdx } },40584 .{ .type = .f128, .kind = .{ .reg = .rdx } },
40643 .{ .type = .f128, .kind = .{ .reg = .rax } },40585 .{ .type = .f128, .kind = .{ .reg = .rax } },
40644 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addtf3" } } },40586 .{ .type = .usize, .kind = .{ .extern_func = "__addtf3" } },
40645 .unused,40587 .unused,
40646 .unused,40588 .unused,
40647 .unused,40589 .unused,
...@@ -40683,11 +40625,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -40683,11 +40625,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
40683 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },40625 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
40684 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },40626 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
40685 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },40627 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
40686 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmodq" } } },40628 .{ .type = .usize, .kind = .{ .extern_func = "fmodq" } },
40687 .{ .type = .f128, .kind = .{ .reg = .rcx } },40629 .{ .type = .f128, .kind = .{ .reg = .rcx } },
40688 .{ .type = .f128, .kind = .{ .reg = .rdx } },40630 .{ .type = .f128, .kind = .{ .reg = .rdx } },
40689 .{ .type = .f128, .kind = .{ .reg = .rax } },40631 .{ .type = .f128, .kind = .{ .reg = .rax } },
40690 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addtf3" } } },40632 .{ .type = .usize, .kind = .{ .extern_func = "__addtf3" } },
40691 .unused,40633 .unused,
40692 .unused,40634 .unused,
40693 .unused,40635 .unused,
...@@ -40729,11 +40671,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -40729,11 +40671,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
40729 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },40671 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
40730 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },40672 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
40731 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },40673 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
40732 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmodq" } } },40674 .{ .type = .usize, .kind = .{ .extern_func = "fmodq" } },
40733 .{ .type = .f128, .kind = .{ .reg = .rcx } },40675 .{ .type = .f128, .kind = .{ .reg = .rcx } },
40734 .{ .type = .f128, .kind = .{ .reg = .rdx } },40676 .{ .type = .f128, .kind = .{ .reg = .rdx } },
40735 .{ .type = .f128, .kind = .{ .reg = .rax } },40677 .{ .type = .f128, .kind = .{ .reg = .rax } },
40736 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addtf3" } } },40678 .{ .type = .usize, .kind = .{ .extern_func = "__addtf3" } },
40737 .unused,40679 .unused,
40738 .unused,40680 .unused,
40739 .unused,40681 .unused,
...@@ -40776,11 +40718,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -40776,11 +40718,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
40776 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },40718 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
40777 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },40719 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
40778 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },40720 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
40779 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmodq" } } },40721 .{ .type = .usize, .kind = .{ .extern_func = "fmodq" } },
40780 .{ .type = .f128, .kind = .{ .reg = .rdx } },40722 .{ .type = .f128, .kind = .{ .reg = .rdx } },
40781 .{ .type = .f128, .kind = .mem },40723 .{ .type = .f128, .kind = .mem },
40782 .{ .type = .f128, .kind = .{ .reg = .rax } },40724 .{ .type = .f128, .kind = .{ .reg = .rax } },
40783 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addtf3" } } },40725 .{ .type = .usize, .kind = .{ .extern_func = "__addtf3" } },
40784 .unused,40726 .unused,
40785 .unused,40727 .unused,
40786 .unused,40728 .unused,
...@@ -43870,7 +43812,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -43870,7 +43812,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
43870 },43812 },
43871 .call_frame = .{ .alignment = .@"16" },43813 .call_frame = .{ .alignment = .@"16" },
43872 .extra_temps = .{43814 .extra_temps = .{
43873 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmaxh" } } },43815 .{ .type = .usize, .kind = .{ .extern_func = "__fmaxh" } },
43874 .unused,43816 .unused,
43875 .unused,43817 .unused,
43876 .unused,43818 .unused,
...@@ -44008,7 +43950,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -44008,7 +43950,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
44008 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },43950 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
44009 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },43951 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
44010 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },43952 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
44011 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmaxh" } } },43953 .{ .type = .usize, .kind = .{ .extern_func = "__fmaxh" } },
44012 .unused,43954 .unused,
44013 .unused,43955 .unused,
44014 .unused,43956 .unused,
...@@ -44044,7 +43986,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -44044,7 +43986,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
44044 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },43986 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
44045 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },43987 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
44046 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },43988 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
44047 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmaxh" } } },43989 .{ .type = .usize, .kind = .{ .extern_func = "__fmaxh" } },
44048 .unused,43990 .unused,
44049 .unused,43991 .unused,
44050 .unused,43992 .unused,
...@@ -44081,7 +44023,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -44081,7 +44023,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
44081 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },44023 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
44082 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },44024 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
44083 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },44025 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
44084 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmaxh" } } },44026 .{ .type = .usize, .kind = .{ .extern_func = "__fmaxh" } },
44085 .{ .type = .f16, .kind = .{ .reg = .ax } },44027 .{ .type = .f16, .kind = .{ .reg = .ax } },
44086 .unused,44028 .unused,
44087 .unused,44029 .unused,
...@@ -44121,7 +44063,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -44121,7 +44063,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
44121 .{ .type = .f32, .kind = .mem },44063 .{ .type = .f32, .kind = .mem },
44122 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },44064 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
44123 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },44065 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
44124 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmaxh" } } },44066 .{ .type = .usize, .kind = .{ .extern_func = "__fmaxh" } },
44125 .unused,44067 .unused,
44126 .unused,44068 .unused,
44127 .unused,44069 .unused,
...@@ -44536,7 +44478,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -44536,7 +44478,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
44536 },44478 },
44537 .call_frame = .{ .alignment = .@"16" },44479 .call_frame = .{ .alignment = .@"16" },
44538 .extra_temps = .{44480 .extra_temps = .{
44539 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmax" } } },44481 .{ .type = .usize, .kind = .{ .extern_func = "fmax" } },
44540 .unused,44482 .unused,
44541 .unused,44483 .unused,
44542 .unused,44484 .unused,
...@@ -44791,7 +44733,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -44791,7 +44733,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
44791 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },44733 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
44792 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },44734 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
44793 .{ .type = .f64, .kind = .{ .reg = .xmm1 } },44735 .{ .type = .f64, .kind = .{ .reg = .xmm1 } },
44794 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmax" } } },44736 .{ .type = .usize, .kind = .{ .extern_func = "fmax" } },
44795 .unused,44737 .unused,
44796 .unused,44738 .unused,
44797 .unused,44739 .unused,
...@@ -45080,7 +45022,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -45080,7 +45022,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
45080 },45022 },
45081 .call_frame = .{ .alignment = .@"16" },45023 .call_frame = .{ .alignment = .@"16" },
45082 .extra_temps = .{45024 .extra_temps = .{
45083 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmaxq" } } },45025 .{ .type = .usize, .kind = .{ .extern_func = "fmaxq" } },
45084 .unused,45026 .unused,
45085 .unused,45027 .unused,
45086 .unused,45028 .unused,
...@@ -45112,7 +45054,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -45112,7 +45054,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
45112 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },45054 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
45113 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },45055 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
45114 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },45056 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
45115 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmaxq" } } },45057 .{ .type = .usize, .kind = .{ .extern_func = "fmaxq" } },
45116 .unused,45058 .unused,
45117 .unused,45059 .unused,
45118 .unused,45060 .unused,
...@@ -45147,7 +45089,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -45147,7 +45089,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
45147 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },45089 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
45148 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },45090 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
45149 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },45091 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
45150 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmaxq" } } },45092 .{ .type = .usize, .kind = .{ .extern_func = "fmaxq" } },
45151 .unused,45093 .unused,
45152 .unused,45094 .unused,
45153 .unused,45095 .unused,
...@@ -45182,7 +45124,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -45182,7 +45124,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
45182 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },45124 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
45183 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },45125 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
45184 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },45126 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
45185 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmaxq" } } },45127 .{ .type = .usize, .kind = .{ .extern_func = "fmaxq" } },
45186 .unused,45128 .unused,
45187 .unused,45129 .unused,
45188 .unused,45130 .unused,
...@@ -48029,7 +47971,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -48029,7 +47971,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
48029 },47971 },
48030 .call_frame = .{ .alignment = .@"16" },47972 .call_frame = .{ .alignment = .@"16" },
48031 .extra_temps = .{47973 .extra_temps = .{
48032 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fminh" } } },47974 .{ .type = .usize, .kind = .{ .extern_func = "__fminh" } },
48033 .unused,47975 .unused,
48034 .unused,47976 .unused,
48035 .unused,47977 .unused,
...@@ -48167,7 +48109,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -48167,7 +48109,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
48167 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },48109 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
48168 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },48110 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
48169 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },48111 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
48170 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fminh" } } },48112 .{ .type = .usize, .kind = .{ .extern_func = "__fminh" } },
48171 .unused,48113 .unused,
48172 .unused,48114 .unused,
48173 .unused,48115 .unused,
...@@ -48203,7 +48145,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -48203,7 +48145,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
48203 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },48145 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
48204 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },48146 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
48205 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },48147 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
48206 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fminh" } } },48148 .{ .type = .usize, .kind = .{ .extern_func = "__fminh" } },
48207 .unused,48149 .unused,
48208 .unused,48150 .unused,
48209 .unused,48151 .unused,
...@@ -48240,7 +48182,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -48240,7 +48182,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
48240 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },48182 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
48241 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },48183 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
48242 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },48184 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
48243 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fminh" } } },48185 .{ .type = .usize, .kind = .{ .extern_func = "__fminh" } },
48244 .{ .type = .f16, .kind = .{ .reg = .ax } },48186 .{ .type = .f16, .kind = .{ .reg = .ax } },
48245 .unused,48187 .unused,
48246 .unused,48188 .unused,
...@@ -48280,7 +48222,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -48280,7 +48222,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
48280 .{ .type = .f32, .kind = .mem },48222 .{ .type = .f32, .kind = .mem },
48281 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },48223 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
48282 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },48224 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
48283 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fminh" } } },48225 .{ .type = .usize, .kind = .{ .extern_func = "__fminh" } },
48284 .unused,48226 .unused,
48285 .unused,48227 .unused,
48286 .unused,48228 .unused,
...@@ -48695,7 +48637,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -48695,7 +48637,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
48695 },48637 },
48696 .call_frame = .{ .alignment = .@"16" },48638 .call_frame = .{ .alignment = .@"16" },
48697 .extra_temps = .{48639 .extra_temps = .{
48698 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmin" } } },48640 .{ .type = .usize, .kind = .{ .extern_func = "fmin" } },
48699 .unused,48641 .unused,
48700 .unused,48642 .unused,
48701 .unused,48643 .unused,
...@@ -48950,7 +48892,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -48950,7 +48892,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
48950 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },48892 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
48951 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },48893 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
48952 .{ .type = .f64, .kind = .{ .reg = .xmm1 } },48894 .{ .type = .f64, .kind = .{ .reg = .xmm1 } },
48953 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmin" } } },48895 .{ .type = .usize, .kind = .{ .extern_func = "fmin" } },
48954 .unused,48896 .unused,
48955 .unused,48897 .unused,
48956 .unused,48898 .unused,
...@@ -49227,7 +49169,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -49227,7 +49169,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
49227 },49169 },
49228 .call_frame = .{ .alignment = .@"16" },49170 .call_frame = .{ .alignment = .@"16" },
49229 .extra_temps = .{49171 .extra_temps = .{
49230 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fminq" } } },49172 .{ .type = .usize, .kind = .{ .extern_func = "fminq" } },
49231 .unused,49173 .unused,
49232 .unused,49174 .unused,
49233 .unused,49175 .unused,
...@@ -49259,7 +49201,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -49259,7 +49201,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
49259 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },49201 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
49260 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },49202 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
49261 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },49203 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
49262 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fminq" } } },49204 .{ .type = .usize, .kind = .{ .extern_func = "fminq" } },
49263 .unused,49205 .unused,
49264 .unused,49206 .unused,
49265 .unused,49207 .unused,
...@@ -49294,7 +49236,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -49294,7 +49236,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
49294 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },49236 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
49295 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },49237 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
49296 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },49238 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
49297 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fminq" } } },49239 .{ .type = .usize, .kind = .{ .extern_func = "fminq" } },
49298 .unused,49240 .unused,
49299 .unused,49241 .unused,
49300 .unused,49242 .unused,
...@@ -49329,7 +49271,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -49329,7 +49271,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
49329 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },49271 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
49330 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },49272 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
49331 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },49273 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
49332 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fminq" } } },49274 .{ .type = .usize, .kind = .{ .extern_func = "fminq" } },
49333 .unused,49275 .unused,
49334 .unused,49276 .unused,
49335 .unused,49277 .unused,
...@@ -72269,7 +72211,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -72269,7 +72211,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
72269 },72211 },
72270 .call_frame = .{ .alignment = .@"16" },72212 .call_frame = .{ .alignment = .@"16" },
72271 .extra_temps = .{72213 .extra_temps = .{
72272 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__sqrth" } } },72214 .{ .type = .usize, .kind = .{ .extern_func = "__sqrth" } },
72273 .unused,72215 .unused,
72274 .unused,72216 .unused,
72275 .unused,72217 .unused,
...@@ -72351,7 +72293,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -72351,7 +72293,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
72351 .extra_temps = .{72293 .extra_temps = .{
72352 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },72294 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
72353 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },72295 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
72354 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__sqrth" } } },72296 .{ .type = .usize, .kind = .{ .extern_func = "__sqrth" } },
72355 .unused,72297 .unused,
72356 .unused,72298 .unused,
72357 .unused,72299 .unused,
...@@ -72382,7 +72324,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -72382,7 +72324,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
72382 .extra_temps = .{72324 .extra_temps = .{
72383 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },72325 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
72384 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },72326 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
72385 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__sqrth" } } },72327 .{ .type = .usize, .kind = .{ .extern_func = "__sqrth" } },
72386 .unused,72328 .unused,
72387 .unused,72329 .unused,
72388 .unused,72330 .unused,
...@@ -72413,7 +72355,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -72413,7 +72355,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
72413 .extra_temps = .{72355 .extra_temps = .{
72414 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },72356 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
72415 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },72357 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
72416 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__sqrth" } } },72358 .{ .type = .usize, .kind = .{ .extern_func = "__sqrth" } },
72417 .{ .type = .f16, .kind = .{ .reg = .ax } },72359 .{ .type = .f16, .kind = .{ .reg = .ax } },
72418 .unused,72360 .unused,
72419 .unused,72361 .unused,
...@@ -72447,7 +72389,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -72447,7 +72389,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
72447 .{ .type = .f16, .kind = .{ .reg = .ax } },72389 .{ .type = .f16, .kind = .{ .reg = .ax } },
72448 .{ .type = .f32, .kind = .mem },72390 .{ .type = .f32, .kind = .mem },
72449 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },72391 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
72450 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__sqrth" } } },72392 .{ .type = .usize, .kind = .{ .extern_func = "__sqrth" } },
72451 .unused,72393 .unused,
72452 .unused,72394 .unused,
72453 .unused,72395 .unused,
...@@ -72519,7 +72461,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -72519,7 +72461,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
72519 },72461 },
72520 .call_frame = .{ .alignment = .@"16" },72462 .call_frame = .{ .alignment = .@"16" },
72521 .extra_temps = .{72463 .extra_temps = .{
72522 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "sqrtf" } } },72464 .{ .type = .usize, .kind = .{ .extern_func = "sqrtf" } },
72523 .unused,72465 .unused,
72524 .unused,72466 .unused,
72525 .unused,72467 .unused,
...@@ -72635,7 +72577,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -72635,7 +72577,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
72635 .extra_temps = .{72577 .extra_temps = .{
72636 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },72578 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
72637 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },72579 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
72638 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "sqrtf" } } },72580 .{ .type = .usize, .kind = .{ .extern_func = "sqrtf" } },
72639 .unused,72581 .unused,
72640 .unused,72582 .unused,
72641 .unused,72583 .unused,
...@@ -72665,7 +72607,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -72665,7 +72607,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
72665 .extra_temps = .{72607 .extra_temps = .{
72666 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },72608 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
72667 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },72609 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
72668 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "sqrtf" } } },72610 .{ .type = .usize, .kind = .{ .extern_func = "sqrtf" } },
72669 .unused,72611 .unused,
72670 .unused,72612 .unused,
72671 .unused,72613 .unused,
...@@ -72735,7 +72677,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -72735,7 +72677,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
72735 },72677 },
72736 .call_frame = .{ .alignment = .@"16" },72678 .call_frame = .{ .alignment = .@"16" },
72737 .extra_temps = .{72679 .extra_temps = .{
72738 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "sqrt" } } },72680 .{ .type = .usize, .kind = .{ .extern_func = "sqrt" } },
72739 .unused,72681 .unused,
72740 .unused,72682 .unused,
72741 .unused,72683 .unused,
...@@ -72851,7 +72793,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -72851,7 +72793,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
72851 .extra_temps = .{72793 .extra_temps = .{
72852 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },72794 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
72853 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },72795 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
72854 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "sqrt" } } },72796 .{ .type = .usize, .kind = .{ .extern_func = "sqrt" } },
72855 .unused,72797 .unused,
72856 .unused,72798 .unused,
72857 .unused,72799 .unused,
...@@ -72881,7 +72823,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -72881,7 +72823,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
72881 .extra_temps = .{72823 .extra_temps = .{
72882 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },72824 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
72883 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },72825 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
72884 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "sqrt" } } },72826 .{ .type = .usize, .kind = .{ .extern_func = "sqrt" } },
72885 .unused,72827 .unused,
72886 .unused,72828 .unused,
72887 .unused,72829 .unused,
...@@ -72911,7 +72853,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -72911,7 +72853,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
72911 .extra_temps = .{72853 .extra_temps = .{
72912 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },72854 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
72913 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },72855 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
72914 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "sqrt" } } },72856 .{ .type = .usize, .kind = .{ .extern_func = "sqrt" } },
72915 .unused,72857 .unused,
72916 .unused,72858 .unused,
72917 .unused,72859 .unused,
...@@ -72995,7 +72937,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -72995,7 +72937,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
72995 },72937 },
72996 .call_frame = .{ .alignment = .@"16" },72938 .call_frame = .{ .alignment = .@"16" },
72997 .extra_temps = .{72939 .extra_temps = .{
72998 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "sqrtq" } } },72940 .{ .type = .usize, .kind = .{ .extern_func = "sqrtq" } },
72999 .unused,72941 .unused,
73000 .unused,72942 .unused,
73001 .unused,72943 .unused,
...@@ -73022,7 +72964,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -73022,7 +72964,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
73022 .extra_temps = .{72964 .extra_temps = .{
73023 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },72965 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
73024 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },72966 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
73025 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "sqrtq" } } },72967 .{ .type = .usize, .kind = .{ .extern_func = "sqrtq" } },
73026 .unused,72968 .unused,
73027 .unused,72969 .unused,
73028 .unused,72970 .unused,
...@@ -73052,7 +72994,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -73052,7 +72994,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
73052 .extra_temps = .{72994 .extra_temps = .{
73053 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },72995 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
73054 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },72996 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
73055 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "sqrtq" } } },72997 .{ .type = .usize, .kind = .{ .extern_func = "sqrtq" } },
73056 .unused,72998 .unused,
73057 .unused,72999 .unused,
73058 .unused,73000 .unused,
...@@ -73082,7 +73024,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -73082,7 +73024,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
73082 .extra_temps = .{73024 .extra_temps = .{
73083 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },73025 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
73084 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },73026 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
73085 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "sqrtq" } } },73027 .{ .type = .usize, .kind = .{ .extern_func = "sqrtq" } },
73086 .unused,73028 .unused,
73087 .unused,73029 .unused,
73088 .unused,73030 .unused,
...@@ -73126,7 +73068,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -73126,7 +73068,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
73126 },73068 },
73127 .call_frame = .{ .alignment = .@"16" },73069 .call_frame = .{ .alignment = .@"16" },
73128 .extra_temps = .{73070 .extra_temps = .{
73129 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__" ++ @tagName(name) ++ "h" } } },73071 .{ .type = .usize, .kind = .{ .extern_func = "__" ++ @tagName(name) ++ "h" } },
73130 .unused,73072 .unused,
73131 .unused,73073 .unused,
73132 .unused,73074 .unused,
...@@ -73153,7 +73095,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -73153,7 +73095,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
73153 .extra_temps = .{73095 .extra_temps = .{
73154 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },73096 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
73155 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },73097 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
73156 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__" ++ @tagName(name) ++ "h" } } },73098 .{ .type = .usize, .kind = .{ .extern_func = "__" ++ @tagName(name) ++ "h" } },
73157 .unused,73099 .unused,
73158 .unused,73100 .unused,
73159 .unused,73101 .unused,
...@@ -73184,7 +73126,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -73184,7 +73126,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
73184 .extra_temps = .{73126 .extra_temps = .{
73185 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },73127 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
73186 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },73128 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
73187 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__" ++ @tagName(name) ++ "h" } } },73129 .{ .type = .usize, .kind = .{ .extern_func = "__" ++ @tagName(name) ++ "h" } },
73188 .unused,73130 .unused,
73189 .unused,73131 .unused,
73190 .unused,73132 .unused,
...@@ -73215,7 +73157,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -73215,7 +73157,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
73215 .extra_temps = .{73157 .extra_temps = .{
73216 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },73158 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
73217 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },73159 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
73218 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__" ++ @tagName(name) ++ "h" } } },73160 .{ .type = .usize, .kind = .{ .extern_func = "__" ++ @tagName(name) ++ "h" } },
73219 .{ .type = .f16, .kind = .{ .reg = .ax } },73161 .{ .type = .f16, .kind = .{ .reg = .ax } },
73220 .unused,73162 .unused,
73221 .unused,73163 .unused,
...@@ -73249,7 +73191,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -73249,7 +73191,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
73249 .{ .type = .f16, .kind = .{ .reg = .ax } },73191 .{ .type = .f16, .kind = .{ .reg = .ax } },
73250 .{ .type = .f32, .kind = .mem },73192 .{ .type = .f32, .kind = .mem },
73251 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },73193 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
73252 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__" ++ @tagName(name) ++ "h" } } },73194 .{ .type = .usize, .kind = .{ .extern_func = "__" ++ @tagName(name) ++ "h" } },
73253 .unused,73195 .unused,
73254 .unused,73196 .unused,
73255 .unused,73197 .unused,
...@@ -73279,7 +73221,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -73279,7 +73221,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
73279 },73221 },
73280 .call_frame = .{ .alignment = .@"16" },73222 .call_frame = .{ .alignment = .@"16" },
73281 .extra_temps = .{73223 .extra_temps = .{
73282 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = @tagName(name) ++ "f" } } },73224 .{ .type = .usize, .kind = .{ .extern_func = @tagName(name) ++ "f" } },
73283 .unused,73225 .unused,
73284 .unused,73226 .unused,
73285 .unused,73227 .unused,
...@@ -73306,7 +73248,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -73306,7 +73248,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
73306 .extra_temps = .{73248 .extra_temps = .{
73307 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },73249 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
73308 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },73250 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
73309 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = @tagName(name) ++ "f" } } },73251 .{ .type = .usize, .kind = .{ .extern_func = @tagName(name) ++ "f" } },
73310 .unused,73252 .unused,
73311 .unused,73253 .unused,
73312 .unused,73254 .unused,
...@@ -73336,7 +73278,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -73336,7 +73278,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
73336 .extra_temps = .{73278 .extra_temps = .{
73337 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },73279 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
73338 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },73280 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
73339 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = @tagName(name) ++ "f" } } },73281 .{ .type = .usize, .kind = .{ .extern_func = @tagName(name) ++ "f" } },
73340 .unused,73282 .unused,
73341 .unused,73283 .unused,
73342 .unused,73284 .unused,
...@@ -73364,7 +73306,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -73364,7 +73306,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
73364 },73306 },
73365 .call_frame = .{ .alignment = .@"16" },73307 .call_frame = .{ .alignment = .@"16" },
73366 .extra_temps = .{73308 .extra_temps = .{
73367 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = @tagName(name) } } },73309 .{ .type = .usize, .kind = .{ .extern_func = @tagName(name) } },
73368 .unused,73310 .unused,
73369 .unused,73311 .unused,
73370 .unused,73312 .unused,
...@@ -73391,7 +73333,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -73391,7 +73333,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
73391 .extra_temps = .{73333 .extra_temps = .{
73392 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },73334 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
73393 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },73335 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
73394 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = @tagName(name) } } },73336 .{ .type = .usize, .kind = .{ .extern_func = @tagName(name) } },
73395 .unused,73337 .unused,
73396 .unused,73338 .unused,
73397 .unused,73339 .unused,
...@@ -73421,7 +73363,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -73421,7 +73363,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
73421 .extra_temps = .{73363 .extra_temps = .{
73422 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },73364 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
73423 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },73365 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
73424 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = @tagName(name) } } },73366 .{ .type = .usize, .kind = .{ .extern_func = @tagName(name) } },
73425 .unused,73367 .unused,
73426 .unused,73368 .unused,
73427 .unused,73369 .unused,
...@@ -73451,7 +73393,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -73451,7 +73393,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
73451 .extra_temps = .{73393 .extra_temps = .{
73452 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },73394 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
73453 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },73395 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
73454 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = @tagName(name) } } },73396 .{ .type = .usize, .kind = .{ .extern_func = @tagName(name) } },
73455 .unused,73397 .unused,
73456 .unused,73398 .unused,
73457 .unused,73399 .unused,
...@@ -73482,7 +73424,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -73482,7 +73424,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
73482 .extra_temps = .{73424 .extra_temps = .{
73483 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },73425 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
73484 .{ .type = .f80, .kind = .{ .frame = .call_frame } },73426 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
73485 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__" ++ @tagName(name) ++ "x" } } },73427 .{ .type = .usize, .kind = .{ .extern_func = "__" ++ @tagName(name) ++ "x" } },
73486 .unused,73428 .unused,
73487 .unused,73429 .unused,
73488 .unused,73430 .unused,
...@@ -73509,7 +73451,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -73509,7 +73451,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
73509 .extra_temps = .{73451 .extra_temps = .{
73510 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },73452 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
73511 .{ .type = .f80, .kind = .{ .frame = .call_frame } },73453 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
73512 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__" ++ @tagName(name) ++ "x" } } },73454 .{ .type = .usize, .kind = .{ .extern_func = "__" ++ @tagName(name) ++ "x" } },
73513 .unused,73455 .unused,
73514 .unused,73456 .unused,
73515 .unused,73457 .unused,
...@@ -73536,7 +73478,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -73536,7 +73478,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
73536 .extra_temps = .{73478 .extra_temps = .{
73537 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },73479 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
73538 .{ .type = .f80, .kind = .{ .frame = .call_frame } },73480 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
73539 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__" ++ @tagName(name) ++ "x" } } },73481 .{ .type = .usize, .kind = .{ .extern_func = "__" ++ @tagName(name) ++ "x" } },
73540 .unused,73482 .unused,
73541 .unused,73483 .unused,
73542 .unused,73484 .unused,
...@@ -73564,7 +73506,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -73564,7 +73506,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
73564 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },73506 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
73565 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },73507 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
73566 .{ .type = .f80, .kind = .{ .frame = .call_frame } },73508 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
73567 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__" ++ @tagName(name) ++ "x" } } },73509 .{ .type = .usize, .kind = .{ .extern_func = "__" ++ @tagName(name) ++ "x" } },
73568 .unused,73510 .unused,
73569 .unused,73511 .unused,
73570 .unused,73512 .unused,
...@@ -73596,7 +73538,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -73596,7 +73538,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
73596 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },73538 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
73597 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },73539 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
73598 .{ .type = .f80, .kind = .{ .frame = .call_frame } },73540 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
73599 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__" ++ @tagName(name) ++ "x" } } },73541 .{ .type = .usize, .kind = .{ .extern_func = "__" ++ @tagName(name) ++ "x" } },
73600 .unused,73542 .unused,
73601 .unused,73543 .unused,
73602 .unused,73544 .unused,
...@@ -73628,7 +73570,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -73628,7 +73570,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
73628 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },73570 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
73629 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },73571 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
73630 .{ .type = .f80, .kind = .{ .frame = .call_frame } },73572 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
73631 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__" ++ @tagName(name) ++ "x" } } },73573 .{ .type = .usize, .kind = .{ .extern_func = "__" ++ @tagName(name) ++ "x" } },
73632 .unused,73574 .unused,
73633 .unused,73575 .unused,
73634 .unused,73576 .unused,
...@@ -73657,7 +73599,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -73657,7 +73599,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
73657 },73599 },
73658 .call_frame = .{ .alignment = .@"16" },73600 .call_frame = .{ .alignment = .@"16" },
73659 .extra_temps = .{73601 .extra_temps = .{
73660 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = @tagName(name) ++ "q" } } },73602 .{ .type = .usize, .kind = .{ .extern_func = @tagName(name) ++ "q" } },
73661 .unused,73603 .unused,
73662 .unused,73604 .unused,
73663 .unused,73605 .unused,
...@@ -73684,7 +73626,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -73684,7 +73626,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
73684 .extra_temps = .{73626 .extra_temps = .{
73685 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },73627 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
73686 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },73628 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
73687 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = @tagName(name) ++ "q" } } },73629 .{ .type = .usize, .kind = .{ .extern_func = @tagName(name) ++ "q" } },
73688 .unused,73630 .unused,
73689 .unused,73631 .unused,
73690 .unused,73632 .unused,
...@@ -73714,7 +73656,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -73714,7 +73656,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
73714 .extra_temps = .{73656 .extra_temps = .{
73715 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },73657 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
73716 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },73658 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
73717 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = @tagName(name) ++ "q" } } },73659 .{ .type = .usize, .kind = .{ .extern_func = @tagName(name) ++ "q" } },
73718 .unused,73660 .unused,
73719 .unused,73661 .unused,
73720 .unused,73662 .unused,
...@@ -73744,7 +73686,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -73744,7 +73686,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
73744 .extra_temps = .{73686 .extra_temps = .{
73745 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },73687 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
73746 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },73688 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
73747 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = @tagName(name) ++ "q" } } },73689 .{ .type = .usize, .kind = .{ .extern_func = @tagName(name) ++ "q" } },
73748 .unused,73690 .unused,
73749 .unused,73691 .unused,
73750 .unused,73692 .unused,
...@@ -75362,12 +75304,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -75362,12 +75304,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
75362 },75304 },
75363 .call_frame = .{ .alignment = .@"16" },75305 .call_frame = .{ .alignment = .@"16" },
75364 .extra_temps = .{75306 .extra_temps = .{
75365 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {75307 .{ .type = .usize, .kind = .{ .extern_func = switch (direction) {
75366 else => unreachable,75308 else => unreachable,
75367 .down => "__floorh",75309 .down => "__floorh",
75368 .up => "__ceilh",75310 .up => "__ceilh",
75369 .zero => "__trunch",75311 .zero => "__trunch",
75370 } } } },75312 } } },
75371 .unused,75313 .unused,
75372 .unused,75314 .unused,
75373 .unused,75315 .unused,
...@@ -75449,12 +75391,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -75449,12 +75391,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
75449 .extra_temps = .{75391 .extra_temps = .{
75450 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },75392 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
75451 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },75393 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
75452 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {75394 .{ .type = .usize, .kind = .{ .extern_func = switch (direction) {
75453 else => unreachable,75395 else => unreachable,
75454 .down => "__floorh",75396 .down => "__floorh",
75455 .up => "__ceilh",75397 .up => "__ceilh",
75456 .zero => "__trunch",75398 .zero => "__trunch",
75457 } } } },75399 } } },
75458 .unused,75400 .unused,
75459 .unused,75401 .unused,
75460 .unused,75402 .unused,
...@@ -75485,12 +75427,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -75485,12 +75427,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
75485 .extra_temps = .{75427 .extra_temps = .{
75486 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },75428 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
75487 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },75429 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
75488 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {75430 .{ .type = .usize, .kind = .{ .extern_func = switch (direction) {
75489 else => unreachable,75431 else => unreachable,
75490 .down => "__floorh",75432 .down => "__floorh",
75491 .up => "__ceilh",75433 .up => "__ceilh",
75492 .zero => "__trunch",75434 .zero => "__trunch",
75493 } } } },75435 } } },
75494 .unused,75436 .unused,
75495 .unused,75437 .unused,
75496 .unused,75438 .unused,
...@@ -75521,12 +75463,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -75521,12 +75463,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
75521 .extra_temps = .{75463 .extra_temps = .{
75522 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },75464 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
75523 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },75465 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
75524 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {75466 .{ .type = .usize, .kind = .{ .extern_func = switch (direction) {
75525 else => unreachable,75467 else => unreachable,
75526 .down => "__floorh",75468 .down => "__floorh",
75527 .up => "__ceilh",75469 .up => "__ceilh",
75528 .zero => "__trunch",75470 .zero => "__trunch",
75529 } } } },75471 } } },
75530 .{ .type = .f16, .kind = .{ .reg = .ax } },75472 .{ .type = .f16, .kind = .{ .reg = .ax } },
75531 .unused,75473 .unused,
75532 .unused,75474 .unused,
...@@ -75560,12 +75502,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -75560,12 +75502,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
75560 .{ .type = .f16, .kind = .{ .reg = .ax } },75502 .{ .type = .f16, .kind = .{ .reg = .ax } },
75561 .{ .type = .f32, .kind = .mem },75503 .{ .type = .f32, .kind = .mem },
75562 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },75504 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
75563 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {75505 .{ .type = .usize, .kind = .{ .extern_func = switch (direction) {
75564 else => unreachable,75506 else => unreachable,
75565 .down => "__floorh",75507 .down => "__floorh",
75566 .up => "__ceilh",75508 .up => "__ceilh",
75567 .zero => "__trunch",75509 .zero => "__trunch",
75568 } } } },75510 } } },
75569 .unused,75511 .unused,
75570 .unused,75512 .unused,
75571 .unused,75513 .unused,
...@@ -75637,12 +75579,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -75637,12 +75579,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
75637 },75579 },
75638 .call_frame = .{ .alignment = .@"16" },75580 .call_frame = .{ .alignment = .@"16" },
75639 .extra_temps = .{75581 .extra_temps = .{
75640 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {75582 .{ .type = .usize, .kind = .{ .extern_func = switch (direction) {
75641 else => unreachable,75583 else => unreachable,
75642 .down => "floorf",75584 .down => "floorf",
75643 .up => "ceilf",75585 .up => "ceilf",
75644 .zero => "truncf",75586 .zero => "truncf",
75645 } } } },75587 } } },
75646 .unused,75588 .unused,
75647 .unused,75589 .unused,
75648 .unused,75590 .unused,
...@@ -75764,12 +75706,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -75764,12 +75706,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
75764 .extra_temps = .{75706 .extra_temps = .{
75765 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },75707 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
75766 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },75708 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
75767 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {75709 .{ .type = .usize, .kind = .{ .extern_func = switch (direction) {
75768 else => unreachable,75710 else => unreachable,
75769 .down => "floorf",75711 .down => "floorf",
75770 .up => "ceilf",75712 .up => "ceilf",
75771 .zero => "truncf",75713 .zero => "truncf",
75772 } } } },75714 } } },
75773 .unused,75715 .unused,
75774 .unused,75716 .unused,
75775 .unused,75717 .unused,
...@@ -75799,12 +75741,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -75799,12 +75741,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
75799 .extra_temps = .{75741 .extra_temps = .{
75800 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },75742 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
75801 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },75743 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
75802 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {75744 .{ .type = .usize, .kind = .{ .extern_func = switch (direction) {
75803 else => unreachable,75745 else => unreachable,
75804 .down => "floorf",75746 .down => "floorf",
75805 .up => "ceilf",75747 .up => "ceilf",
75806 .zero => "truncf",75748 .zero => "truncf",
75807 } } } },75749 } } },
75808 .unused,75750 .unused,
75809 .unused,75751 .unused,
75810 .unused,75752 .unused,
...@@ -75874,12 +75816,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -75874,12 +75816,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
75874 },75816 },
75875 .call_frame = .{ .alignment = .@"16" },75817 .call_frame = .{ .alignment = .@"16" },
75876 .extra_temps = .{75818 .extra_temps = .{
75877 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {75819 .{ .type = .usize, .kind = .{ .extern_func = switch (direction) {
75878 else => unreachable,75820 else => unreachable,
75879 .down => "floor",75821 .down => "floor",
75880 .up => "ceil",75822 .up => "ceil",
75881 .zero => "trunc",75823 .zero => "trunc",
75882 } } } },75824 } } },
75883 .unused,75825 .unused,
75884 .unused,75826 .unused,
75885 .unused,75827 .unused,
...@@ -76001,12 +75943,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -76001,12 +75943,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
76001 .extra_temps = .{75943 .extra_temps = .{
76002 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },75944 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
76003 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },75945 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
76004 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {75946 .{ .type = .usize, .kind = .{ .extern_func = switch (direction) {
76005 else => unreachable,75947 else => unreachable,
76006 .down => "floor",75948 .down => "floor",
76007 .up => "ceil",75949 .up => "ceil",
76008 .zero => "trunc",75950 .zero => "trunc",
76009 } } } },75951 } } },
76010 .unused,75952 .unused,
76011 .unused,75953 .unused,
76012 .unused,75954 .unused,
...@@ -76036,12 +75978,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -76036,12 +75978,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
76036 .extra_temps = .{75978 .extra_temps = .{
76037 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },75979 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
76038 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },75980 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
76039 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {75981 .{ .type = .usize, .kind = .{ .extern_func = switch (direction) {
76040 else => unreachable,75982 else => unreachable,
76041 .down => "floor",75983 .down => "floor",
76042 .up => "ceil",75984 .up => "ceil",
76043 .zero => "trunc",75985 .zero => "trunc",
76044 } } } },75986 } } },
76045 .unused,75987 .unused,
76046 .unused,75988 .unused,
76047 .unused,75989 .unused,
...@@ -76071,12 +76013,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -76071,12 +76013,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
76071 .extra_temps = .{76013 .extra_temps = .{
76072 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },76014 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
76073 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },76015 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
76074 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {76016 .{ .type = .usize, .kind = .{ .extern_func = switch (direction) {
76075 else => unreachable,76017 else => unreachable,
76076 .down => "floor",76018 .down => "floor",
76077 .up => "ceil",76019 .up => "ceil",
76078 .zero => "trunc",76020 .zero => "trunc",
76079 } } } },76021 } } },
76080 .unused,76022 .unused,
76081 .unused,76023 .unused,
76082 .unused,76024 .unused,
...@@ -76107,12 +76049,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -76107,12 +76049,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
76107 .extra_temps = .{76049 .extra_temps = .{
76108 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },76050 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
76109 .{ .type = .f80, .kind = .{ .frame = .call_frame } },76051 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
76110 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {76052 .{ .type = .usize, .kind = .{ .extern_func = switch (direction) {
76111 else => unreachable,76053 else => unreachable,
76112 .down => "__floorx",76054 .down => "__floorx",
76113 .up => "__ceilx",76055 .up => "__ceilx",
76114 .zero => "__truncx",76056 .zero => "__truncx",
76115 } } } },76057 } } },
76116 .unused,76058 .unused,
76117 .unused,76059 .unused,
76118 .unused,76060 .unused,
...@@ -76139,12 +76081,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -76139,12 +76081,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
76139 .extra_temps = .{76081 .extra_temps = .{
76140 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },76082 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
76141 .{ .type = .f80, .kind = .{ .frame = .call_frame } },76083 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
76142 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {76084 .{ .type = .usize, .kind = .{ .extern_func = switch (direction) {
76143 else => unreachable,76085 else => unreachable,
76144 .down => "__floorx",76086 .down => "__floorx",
76145 .up => "__ceilx",76087 .up => "__ceilx",
76146 .zero => "__truncx",76088 .zero => "__truncx",
76147 } } } },76089 } } },
76148 .unused,76090 .unused,
76149 .unused,76091 .unused,
76150 .unused,76092 .unused,
...@@ -76171,12 +76113,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -76171,12 +76113,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
76171 .extra_temps = .{76113 .extra_temps = .{
76172 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },76114 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
76173 .{ .type = .f80, .kind = .{ .frame = .call_frame } },76115 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
76174 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {76116 .{ .type = .usize, .kind = .{ .extern_func = switch (direction) {
76175 else => unreachable,76117 else => unreachable,
76176 .down => "__floorx",76118 .down => "__floorx",
76177 .up => "__ceilx",76119 .up => "__ceilx",
76178 .zero => "__truncx",76120 .zero => "__truncx",
76179 } } } },76121 } } },
76180 .unused,76122 .unused,
76181 .unused,76123 .unused,
76182 .unused,76124 .unused,
...@@ -76204,12 +76146,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -76204,12 +76146,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
76204 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },76146 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
76205 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },76147 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
76206 .{ .type = .f80, .kind = .{ .frame = .call_frame } },76148 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
76207 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {76149 .{ .type = .usize, .kind = .{ .extern_func = switch (direction) {
76208 else => unreachable,76150 else => unreachable,
76209 .down => "__floorx",76151 .down => "__floorx",
76210 .up => "__ceilx",76152 .up => "__ceilx",
76211 .zero => "__truncx",76153 .zero => "__truncx",
76212 } } } },76154 } } },
76213 .unused,76155 .unused,
76214 .unused,76156 .unused,
76215 .unused,76157 .unused,
...@@ -76241,12 +76183,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -76241,12 +76183,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
76241 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },76183 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
76242 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },76184 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
76243 .{ .type = .f80, .kind = .{ .frame = .call_frame } },76185 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
76244 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {76186 .{ .type = .usize, .kind = .{ .extern_func = switch (direction) {
76245 else => unreachable,76187 else => unreachable,
76246 .down => "__floorx",76188 .down => "__floorx",
76247 .up => "__ceilx",76189 .up => "__ceilx",
76248 .zero => "__truncx",76190 .zero => "__truncx",
76249 } } } },76191 } } },
76250 .unused,76192 .unused,
76251 .unused,76193 .unused,
76252 .unused,76194 .unused,
...@@ -76278,12 +76220,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -76278,12 +76220,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
76278 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },76220 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
76279 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },76221 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
76280 .{ .type = .f80, .kind = .{ .frame = .call_frame } },76222 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
76281 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {76223 .{ .type = .usize, .kind = .{ .extern_func = switch (direction) {
76282 else => unreachable,76224 else => unreachable,
76283 .down => "__floorx",76225 .down => "__floorx",
76284 .up => "__ceilx",76226 .up => "__ceilx",
76285 .zero => "__truncx",76227 .zero => "__truncx",
76286 } } } },76228 } } },
76287 .unused,76229 .unused,
76288 .unused,76230 .unused,
76289 .unused,76231 .unused,
...@@ -76312,12 +76254,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -76312,12 +76254,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
76312 },76254 },
76313 .call_frame = .{ .alignment = .@"16" },76255 .call_frame = .{ .alignment = .@"16" },
76314 .extra_temps = .{76256 .extra_temps = .{
76315 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {76257 .{ .type = .usize, .kind = .{ .extern_func = switch (direction) {
76316 else => unreachable,76258 else => unreachable,
76317 .down => "floorq",76259 .down => "floorq",
76318 .up => "ceilq",76260 .up => "ceilq",
76319 .zero => "truncq",76261 .zero => "truncq",
76320 } } } },76262 } } },
76321 .unused,76263 .unused,
76322 .unused,76264 .unused,
76323 .unused,76265 .unused,
...@@ -76344,12 +76286,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -76344,12 +76286,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
76344 .extra_temps = .{76286 .extra_temps = .{
76345 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },76287 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
76346 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },76288 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
76347 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {76289 .{ .type = .usize, .kind = .{ .extern_func = switch (direction) {
76348 else => unreachable,76290 else => unreachable,
76349 .down => "floorq",76291 .down => "floorq",
76350 .up => "ceilq",76292 .up => "ceilq",
76351 .zero => "truncq",76293 .zero => "truncq",
76352 } } } },76294 } } },
76353 .unused,76295 .unused,
76354 .unused,76296 .unused,
76355 .unused,76297 .unused,
...@@ -76379,12 +76321,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -76379,12 +76321,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
76379 .extra_temps = .{76321 .extra_temps = .{
76380 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },76322 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
76381 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },76323 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
76382 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {76324 .{ .type = .usize, .kind = .{ .extern_func = switch (direction) {
76383 else => unreachable,76325 else => unreachable,
76384 .down => "floorq",76326 .down => "floorq",
76385 .up => "ceilq",76327 .up => "ceilq",
76386 .zero => "truncq",76328 .zero => "truncq",
76387 } } } },76329 } } },
76388 .unused,76330 .unused,
76389 .unused,76331 .unused,
76390 .unused,76332 .unused,
...@@ -76414,12 +76356,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -76414,12 +76356,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
76414 .extra_temps = .{76356 .extra_temps = .{
76415 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },76357 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
76416 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },76358 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
76417 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {76359 .{ .type = .usize, .kind = .{ .extern_func = switch (direction) {
76418 else => unreachable,76360 else => unreachable,
76419 .down => "floorq",76361 .down => "floorq",
76420 .up => "ceilq",76362 .up => "ceilq",
76421 .zero => "truncq",76363 .zero => "truncq",
76422 } } } },76364 } } },
76423 .unused,76365 .unused,
76424 .unused,76366 .unused,
76425 .unused,76367 .unused,
...@@ -77051,7 +76993,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -77051,7 +76993,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
77051 },76993 },
77052 .call_frame = .{ .alignment = .@"16" },76994 .call_frame = .{ .alignment = .@"16" },
77053 .extra_temps = .{76995 .extra_temps = .{
77054 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } },76996 .{ .type = .usize, .kind = .{ .extern_func = "__cmphf2" } },
77055 .{ .type = .i32, .kind = .{ .reg = .eax } },76997 .{ .type = .i32, .kind = .{ .reg = .eax } },
77056 .unused,76998 .unused,
77057 .unused,76999 .unused,
...@@ -77394,7 +77336,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -77394,7 +77336,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
77394 },77336 },
77395 .call_frame = .{ .alignment = .@"16" },77337 .call_frame = .{ .alignment = .@"16" },
77396 .extra_temps = .{77338 .extra_temps = .{
77397 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } },77339 .{ .type = .usize, .kind = .{ .extern_func = "__cmptf2" } },
77398 .{ .type = .i32, .kind = .{ .reg = .eax } },77340 .{ .type = .i32, .kind = .{ .reg = .eax } },
77399 .unused,77341 .unused,
77400 .unused,77342 .unused,
...@@ -77555,7 +77497,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -77555,7 +77497,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
77555 },77497 },
77556 .call_frame = .{ .alignment = .@"16" },77498 .call_frame = .{ .alignment = .@"16" },
77557 .extra_temps = .{77499 .extra_temps = .{
77558 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } },77500 .{ .type = .usize, .kind = .{ .extern_func = "__cmphf2" } },
77559 .{ .type = .i32, .kind = .{ .reg = .eax } },77501 .{ .type = .i32, .kind = .{ .reg = .eax } },
77560 .unused,77502 .unused,
77561 .unused,77503 .unused,
...@@ -77922,7 +77864,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -77922,7 +77864,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
77922 },77864 },
77923 .call_frame = .{ .alignment = .@"16" },77865 .call_frame = .{ .alignment = .@"16" },
77924 .extra_temps = .{77866 .extra_temps = .{
77925 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } },77867 .{ .type = .usize, .kind = .{ .extern_func = "__cmptf2" } },
77926 .{ .type = .i32, .kind = .{ .reg = .eax } },77868 .{ .type = .i32, .kind = .{ .reg = .eax } },
77927 .unused,77869 .unused,
77928 .unused,77870 .unused,
...@@ -78591,7 +78533,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -78591,7 +78533,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
78591 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },78533 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
78592 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },78534 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
78593 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },78535 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
78594 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } },78536 .{ .type = .usize, .kind = .{ .extern_func = "__cmphf2" } },
78595 .{ .type = .i32, .kind = .{ .reg = .eax } },78537 .{ .type = .i32, .kind = .{ .reg = .eax } },
78596 .{ .type = .u8, .kind = .{ .reg = .cl } },78538 .{ .type = .u8, .kind = .{ .reg = .cl } },
78597 .{ .type = .u32, .kind = .{ .reg = .edx } },78539 .{ .type = .u32, .kind = .{ .reg = .edx } },
...@@ -78635,7 +78577,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -78635,7 +78577,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
78635 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },78577 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
78636 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },78578 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
78637 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },78579 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
78638 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } },78580 .{ .type = .usize, .kind = .{ .extern_func = "__cmphf2" } },
78639 .{ .type = .i32, .kind = .{ .reg = .eax } },78581 .{ .type = .i32, .kind = .{ .reg = .eax } },
78640 .{ .type = .u8, .kind = .{ .reg = .cl } },78582 .{ .type = .u8, .kind = .{ .reg = .cl } },
78641 .{ .type = .u32, .kind = .{ .reg = .edx } },78583 .{ .type = .u32, .kind = .{ .reg = .edx } },
...@@ -78679,7 +78621,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -78679,7 +78621,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
78679 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },78621 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
78680 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },78622 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
78681 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },78623 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
78682 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } },78624 .{ .type = .usize, .kind = .{ .extern_func = "__cmphf2" } },
78683 .{ .type = .i32, .kind = .{ .reg = .eax } },78625 .{ .type = .i32, .kind = .{ .reg = .eax } },
78684 .{ .type = .u8, .kind = .{ .reg = .cl } },78626 .{ .type = .u8, .kind = .{ .reg = .cl } },
78685 .{ .type = .u32, .kind = .{ .reg = .edx } },78627 .{ .type = .u32, .kind = .{ .reg = .edx } },
...@@ -78724,7 +78666,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -78724,7 +78666,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
78724 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },78666 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
78725 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },78667 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
78726 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },78668 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
78727 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } },78669 .{ .type = .usize, .kind = .{ .extern_func = "__cmphf2" } },
78728 .{ .type = .i32, .kind = .{ .reg = .eax } },78670 .{ .type = .i32, .kind = .{ .reg = .eax } },
78729 .{ .type = .u8, .kind = .{ .reg = .cl } },78671 .{ .type = .u8, .kind = .{ .reg = .cl } },
78730 .{ .type = .u32, .kind = .{ .reg = .edx } },78672 .{ .type = .u32, .kind = .{ .reg = .edx } },
...@@ -78769,7 +78711,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -78769,7 +78711,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
78769 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },78711 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
78770 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },78712 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
78771 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },78713 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
78772 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } },78714 .{ .type = .usize, .kind = .{ .extern_func = "__cmphf2" } },
78773 .{ .type = .i32, .kind = .{ .reg = .eax } },78715 .{ .type = .i32, .kind = .{ .reg = .eax } },
78774 .{ .type = .u8, .kind = .{ .reg = .cl } },78716 .{ .type = .u8, .kind = .{ .reg = .cl } },
78775 .{ .type = .u32, .kind = .{ .reg = .edx } },78717 .{ .type = .u32, .kind = .{ .reg = .edx } },
...@@ -78816,7 +78758,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -78816,7 +78758,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
78816 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },78758 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
78817 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },78759 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
78818 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },78760 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
78819 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } },78761 .{ .type = .usize, .kind = .{ .extern_func = "__cmphf2" } },
78820 .{ .type = .i32, .kind = .{ .reg = .eax } },78762 .{ .type = .i32, .kind = .{ .reg = .eax } },
78821 .{ .type = .u8, .kind = .{ .reg = .cl } },78763 .{ .type = .u8, .kind = .{ .reg = .cl } },
78822 .{ .type = .u32, .kind = .{ .reg = .edx } },78764 .{ .type = .u32, .kind = .{ .reg = .edx } },
...@@ -78863,7 +78805,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -78863,7 +78805,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
78863 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },78805 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
78864 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },78806 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
78865 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },78807 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
78866 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } },78808 .{ .type = .usize, .kind = .{ .extern_func = "__cmphf2" } },
78867 .{ .type = .i32, .kind = .{ .reg = .eax } },78809 .{ .type = .i32, .kind = .{ .reg = .eax } },
78868 .{ .type = .u8, .kind = .{ .reg = .cl } },78810 .{ .type = .u8, .kind = .{ .reg = .cl } },
78869 .{ .type = .u64, .kind = .{ .reg = .rdx } },78811 .{ .type = .u64, .kind = .{ .reg = .rdx } },
...@@ -78916,7 +78858,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -78916,7 +78858,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
78916 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },78858 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
78917 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },78859 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
78918 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },78860 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
78919 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } },78861 .{ .type = .usize, .kind = .{ .extern_func = "__cmphf2" } },
78920 .{ .type = .i32, .kind = .{ .reg = .eax } },78862 .{ .type = .i32, .kind = .{ .reg = .eax } },
78921 .{ .type = .u8, .kind = .{ .reg = .cl } },78863 .{ .type = .u8, .kind = .{ .reg = .cl } },
78922 .{ .type = .u64, .kind = .{ .reg = .rdx } },78864 .{ .type = .u64, .kind = .{ .reg = .rdx } },
...@@ -78969,7 +78911,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -78969,7 +78911,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
78969 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },78911 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
78970 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },78912 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
78971 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },78913 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
78972 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } },78914 .{ .type = .usize, .kind = .{ .extern_func = "__cmphf2" } },
78973 .{ .type = .i32, .kind = .{ .reg = .eax } },78915 .{ .type = .i32, .kind = .{ .reg = .eax } },
78974 .{ .type = .u8, .kind = .{ .reg = .cl } },78916 .{ .type = .u8, .kind = .{ .reg = .cl } },
78975 .{ .type = .u64, .kind = .{ .reg = .rdx } },78917 .{ .type = .u64, .kind = .{ .reg = .rdx } },
...@@ -79023,7 +78965,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -79023,7 +78965,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
79023 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },78965 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
79024 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },78966 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
79025 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },78967 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
79026 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } },78968 .{ .type = .usize, .kind = .{ .extern_func = "__cmphf2" } },
79027 .{ .type = .i32, .kind = .{ .reg = .eax } },78969 .{ .type = .i32, .kind = .{ .reg = .eax } },
79028 .{ .type = .u8, .kind = .{ .reg = .cl } },78970 .{ .type = .u8, .kind = .{ .reg = .cl } },
79029 .{ .type = .u64, .kind = .{ .reg = .rdx } },78971 .{ .type = .u64, .kind = .{ .reg = .rdx } },
...@@ -79077,7 +79019,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -79077,7 +79019,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
79077 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },79019 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
79078 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },79020 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
79079 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },79021 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
79080 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } },79022 .{ .type = .usize, .kind = .{ .extern_func = "__cmphf2" } },
79081 .{ .type = .i32, .kind = .{ .reg = .eax } },79023 .{ .type = .i32, .kind = .{ .reg = .eax } },
79082 .{ .type = .u8, .kind = .{ .reg = .cl } },79024 .{ .type = .u8, .kind = .{ .reg = .cl } },
79083 .{ .type = .u64, .kind = .{ .reg = .rdx } },79025 .{ .type = .u64, .kind = .{ .reg = .rdx } },
...@@ -79133,7 +79075,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -79133,7 +79075,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
79133 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },79075 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
79134 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },79076 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
79135 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },79077 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
79136 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } },79078 .{ .type = .usize, .kind = .{ .extern_func = "__cmphf2" } },
79137 .{ .type = .i32, .kind = .{ .reg = .eax } },79079 .{ .type = .i32, .kind = .{ .reg = .eax } },
79138 .{ .type = .u8, .kind = .{ .reg = .cl } },79080 .{ .type = .u8, .kind = .{ .reg = .cl } },
79139 .{ .type = .u64, .kind = .{ .reg = .rdx } },79081 .{ .type = .u64, .kind = .{ .reg = .rdx } },
...@@ -79960,7 +79902,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -79960,7 +79902,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
79960 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },79902 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
79961 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },79903 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
79962 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },79904 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
79963 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } },79905 .{ .type = .usize, .kind = .{ .extern_func = "__cmptf2" } },
79964 .{ .type = .i32, .kind = .{ .reg = .eax } },79906 .{ .type = .i32, .kind = .{ .reg = .eax } },
79965 .{ .type = .u8, .kind = .{ .reg = .cl } },79907 .{ .type = .u8, .kind = .{ .reg = .cl } },
79966 .{ .type = .u32, .kind = .{ .reg = .edx } },79908 .{ .type = .u32, .kind = .{ .reg = .edx } },
...@@ -80004,7 +79946,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -80004,7 +79946,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
80004 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },79946 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
80005 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },79947 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
80006 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },79948 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
80007 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } },79949 .{ .type = .usize, .kind = .{ .extern_func = "__cmptf2" } },
80008 .{ .type = .i32, .kind = .{ .reg = .eax } },79950 .{ .type = .i32, .kind = .{ .reg = .eax } },
80009 .{ .type = .u8, .kind = .{ .reg = .cl } },79951 .{ .type = .u8, .kind = .{ .reg = .cl } },
80010 .{ .type = .u32, .kind = .{ .reg = .edx } },79952 .{ .type = .u32, .kind = .{ .reg = .edx } },
...@@ -80048,7 +79990,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -80048,7 +79990,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
80048 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },79990 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
80049 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },79991 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
80050 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },79992 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
80051 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } },79993 .{ .type = .usize, .kind = .{ .extern_func = "__cmptf2" } },
80052 .{ .type = .i32, .kind = .{ .reg = .eax } },79994 .{ .type = .i32, .kind = .{ .reg = .eax } },
80053 .{ .type = .u8, .kind = .{ .reg = .cl } },79995 .{ .type = .u8, .kind = .{ .reg = .cl } },
80054 .{ .type = .u32, .kind = .{ .reg = .edx } },79996 .{ .type = .u32, .kind = .{ .reg = .edx } },
...@@ -80092,7 +80034,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -80092,7 +80034,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
80092 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },80034 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
80093 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },80035 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
80094 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },80036 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
80095 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } },80037 .{ .type = .usize, .kind = .{ .extern_func = "__cmptf2" } },
80096 .{ .type = .i32, .kind = .{ .reg = .eax } },80038 .{ .type = .i32, .kind = .{ .reg = .eax } },
80097 .{ .type = .u8, .kind = .{ .reg = .cl } },80039 .{ .type = .u8, .kind = .{ .reg = .cl } },
80098 .{ .type = .u32, .kind = .{ .reg = .edx } },80040 .{ .type = .u32, .kind = .{ .reg = .edx } },
...@@ -80136,7 +80078,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -80136,7 +80078,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
80136 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },80078 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
80137 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },80079 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
80138 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },80080 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
80139 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } },80081 .{ .type = .usize, .kind = .{ .extern_func = "__cmptf2" } },
80140 .{ .type = .i32, .kind = .{ .reg = .eax } },80082 .{ .type = .i32, .kind = .{ .reg = .eax } },
80141 .{ .type = .u8, .kind = .{ .reg = .cl } },80083 .{ .type = .u8, .kind = .{ .reg = .cl } },
80142 .{ .type = .u32, .kind = .{ .reg = .edx } },80084 .{ .type = .u32, .kind = .{ .reg = .edx } },
...@@ -80180,7 +80122,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -80180,7 +80122,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
80180 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },80122 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
80181 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },80123 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
80182 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },80124 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
80183 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } },80125 .{ .type = .usize, .kind = .{ .extern_func = "__cmptf2" } },
80184 .{ .type = .i32, .kind = .{ .reg = .eax } },80126 .{ .type = .i32, .kind = .{ .reg = .eax } },
80185 .{ .type = .u8, .kind = .{ .reg = .cl } },80127 .{ .type = .u8, .kind = .{ .reg = .cl } },
80186 .{ .type = .u32, .kind = .{ .reg = .edx } },80128 .{ .type = .u32, .kind = .{ .reg = .edx } },
...@@ -80224,7 +80166,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -80224,7 +80166,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
80224 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },80166 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
80225 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },80167 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
80226 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },80168 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
80227 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } },80169 .{ .type = .usize, .kind = .{ .extern_func = "__cmptf2" } },
80228 .{ .type = .i32, .kind = .{ .reg = .eax } },80170 .{ .type = .i32, .kind = .{ .reg = .eax } },
80229 .{ .type = .u8, .kind = .{ .reg = .cl } },80171 .{ .type = .u8, .kind = .{ .reg = .cl } },
80230 .{ .type = .u64, .kind = .{ .reg = .rdx } },80172 .{ .type = .u64, .kind = .{ .reg = .rdx } },
...@@ -80277,7 +80219,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -80277,7 +80219,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
80277 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },80219 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
80278 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },80220 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
80279 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },80221 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
80280 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } },80222 .{ .type = .usize, .kind = .{ .extern_func = "__cmptf2" } },
80281 .{ .type = .i32, .kind = .{ .reg = .eax } },80223 .{ .type = .i32, .kind = .{ .reg = .eax } },
80282 .{ .type = .u8, .kind = .{ .reg = .cl } },80224 .{ .type = .u8, .kind = .{ .reg = .cl } },
80283 .{ .type = .u64, .kind = .{ .reg = .rdx } },80225 .{ .type = .u64, .kind = .{ .reg = .rdx } },
...@@ -80330,7 +80272,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -80330,7 +80272,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
80330 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },80272 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
80331 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },80273 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
80332 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },80274 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
80333 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } },80275 .{ .type = .usize, .kind = .{ .extern_func = "__cmptf2" } },
80334 .{ .type = .i32, .kind = .{ .reg = .eax } },80276 .{ .type = .i32, .kind = .{ .reg = .eax } },
80335 .{ .type = .u8, .kind = .{ .reg = .cl } },80277 .{ .type = .u8, .kind = .{ .reg = .cl } },
80336 .{ .type = .u64, .kind = .{ .reg = .rdx } },80278 .{ .type = .u64, .kind = .{ .reg = .rdx } },
...@@ -80383,7 +80325,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -80383,7 +80325,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
80383 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },80325 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
80384 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },80326 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
80385 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },80327 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
80386 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } },80328 .{ .type = .usize, .kind = .{ .extern_func = "__cmptf2" } },
80387 .{ .type = .i32, .kind = .{ .reg = .eax } },80329 .{ .type = .i32, .kind = .{ .reg = .eax } },
80388 .{ .type = .u8, .kind = .{ .reg = .cl } },80330 .{ .type = .u8, .kind = .{ .reg = .cl } },
80389 .{ .type = .u64, .kind = .{ .reg = .rdx } },80331 .{ .type = .u64, .kind = .{ .reg = .rdx } },
...@@ -80436,7 +80378,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -80436,7 +80378,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
80436 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },80378 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
80437 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },80379 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
80438 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },80380 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
80439 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } },80381 .{ .type = .usize, .kind = .{ .extern_func = "__cmptf2" } },
80440 .{ .type = .i32, .kind = .{ .reg = .eax } },80382 .{ .type = .i32, .kind = .{ .reg = .eax } },
80441 .{ .type = .u8, .kind = .{ .reg = .cl } },80383 .{ .type = .u8, .kind = .{ .reg = .cl } },
80442 .{ .type = .u64, .kind = .{ .reg = .rdx } },80384 .{ .type = .u64, .kind = .{ .reg = .rdx } },
...@@ -80489,7 +80431,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -80489,7 +80431,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
80489 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },80431 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
80490 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },80432 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
80491 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },80433 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
80492 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } },80434 .{ .type = .usize, .kind = .{ .extern_func = "__cmptf2" } },
80493 .{ .type = .i32, .kind = .{ .reg = .eax } },80435 .{ .type = .i32, .kind = .{ .reg = .eax } },
80494 .{ .type = .u8, .kind = .{ .reg = .cl } },80436 .{ .type = .u8, .kind = .{ .reg = .cl } },
80495 .{ .type = .u64, .kind = .{ .reg = .rdx } },80437 .{ .type = .u64, .kind = .{ .reg = .rdx } },
...@@ -83099,7 +83041,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -83099,7 +83041,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
83099 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },83041 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
83100 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },83042 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
83101 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },83043 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
83102 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } },83044 .{ .type = .usize, .kind = .{ .extern_func = "__cmphf2" } },
83103 .{ .type = .i32, .kind = .{ .reg = .eax } },83045 .{ .type = .i32, .kind = .{ .reg = .eax } },
83104 .{ .type = .u8, .kind = .{ .reg = .cl } },83046 .{ .type = .u8, .kind = .{ .reg = .cl } },
83105 .{ .type = .u32, .kind = .{ .reg = .edx } },83047 .{ .type = .u32, .kind = .{ .reg = .edx } },
...@@ -83143,7 +83085,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -83143,7 +83085,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
83143 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },83085 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
83144 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },83086 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
83145 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },83087 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
83146 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } },83088 .{ .type = .usize, .kind = .{ .extern_func = "__cmphf2" } },
83147 .{ .type = .i32, .kind = .{ .reg = .eax } },83089 .{ .type = .i32, .kind = .{ .reg = .eax } },
83148 .{ .type = .u8, .kind = .{ .reg = .cl } },83090 .{ .type = .u8, .kind = .{ .reg = .cl } },
83149 .{ .type = .u32, .kind = .{ .reg = .edx } },83091 .{ .type = .u32, .kind = .{ .reg = .edx } },
...@@ -83187,7 +83129,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -83187,7 +83129,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
83187 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },83129 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
83188 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },83130 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
83189 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },83131 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
83190 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } },83132 .{ .type = .usize, .kind = .{ .extern_func = "__cmphf2" } },
83191 .{ .type = .i32, .kind = .{ .reg = .eax } },83133 .{ .type = .i32, .kind = .{ .reg = .eax } },
83192 .{ .type = .u8, .kind = .{ .reg = .cl } },83134 .{ .type = .u8, .kind = .{ .reg = .cl } },
83193 .{ .type = .u32, .kind = .{ .reg = .edx } },83135 .{ .type = .u32, .kind = .{ .reg = .edx } },
...@@ -83232,7 +83174,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -83232,7 +83174,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
83232 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },83174 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
83233 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },83175 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
83234 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },83176 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
83235 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } },83177 .{ .type = .usize, .kind = .{ .extern_func = "__cmphf2" } },
83236 .{ .type = .i32, .kind = .{ .reg = .eax } },83178 .{ .type = .i32, .kind = .{ .reg = .eax } },
83237 .{ .type = .u8, .kind = .{ .reg = .cl } },83179 .{ .type = .u8, .kind = .{ .reg = .cl } },
83238 .{ .type = .u32, .kind = .{ .reg = .edx } },83180 .{ .type = .u32, .kind = .{ .reg = .edx } },
...@@ -83277,7 +83219,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -83277,7 +83219,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
83277 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },83219 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
83278 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },83220 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
83279 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },83221 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
83280 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } },83222 .{ .type = .usize, .kind = .{ .extern_func = "__cmphf2" } },
83281 .{ .type = .i32, .kind = .{ .reg = .eax } },83223 .{ .type = .i32, .kind = .{ .reg = .eax } },
83282 .{ .type = .u8, .kind = .{ .reg = .cl } },83224 .{ .type = .u8, .kind = .{ .reg = .cl } },
83283 .{ .type = .u32, .kind = .{ .reg = .edx } },83225 .{ .type = .u32, .kind = .{ .reg = .edx } },
...@@ -83324,7 +83266,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -83324,7 +83266,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
83324 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },83266 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
83325 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },83267 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
83326 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },83268 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
83327 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } },83269 .{ .type = .usize, .kind = .{ .extern_func = "__cmphf2" } },
83328 .{ .type = .i32, .kind = .{ .reg = .eax } },83270 .{ .type = .i32, .kind = .{ .reg = .eax } },
83329 .{ .type = .u8, .kind = .{ .reg = .cl } },83271 .{ .type = .u8, .kind = .{ .reg = .cl } },
83330 .{ .type = .u32, .kind = .{ .reg = .edx } },83272 .{ .type = .u32, .kind = .{ .reg = .edx } },
...@@ -83371,7 +83313,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -83371,7 +83313,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
83371 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },83313 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
83372 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },83314 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
83373 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },83315 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
83374 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } },83316 .{ .type = .usize, .kind = .{ .extern_func = "__cmphf2" } },
83375 .{ .type = .i32, .kind = .{ .reg = .eax } },83317 .{ .type = .i32, .kind = .{ .reg = .eax } },
83376 .{ .type = .u8, .kind = .{ .reg = .cl } },83318 .{ .type = .u8, .kind = .{ .reg = .cl } },
83377 .{ .type = .u64, .kind = .{ .reg = .rdx } },83319 .{ .type = .u64, .kind = .{ .reg = .rdx } },
...@@ -83424,7 +83366,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -83424,7 +83366,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
83424 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },83366 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
83425 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },83367 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
83426 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },83368 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
83427 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } },83369 .{ .type = .usize, .kind = .{ .extern_func = "__cmphf2" } },
83428 .{ .type = .i32, .kind = .{ .reg = .eax } },83370 .{ .type = .i32, .kind = .{ .reg = .eax } },
83429 .{ .type = .u8, .kind = .{ .reg = .cl } },83371 .{ .type = .u8, .kind = .{ .reg = .cl } },
83430 .{ .type = .u64, .kind = .{ .reg = .rdx } },83372 .{ .type = .u64, .kind = .{ .reg = .rdx } },
...@@ -83477,7 +83419,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -83477,7 +83419,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
83477 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },83419 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
83478 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },83420 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
83479 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },83421 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
83480 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } },83422 .{ .type = .usize, .kind = .{ .extern_func = "__cmphf2" } },
83481 .{ .type = .i32, .kind = .{ .reg = .eax } },83423 .{ .type = .i32, .kind = .{ .reg = .eax } },
83482 .{ .type = .u8, .kind = .{ .reg = .cl } },83424 .{ .type = .u8, .kind = .{ .reg = .cl } },
83483 .{ .type = .u64, .kind = .{ .reg = .rdx } },83425 .{ .type = .u64, .kind = .{ .reg = .rdx } },
...@@ -83531,7 +83473,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -83531,7 +83473,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
83531 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },83473 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
83532 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },83474 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
83533 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },83475 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
83534 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } },83476 .{ .type = .usize, .kind = .{ .extern_func = "__cmphf2" } },
83535 .{ .type = .i32, .kind = .{ .reg = .eax } },83477 .{ .type = .i32, .kind = .{ .reg = .eax } },
83536 .{ .type = .u8, .kind = .{ .reg = .cl } },83478 .{ .type = .u8, .kind = .{ .reg = .cl } },
83537 .{ .type = .u64, .kind = .{ .reg = .rdx } },83479 .{ .type = .u64, .kind = .{ .reg = .rdx } },
...@@ -83585,7 +83527,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -83585,7 +83527,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
83585 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },83527 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
83586 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },83528 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
83587 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },83529 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
83588 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } },83530 .{ .type = .usize, .kind = .{ .extern_func = "__cmphf2" } },
83589 .{ .type = .i32, .kind = .{ .reg = .eax } },83531 .{ .type = .i32, .kind = .{ .reg = .eax } },
83590 .{ .type = .u8, .kind = .{ .reg = .cl } },83532 .{ .type = .u8, .kind = .{ .reg = .cl } },
83591 .{ .type = .u64, .kind = .{ .reg = .rdx } },83533 .{ .type = .u64, .kind = .{ .reg = .rdx } },
...@@ -83641,7 +83583,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -83641,7 +83583,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
83641 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },83583 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
83642 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },83584 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
83643 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },83585 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
83644 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } },83586 .{ .type = .usize, .kind = .{ .extern_func = "__cmphf2" } },
83645 .{ .type = .i32, .kind = .{ .reg = .eax } },83587 .{ .type = .i32, .kind = .{ .reg = .eax } },
83646 .{ .type = .u8, .kind = .{ .reg = .cl } },83588 .{ .type = .u8, .kind = .{ .reg = .cl } },
83647 .{ .type = .u64, .kind = .{ .reg = .rdx } },83589 .{ .type = .u64, .kind = .{ .reg = .rdx } },
...@@ -84482,7 +84424,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -84482,7 +84424,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
84482 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },84424 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
84483 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },84425 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
84484 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },84426 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
84485 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } },84427 .{ .type = .usize, .kind = .{ .extern_func = "__cmptf2" } },
84486 .{ .type = .i32, .kind = .{ .reg = .eax } },84428 .{ .type = .i32, .kind = .{ .reg = .eax } },
84487 .{ .type = .u8, .kind = .{ .reg = .cl } },84429 .{ .type = .u8, .kind = .{ .reg = .cl } },
84488 .{ .type = .u32, .kind = .{ .reg = .edx } },84430 .{ .type = .u32, .kind = .{ .reg = .edx } },
...@@ -84526,7 +84468,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -84526,7 +84468,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
84526 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },84468 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
84527 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },84469 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
84528 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },84470 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
84529 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } },84471 .{ .type = .usize, .kind = .{ .extern_func = "__cmptf2" } },
84530 .{ .type = .i32, .kind = .{ .reg = .eax } },84472 .{ .type = .i32, .kind = .{ .reg = .eax } },
84531 .{ .type = .u8, .kind = .{ .reg = .cl } },84473 .{ .type = .u8, .kind = .{ .reg = .cl } },
84532 .{ .type = .u32, .kind = .{ .reg = .edx } },84474 .{ .type = .u32, .kind = .{ .reg = .edx } },
...@@ -84570,7 +84512,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -84570,7 +84512,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
84570 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },84512 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
84571 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },84513 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
84572 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },84514 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
84573 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } },84515 .{ .type = .usize, .kind = .{ .extern_func = "__cmptf2" } },
84574 .{ .type = .i32, .kind = .{ .reg = .eax } },84516 .{ .type = .i32, .kind = .{ .reg = .eax } },
84575 .{ .type = .u8, .kind = .{ .reg = .cl } },84517 .{ .type = .u8, .kind = .{ .reg = .cl } },
84576 .{ .type = .u32, .kind = .{ .reg = .edx } },84518 .{ .type = .u32, .kind = .{ .reg = .edx } },
...@@ -84614,7 +84556,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -84614,7 +84556,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
84614 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },84556 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
84615 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },84557 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
84616 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },84558 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
84617 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } },84559 .{ .type = .usize, .kind = .{ .extern_func = "__cmptf2" } },
84618 .{ .type = .i32, .kind = .{ .reg = .eax } },84560 .{ .type = .i32, .kind = .{ .reg = .eax } },
84619 .{ .type = .u8, .kind = .{ .reg = .cl } },84561 .{ .type = .u8, .kind = .{ .reg = .cl } },
84620 .{ .type = .u32, .kind = .{ .reg = .edx } },84562 .{ .type = .u32, .kind = .{ .reg = .edx } },
...@@ -84658,7 +84600,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -84658,7 +84600,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
84658 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },84600 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
84659 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },84601 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
84660 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },84602 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
84661 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } },84603 .{ .type = .usize, .kind = .{ .extern_func = "__cmptf2" } },
84662 .{ .type = .i32, .kind = .{ .reg = .eax } },84604 .{ .type = .i32, .kind = .{ .reg = .eax } },
84663 .{ .type = .u8, .kind = .{ .reg = .cl } },84605 .{ .type = .u8, .kind = .{ .reg = .cl } },
84664 .{ .type = .u32, .kind = .{ .reg = .edx } },84606 .{ .type = .u32, .kind = .{ .reg = .edx } },
...@@ -84702,7 +84644,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -84702,7 +84644,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
84702 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },84644 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
84703 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },84645 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
84704 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },84646 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
84705 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } },84647 .{ .type = .usize, .kind = .{ .extern_func = "__cmptf2" } },
84706 .{ .type = .i32, .kind = .{ .reg = .eax } },84648 .{ .type = .i32, .kind = .{ .reg = .eax } },
84707 .{ .type = .u8, .kind = .{ .reg = .cl } },84649 .{ .type = .u8, .kind = .{ .reg = .cl } },
84708 .{ .type = .u32, .kind = .{ .reg = .edx } },84650 .{ .type = .u32, .kind = .{ .reg = .edx } },
...@@ -84746,7 +84688,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -84746,7 +84688,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
84746 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },84688 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
84747 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },84689 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
84748 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },84690 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
84749 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } },84691 .{ .type = .usize, .kind = .{ .extern_func = "__cmptf2" } },
84750 .{ .type = .i32, .kind = .{ .reg = .eax } },84692 .{ .type = .i32, .kind = .{ .reg = .eax } },
84751 .{ .type = .u8, .kind = .{ .reg = .cl } },84693 .{ .type = .u8, .kind = .{ .reg = .cl } },
84752 .{ .type = .u64, .kind = .{ .reg = .rdx } },84694 .{ .type = .u64, .kind = .{ .reg = .rdx } },
...@@ -84799,7 +84741,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -84799,7 +84741,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
84799 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },84741 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
84800 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },84742 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
84801 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },84743 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
84802 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } },84744 .{ .type = .usize, .kind = .{ .extern_func = "__cmptf2" } },
84803 .{ .type = .i32, .kind = .{ .reg = .eax } },84745 .{ .type = .i32, .kind = .{ .reg = .eax } },
84804 .{ .type = .u8, .kind = .{ .reg = .cl } },84746 .{ .type = .u8, .kind = .{ .reg = .cl } },
84805 .{ .type = .u64, .kind = .{ .reg = .rdx } },84747 .{ .type = .u64, .kind = .{ .reg = .rdx } },
...@@ -84852,7 +84794,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -84852,7 +84794,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
84852 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },84794 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
84853 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },84795 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
84854 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },84796 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
84855 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } },84797 .{ .type = .usize, .kind = .{ .extern_func = "__cmptf2" } },
84856 .{ .type = .i32, .kind = .{ .reg = .eax } },84798 .{ .type = .i32, .kind = .{ .reg = .eax } },
84857 .{ .type = .u8, .kind = .{ .reg = .cl } },84799 .{ .type = .u8, .kind = .{ .reg = .cl } },
84858 .{ .type = .u64, .kind = .{ .reg = .rdx } },84800 .{ .type = .u64, .kind = .{ .reg = .rdx } },
...@@ -84905,7 +84847,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -84905,7 +84847,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
84905 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },84847 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
84906 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },84848 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
84907 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },84849 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
84908 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } },84850 .{ .type = .usize, .kind = .{ .extern_func = "__cmptf2" } },
84909 .{ .type = .i32, .kind = .{ .reg = .eax } },84851 .{ .type = .i32, .kind = .{ .reg = .eax } },
84910 .{ .type = .u8, .kind = .{ .reg = .cl } },84852 .{ .type = .u8, .kind = .{ .reg = .cl } },
84911 .{ .type = .u64, .kind = .{ .reg = .rdx } },84853 .{ .type = .u64, .kind = .{ .reg = .rdx } },
...@@ -84958,7 +84900,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -84958,7 +84900,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
84958 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },84900 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
84959 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },84901 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
84960 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },84902 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
84961 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } },84903 .{ .type = .usize, .kind = .{ .extern_func = "__cmptf2" } },
84962 .{ .type = .i32, .kind = .{ .reg = .eax } },84904 .{ .type = .i32, .kind = .{ .reg = .eax } },
84963 .{ .type = .u8, .kind = .{ .reg = .cl } },84905 .{ .type = .u8, .kind = .{ .reg = .cl } },
84964 .{ .type = .u64, .kind = .{ .reg = .rdx } },84906 .{ .type = .u64, .kind = .{ .reg = .rdx } },
...@@ -85011,7 +84953,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -85011,7 +84953,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
85011 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },84953 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
85012 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },84954 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
85013 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },84955 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
85014 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } },84956 .{ .type = .usize, .kind = .{ .extern_func = "__cmptf2" } },
85015 .{ .type = .i32, .kind = .{ .reg = .eax } },84957 .{ .type = .i32, .kind = .{ .reg = .eax } },
85016 .{ .type = .u8, .kind = .{ .reg = .cl } },84958 .{ .type = .u8, .kind = .{ .reg = .cl } },
85017 .{ .type = .u64, .kind = .{ .reg = .rdx } },84959 .{ .type = .u64, .kind = .{ .reg = .rdx } },
...@@ -85109,6 +85051,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -85109,6 +85051,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
85109 .dbg_arg_inline,85051 .dbg_arg_inline,
85110 => |air_tag| if (use_old) try cg.airDbgVar(inst) else if (!cg.mod.strip) {85052 => |air_tag| if (use_old) try cg.airDbgVar(inst) else if (!cg.mod.strip) {
85111 const pl_op = air_datas[@intFromEnum(inst)].pl_op;85053 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);
85112 var ops = try cg.tempsFromOperands(inst, .{pl_op.operand});85056 var ops = try cg.tempsFromOperands(inst, .{pl_op.operand});
85113 var mcv = ops[0].tracking(cg).short;85057 var mcv = ops[0].tracking(cg).short;
85114 switch (mcv) {85058 switch (mcv) {
...@@ -85124,13 +85068,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -85124,13 +85068,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
85124 },85068 },
85125 }85069 }
8512685070
85127 const name_nts: Air.NullTerminatedString = @enumFromInt(pl_op.payload);85071 try cg.mir_locals.append(cg.gpa, .{
85128 assert(name_nts != .none);85072 .name = switch (air_name) {
85129 const name = name_nts.toSlice(cg.air);85073 .none => switch (air_tag) {
85130 try cg.mir_local_name_bytes.appendSlice(cg.gpa, name[0 .. name.len + 1]);85074 else => unreachable,
8513185075 .dbg_arg_inline => .none,
85132 const ty = cg.typeOf(pl_op.operand);85076 },
85133 try cg.mir_local_types.append(cg.gpa, ty.toIntern());85077 else => try cg.addString(air_name.toSlice(cg.air)),
85078 },
85079 .type = ty.toIntern(),
85080 });
8513485081
85135 try cg.genLocalDebugInfo(air_tag, ty, ops[0].tracking(cg).short);85082 try cg.genLocalDebugInfo(air_tag, ty, ops[0].tracking(cg).short);
85136 try ops[0].die(cg);85083 try ops[0].die(cg);
...@@ -85398,7 +85345,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -85398,7 +85345,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
85398 },85345 },
85399 .call_frame = .{ .alignment = .@"16" },85346 .call_frame = .{ .alignment = .@"16" },
85400 .extra_temps = .{85347 .extra_temps = .{
85401 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__truncsfhf2" } } },85348 .{ .type = .usize, .kind = .{ .extern_func = "__truncsfhf2" } },
85402 .unused,85349 .unused,
85403 .unused,85350 .unused,
85404 .unused,85351 .unused,
...@@ -85455,7 +85402,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -85455,7 +85402,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
85455 .extra_temps = .{85402 .extra_temps = .{
85456 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },85403 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
85457 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },85404 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
85458 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__truncsfhf2" } } },85405 .{ .type = .usize, .kind = .{ .extern_func = "__truncsfhf2" } },
85459 .unused,85406 .unused,
85460 .unused,85407 .unused,
85461 .unused,85408 .unused,
...@@ -85486,7 +85433,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -85486,7 +85433,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
85486 .extra_temps = .{85433 .extra_temps = .{
85487 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },85434 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
85488 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },85435 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
85489 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__truncsfhf2" } } },85436 .{ .type = .usize, .kind = .{ .extern_func = "__truncsfhf2" } },
85490 .unused,85437 .unused,
85491 .unused,85438 .unused,
85492 .unused,85439 .unused,
...@@ -85517,7 +85464,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -85517,7 +85464,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
85517 .extra_temps = .{85464 .extra_temps = .{
85518 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },85465 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
85519 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },85466 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
85520 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__truncsfhf2" } } },85467 .{ .type = .usize, .kind = .{ .extern_func = "__truncsfhf2" } },
85521 .{ .type = .f16, .kind = .{ .reg = .ax } },85468 .{ .type = .f16, .kind = .{ .reg = .ax } },
85522 .unused,85469 .unused,
85523 .unused,85470 .unused,
...@@ -85549,7 +85496,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -85549,7 +85496,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
85549 .extra_temps = .{85496 .extra_temps = .{
85550 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },85497 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
85551 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },85498 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
85552 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__truncsfhf2" } } },85499 .{ .type = .usize, .kind = .{ .extern_func = "__truncsfhf2" } },
85553 .{ .type = .f32, .kind = .mem },85500 .{ .type = .f32, .kind = .mem },
85554 .{ .type = .f16, .kind = .{ .reg = .ax } },85501 .{ .type = .f16, .kind = .{ .reg = .ax } },
85555 .unused,85502 .unused,
...@@ -85580,7 +85527,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -85580,7 +85527,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
85580 },85527 },
85581 .call_frame = .{ .alignment = .@"16" },85528 .call_frame = .{ .alignment = .@"16" },
85582 .extra_temps = .{85529 .extra_temps = .{
85583 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__truncdfhf2" } } },85530 .{ .type = .usize, .kind = .{ .extern_func = "__truncdfhf2" } },
85584 .unused,85531 .unused,
85585 .unused,85532 .unused,
85586 .unused,85533 .unused,
...@@ -85608,7 +85555,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -85608,7 +85555,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
85608 .extra_temps = .{85555 .extra_temps = .{
85609 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },85556 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
85610 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },85557 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
85611 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__truncdfhf2" } } },85558 .{ .type = .usize, .kind = .{ .extern_func = "__truncdfhf2" } },
85612 .unused,85559 .unused,
85613 .unused,85560 .unused,
85614 .unused,85561 .unused,
...@@ -85639,7 +85586,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -85639,7 +85586,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
85639 .extra_temps = .{85586 .extra_temps = .{
85640 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },85587 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
85641 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },85588 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
85642 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__truncdfhf2" } } },85589 .{ .type = .usize, .kind = .{ .extern_func = "__truncdfhf2" } },
85643 .unused,85590 .unused,
85644 .unused,85591 .unused,
85645 .unused,85592 .unused,
...@@ -85670,7 +85617,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -85670,7 +85617,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
85670 .extra_temps = .{85617 .extra_temps = .{
85671 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },85618 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
85672 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },85619 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
85673 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__truncdfhf2" } } },85620 .{ .type = .usize, .kind = .{ .extern_func = "__truncdfhf2" } },
85674 .{ .type = .f16, .kind = .{ .reg = .ax } },85621 .{ .type = .f16, .kind = .{ .reg = .ax } },
85675 .unused,85622 .unused,
85676 .unused,85623 .unused,
...@@ -85702,7 +85649,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -85702,7 +85649,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
85702 .extra_temps = .{85649 .extra_temps = .{
85703 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },85650 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
85704 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },85651 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
85705 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__truncdfhf2" } } },85652 .{ .type = .usize, .kind = .{ .extern_func = "__truncdfhf2" } },
85706 .{ .type = .f32, .kind = .mem },85653 .{ .type = .f32, .kind = .mem },
85707 .{ .type = .f16, .kind = .{ .reg = .ax } },85654 .{ .type = .f16, .kind = .{ .reg = .ax } },
85708 .unused,85655 .unused,
...@@ -85919,7 +85866,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -85919,7 +85866,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
85919 .call_frame = .{ .size = 16, .alignment = .@"16" },85866 .call_frame = .{ .size = 16, .alignment = .@"16" },
85920 .extra_temps = .{85867 .extra_temps = .{
85921 .{ .type = .f80, .kind = .{ .frame = .call_frame } },85868 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
85922 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__truncxfhf2" } } },85869 .{ .type = .usize, .kind = .{ .extern_func = "__truncxfhf2" } },
85923 .unused,85870 .unused,
85924 .unused,85871 .unused,
85925 .unused,85872 .unused,
...@@ -85947,7 +85894,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -85947,7 +85894,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
85947 .call_frame = .{ .size = 16, .alignment = .@"16" },85894 .call_frame = .{ .size = 16, .alignment = .@"16" },
85948 .extra_temps = .{85895 .extra_temps = .{
85949 .{ .type = .f80, .kind = .{ .frame = .call_frame } },85896 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
85950 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__truncxfhf2" } } },85897 .{ .type = .usize, .kind = .{ .extern_func = "__truncxfhf2" } },
85951 .unused,85898 .unused,
85952 .unused,85899 .unused,
85953 .unused,85900 .unused,
...@@ -85975,7 +85922,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -85975,7 +85922,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
85975 .call_frame = .{ .size = 16, .alignment = .@"16" },85922 .call_frame = .{ .size = 16, .alignment = .@"16" },
85976 .extra_temps = .{85923 .extra_temps = .{
85977 .{ .type = .f80, .kind = .{ .frame = .call_frame } },85924 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
85978 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__truncxfhf2" } } },85925 .{ .type = .usize, .kind = .{ .extern_func = "__truncxfhf2" } },
85979 .unused,85926 .unused,
85980 .unused,85927 .unused,
85981 .unused,85928 .unused,
...@@ -86005,7 +85952,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -86005,7 +85952,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
86005 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },85952 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
86006 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },85953 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
86007 .{ .type = .f80, .kind = .{ .frame = .call_frame } },85954 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
86008 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__truncxfhf2" } } },85955 .{ .type = .usize, .kind = .{ .extern_func = "__truncxfhf2" } },
86009 .unused,85956 .unused,
86010 .unused,85957 .unused,
86011 .unused,85958 .unused,
...@@ -86037,7 +85984,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -86037,7 +85984,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
86037 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },85984 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
86038 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },85985 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
86039 .{ .type = .f80, .kind = .{ .frame = .call_frame } },85986 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
86040 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__truncxfhf2" } } },85987 .{ .type = .usize, .kind = .{ .extern_func = "__truncxfhf2" } },
86041 .unused,85988 .unused,
86042 .unused,85989 .unused,
86043 .unused,85990 .unused,
...@@ -86069,7 +86016,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -86069,7 +86016,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
86069 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },86016 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
86070 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },86017 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
86071 .{ .type = .f80, .kind = .{ .frame = .call_frame } },86018 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
86072 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__truncxfhf2" } } },86019 .{ .type = .usize, .kind = .{ .extern_func = "__truncxfhf2" } },
86073 .{ .type = .f16, .kind = .{ .reg = .ax } },86020 .{ .type = .f16, .kind = .{ .reg = .ax } },
86074 .unused,86021 .unused,
86075 .unused,86022 .unused,
...@@ -86102,7 +86049,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -86102,7 +86049,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
86102 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },86049 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
86103 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },86050 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
86104 .{ .type = .f80, .kind = .{ .frame = .call_frame } },86051 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
86105 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__truncxfhf2" } } },86052 .{ .type = .usize, .kind = .{ .extern_func = "__truncxfhf2" } },
86106 .{ .type = .f16, .kind = .{ .reg = .ax } },86053 .{ .type = .f16, .kind = .{ .reg = .ax } },
86107 .unused,86054 .unused,
86108 .unused,86055 .unused,
...@@ -86243,7 +86190,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -86243,7 +86190,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
86243 },86190 },
86244 .call_frame = .{ .alignment = .@"16" },86191 .call_frame = .{ .alignment = .@"16" },
86245 .extra_temps = .{86192 .extra_temps = .{
86246 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfhf2" } } },86193 .{ .type = .usize, .kind = .{ .extern_func = "__trunctfhf2" } },
86247 .unused,86194 .unused,
86248 .unused,86195 .unused,
86249 .unused,86196 .unused,
...@@ -86271,7 +86218,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -86271,7 +86218,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
86271 .extra_temps = .{86218 .extra_temps = .{
86272 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },86219 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
86273 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },86220 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
86274 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfhf2" } } },86221 .{ .type = .usize, .kind = .{ .extern_func = "__trunctfhf2" } },
86275 .unused,86222 .unused,
86276 .unused,86223 .unused,
86277 .unused,86224 .unused,
...@@ -86302,7 +86249,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -86302,7 +86249,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
86302 .extra_temps = .{86249 .extra_temps = .{
86303 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },86250 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
86304 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },86251 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
86305 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfhf2" } } },86252 .{ .type = .usize, .kind = .{ .extern_func = "__trunctfhf2" } },
86306 .unused,86253 .unused,
86307 .unused,86254 .unused,
86308 .unused,86255 .unused,
...@@ -86333,7 +86280,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -86333,7 +86280,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
86333 .extra_temps = .{86280 .extra_temps = .{
86334 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },86281 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
86335 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },86282 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
86336 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfhf2" } } },86283 .{ .type = .usize, .kind = .{ .extern_func = "__trunctfhf2" } },
86337 .{ .type = .f16, .kind = .{ .reg = .ax } },86284 .{ .type = .f16, .kind = .{ .reg = .ax } },
86338 .unused,86285 .unused,
86339 .unused,86286 .unused,
...@@ -86365,7 +86312,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -86365,7 +86312,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
86365 .extra_temps = .{86312 .extra_temps = .{
86366 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },86313 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
86367 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },86314 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
86368 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfhf2" } } },86315 .{ .type = .usize, .kind = .{ .extern_func = "__trunctfhf2" } },
86369 .{ .type = .f32, .kind = .mem },86316 .{ .type = .f32, .kind = .mem },
86370 .{ .type = .f16, .kind = .{ .reg = .ax } },86317 .{ .type = .f16, .kind = .{ .reg = .ax } },
86371 .unused,86318 .unused,
...@@ -86396,7 +86343,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -86396,7 +86343,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
86396 },86343 },
86397 .call_frame = .{ .alignment = .@"16" },86344 .call_frame = .{ .alignment = .@"16" },
86398 .extra_temps = .{86345 .extra_temps = .{
86399 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfsf2" } } },86346 .{ .type = .usize, .kind = .{ .extern_func = "__trunctfsf2" } },
86400 .unused,86347 .unused,
86401 .unused,86348 .unused,
86402 .unused,86349 .unused,
...@@ -86424,7 +86371,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -86424,7 +86371,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
86424 .extra_temps = .{86371 .extra_temps = .{
86425 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },86372 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
86426 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },86373 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
86427 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfsf2" } } },86374 .{ .type = .usize, .kind = .{ .extern_func = "__trunctfsf2" } },
86428 .unused,86375 .unused,
86429 .unused,86376 .unused,
86430 .unused,86377 .unused,
...@@ -86455,7 +86402,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -86455,7 +86402,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
86455 .extra_temps = .{86402 .extra_temps = .{
86456 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },86403 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
86457 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },86404 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
86458 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfsf2" } } },86405 .{ .type = .usize, .kind = .{ .extern_func = "__trunctfsf2" } },
86459 .unused,86406 .unused,
86460 .unused,86407 .unused,
86461 .unused,86408 .unused,
...@@ -86486,7 +86433,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -86486,7 +86433,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
86486 .extra_temps = .{86433 .extra_temps = .{
86487 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },86434 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
86488 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },86435 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
86489 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfsf2" } } },86436 .{ .type = .usize, .kind = .{ .extern_func = "__trunctfsf2" } },
86490 .unused,86437 .unused,
86491 .unused,86438 .unused,
86492 .unused,86439 .unused,
...@@ -86515,7 +86462,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -86515,7 +86462,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
86515 },86462 },
86516 .call_frame = .{ .alignment = .@"16" },86463 .call_frame = .{ .alignment = .@"16" },
86517 .extra_temps = .{86464 .extra_temps = .{
86518 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfdf2" } } },86465 .{ .type = .usize, .kind = .{ .extern_func = "__trunctfdf2" } },
86519 .unused,86466 .unused,
86520 .unused,86467 .unused,
86521 .unused,86468 .unused,
...@@ -86543,7 +86490,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -86543,7 +86490,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
86543 .extra_temps = .{86490 .extra_temps = .{
86544 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },86491 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
86545 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },86492 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
86546 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfdf2" } } },86493 .{ .type = .usize, .kind = .{ .extern_func = "__trunctfdf2" } },
86547 .unused,86494 .unused,
86548 .unused,86495 .unused,
86549 .unused,86496 .unused,
...@@ -86574,7 +86521,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -86574,7 +86521,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
86574 .extra_temps = .{86521 .extra_temps = .{
86575 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },86522 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
86576 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },86523 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
86577 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfdf2" } } },86524 .{ .type = .usize, .kind = .{ .extern_func = "__trunctfdf2" } },
86578 .unused,86525 .unused,
86579 .unused,86526 .unused,
86580 .unused,86527 .unused,
...@@ -86605,7 +86552,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -86605,7 +86552,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
86605 .extra_temps = .{86552 .extra_temps = .{
86606 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },86553 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
86607 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },86554 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
86608 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfdf2" } } },86555 .{ .type = .usize, .kind = .{ .extern_func = "__trunctfdf2" } },
86609 .unused,86556 .unused,
86610 .unused,86557 .unused,
86611 .unused,86558 .unused,
...@@ -86634,7 +86581,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -86634,7 +86581,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
86634 },86581 },
86635 .call_frame = .{ .alignment = .@"16" },86582 .call_frame = .{ .alignment = .@"16" },
86636 .extra_temps = .{86583 .extra_temps = .{
86637 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfxf2" } } },86584 .{ .type = .usize, .kind = .{ .extern_func = "__trunctfxf2" } },
86638 .unused,86585 .unused,
86639 .unused,86586 .unused,
86640 .unused,86587 .unused,
...@@ -86662,7 +86609,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -86662,7 +86609,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
86662 .extra_temps = .{86609 .extra_temps = .{
86663 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },86610 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
86664 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },86611 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
86665 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfxf2" } } },86612 .{ .type = .usize, .kind = .{ .extern_func = "__trunctfxf2" } },
86666 .unused,86613 .unused,
86667 .unused,86614 .unused,
86668 .unused,86615 .unused,
...@@ -86694,7 +86641,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -86694,7 +86641,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
86694 .extra_temps = .{86641 .extra_temps = .{
86695 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },86642 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
86696 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },86643 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
86697 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfxf2" } } },86644 .{ .type = .usize, .kind = .{ .extern_func = "__trunctfxf2" } },
86698 .unused,86645 .unused,
86699 .unused,86646 .unused,
86700 .unused,86647 .unused,
...@@ -86726,7 +86673,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -86726,7 +86673,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
86726 .extra_temps = .{86673 .extra_temps = .{
86727 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },86674 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
86728 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },86675 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
86729 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfxf2" } } },86676 .{ .type = .usize, .kind = .{ .extern_func = "__trunctfxf2" } },
86730 .unused,86677 .unused,
86731 .unused,86678 .unused,
86732 .unused,86679 .unused,
...@@ -86806,7 +86753,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -86806,7 +86753,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
86806 },86753 },
86807 .call_frame = .{ .alignment = .@"16" },86754 .call_frame = .{ .alignment = .@"16" },
86808 .extra_temps = .{86755 .extra_temps = .{
86809 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendhfsf2" } } },86756 .{ .type = .usize, .kind = .{ .extern_func = "__extendhfsf2" } },
86810 .unused,86757 .unused,
86811 .unused,86758 .unused,
86812 .unused,86759 .unused,
...@@ -86863,7 +86810,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -86863,7 +86810,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
86863 .extra_temps = .{86810 .extra_temps = .{
86864 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },86811 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
86865 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },86812 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
86866 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendhfsf2" } } },86813 .{ .type = .usize, .kind = .{ .extern_func = "__extendhfsf2" } },
86867 .unused,86814 .unused,
86868 .unused,86815 .unused,
86869 .unused,86816 .unused,
...@@ -86895,7 +86842,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -86895,7 +86842,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
86895 .extra_temps = .{86842 .extra_temps = .{
86896 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },86843 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
86897 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },86844 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
86898 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendhfsf2" } } },86845 .{ .type = .usize, .kind = .{ .extern_func = "__extendhfsf2" } },
86899 .unused,86846 .unused,
86900 .unused,86847 .unused,
86901 .unused,86848 .unused,
...@@ -86929,7 +86876,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -86929,7 +86876,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
86929 .{ .type = .f16, .kind = .{ .reg = .ax } },86876 .{ .type = .f16, .kind = .{ .reg = .ax } },
86930 .{ .type = .f32, .kind = .mem },86877 .{ .type = .f32, .kind = .mem },
86931 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },86878 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
86932 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendhfsf2" } } },86879 .{ .type = .usize, .kind = .{ .extern_func = "__extendhfsf2" } },
86933 .unused,86880 .unused,
86934 .unused,86881 .unused,
86935 .unused,86882 .unused,
...@@ -87026,7 +86973,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -87026,7 +86973,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
87026 },86973 },
87027 .call_frame = .{ .alignment = .@"16" },86974 .call_frame = .{ .alignment = .@"16" },
87028 .extra_temps = .{86975 .extra_temps = .{
87029 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendhfdf2" } } },86976 .{ .type = .usize, .kind = .{ .extern_func = "__extendhfdf2" } },
87030 .unused,86977 .unused,
87031 .unused,86978 .unused,
87032 .unused,86979 .unused,
...@@ -87087,7 +87034,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -87087,7 +87034,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
87087 .extra_temps = .{87034 .extra_temps = .{
87088 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },87035 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
87089 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },87036 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
87090 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendhfdf2" } } },87037 .{ .type = .usize, .kind = .{ .extern_func = "__extendhfdf2" } },
87091 .unused,87038 .unused,
87092 .unused,87039 .unused,
87093 .unused,87040 .unused,
...@@ -87119,7 +87066,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -87119,7 +87066,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
87119 .extra_temps = .{87066 .extra_temps = .{
87120 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },87067 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
87121 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },87068 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
87122 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendhfdf2" } } },87069 .{ .type = .usize, .kind = .{ .extern_func = "__extendhfdf2" } },
87123 .unused,87070 .unused,
87124 .unused,87071 .unused,
87125 .unused,87072 .unused,
...@@ -87153,7 +87100,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -87153,7 +87100,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
87153 .{ .type = .f16, .kind = .{ .reg = .ax } },87100 .{ .type = .f16, .kind = .{ .reg = .ax } },
87154 .{ .type = .f32, .kind = .mem },87101 .{ .type = .f32, .kind = .mem },
87155 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },87102 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
87156 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendhfdf2" } } },87103 .{ .type = .usize, .kind = .{ .extern_func = "__extendhfdf2" } },
87157 .unused,87104 .unused,
87158 .unused,87105 .unused,
87159 .unused,87106 .unused,
...@@ -87209,7 +87156,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -87209,7 +87156,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
87209 },87156 },
87210 .call_frame = .{ .alignment = .@"16" },87157 .call_frame = .{ .alignment = .@"16" },
87211 .extra_temps = .{87158 .extra_temps = .{
87212 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendhfxf2" } } },87159 .{ .type = .usize, .kind = .{ .extern_func = "__extendhfxf2" } },
87213 .unused,87160 .unused,
87214 .unused,87161 .unused,
87215 .unused,87162 .unused,
...@@ -87237,7 +87184,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -87237,7 +87184,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
87237 .extra_temps = .{87184 .extra_temps = .{
87238 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },87185 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
87239 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },87186 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
87240 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendhfxf2" } } },87187 .{ .type = .usize, .kind = .{ .extern_func = "__extendhfxf2" } },
87241 .unused,87188 .unused,
87242 .unused,87189 .unused,
87243 .unused,87190 .unused,
...@@ -87270,7 +87217,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -87270,7 +87217,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
87270 .extra_temps = .{87217 .extra_temps = .{
87271 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },87218 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
87272 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },87219 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
87273 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendhfxf2" } } },87220 .{ .type = .usize, .kind = .{ .extern_func = "__extendhfxf2" } },
87274 .unused,87221 .unused,
87275 .unused,87222 .unused,
87276 .unused,87223 .unused,
...@@ -87305,7 +87252,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -87305,7 +87252,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
87305 .{ .type = .f16, .kind = .{ .reg = .ax } },87252 .{ .type = .f16, .kind = .{ .reg = .ax } },
87306 .{ .type = .f32, .kind = .mem },87253 .{ .type = .f32, .kind = .mem },
87307 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },87254 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
87308 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendhfxf2" } } },87255 .{ .type = .usize, .kind = .{ .extern_func = "__extendhfxf2" } },
87309 .unused,87256 .unused,
87310 .unused,87257 .unused,
87311 .unused,87258 .unused,
...@@ -87335,7 +87282,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -87335,7 +87282,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
87335 },87282 },
87336 .call_frame = .{ .alignment = .@"16" },87283 .call_frame = .{ .alignment = .@"16" },
87337 .extra_temps = .{87284 .extra_temps = .{
87338 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendhftf2" } } },87285 .{ .type = .usize, .kind = .{ .extern_func = "__extendhftf2" } },
87339 .unused,87286 .unused,
87340 .unused,87287 .unused,
87341 .unused,87288 .unused,
...@@ -87363,7 +87310,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -87363,7 +87310,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
87363 .extra_temps = .{87310 .extra_temps = .{
87364 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },87311 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
87365 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },87312 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
87366 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendhftf2" } } },87313 .{ .type = .usize, .kind = .{ .extern_func = "__extendhftf2" } },
87367 .unused,87314 .unused,
87368 .unused,87315 .unused,
87369 .unused,87316 .unused,
...@@ -87395,7 +87342,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -87395,7 +87342,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
87395 .extra_temps = .{87342 .extra_temps = .{
87396 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },87343 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
87397 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },87344 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
87398 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendhftf2" } } },87345 .{ .type = .usize, .kind = .{ .extern_func = "__extendhftf2" } },
87399 .unused,87346 .unused,
87400 .unused,87347 .unused,
87401 .unused,87348 .unused,
...@@ -87429,7 +87376,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -87429,7 +87376,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
87429 .{ .type = .f16, .kind = .{ .reg = .ax } },87376 .{ .type = .f16, .kind = .{ .reg = .ax } },
87430 .{ .type = .f32, .kind = .mem },87377 .{ .type = .f32, .kind = .mem },
87431 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },87378 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
87432 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendhftf2" } } },87379 .{ .type = .usize, .kind = .{ .extern_func = "__extendhftf2" } },
87433 .unused,87380 .unused,
87434 .unused,87381 .unused,
87435 .unused,87382 .unused,
...@@ -87696,7 +87643,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -87696,7 +87643,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
87696 },87643 },
87697 .call_frame = .{ .alignment = .@"16" },87644 .call_frame = .{ .alignment = .@"16" },
87698 .extra_temps = .{87645 .extra_temps = .{
87699 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendsftf2" } } },87646 .{ .type = .usize, .kind = .{ .extern_func = "__extendsftf2" } },
87700 .unused,87647 .unused,
87701 .unused,87648 .unused,
87702 .unused,87649 .unused,
...@@ -87724,7 +87671,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -87724,7 +87671,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
87724 .extra_temps = .{87671 .extra_temps = .{
87725 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },87672 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
87726 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },87673 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
87727 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendsftf2" } } },87674 .{ .type = .usize, .kind = .{ .extern_func = "__extendsftf2" } },
87728 .unused,87675 .unused,
87729 .unused,87676 .unused,
87730 .unused,87677 .unused,
...@@ -87755,7 +87702,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -87755,7 +87702,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
87755 .extra_temps = .{87702 .extra_temps = .{
87756 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },87703 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
87757 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },87704 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
87758 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendsftf2" } } },87705 .{ .type = .usize, .kind = .{ .extern_func = "__extendsftf2" } },
87759 .unused,87706 .unused,
87760 .unused,87707 .unused,
87761 .unused,87708 .unused,
...@@ -87786,7 +87733,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -87786,7 +87733,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
87786 .extra_temps = .{87733 .extra_temps = .{
87787 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },87734 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
87788 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },87735 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
87789 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendsftf2" } } },87736 .{ .type = .usize, .kind = .{ .extern_func = "__extendsftf2" } },
87790 .unused,87737 .unused,
87791 .unused,87738 .unused,
87792 .unused,87739 .unused,
...@@ -87869,7 +87816,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -87869,7 +87816,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
87869 },87816 },
87870 .call_frame = .{ .alignment = .@"16" },87817 .call_frame = .{ .alignment = .@"16" },
87871 .extra_temps = .{87818 .extra_temps = .{
87872 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extenddftf2" } } },87819 .{ .type = .usize, .kind = .{ .extern_func = "__extenddftf2" } },
87873 .unused,87820 .unused,
87874 .unused,87821 .unused,
87875 .unused,87822 .unused,
...@@ -87897,7 +87844,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -87897,7 +87844,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
87897 .extra_temps = .{87844 .extra_temps = .{
87898 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },87845 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
87899 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },87846 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
87900 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extenddftf2" } } },87847 .{ .type = .usize, .kind = .{ .extern_func = "__extenddftf2" } },
87901 .unused,87848 .unused,
87902 .unused,87849 .unused,
87903 .unused,87850 .unused,
...@@ -87928,7 +87875,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -87928,7 +87875,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
87928 .extra_temps = .{87875 .extra_temps = .{
87929 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },87876 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
87930 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },87877 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
87931 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extenddftf2" } } },87878 .{ .type = .usize, .kind = .{ .extern_func = "__extenddftf2" } },
87932 .unused,87879 .unused,
87933 .unused,87880 .unused,
87934 .unused,87881 .unused,
...@@ -87959,7 +87906,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -87959,7 +87906,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
87959 .extra_temps = .{87906 .extra_temps = .{
87960 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },87907 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
87961 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },87908 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
87962 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extenddftf2" } } },87909 .{ .type = .usize, .kind = .{ .extern_func = "__extenddftf2" } },
87963 .unused,87910 .unused,
87964 .unused,87911 .unused,
87965 .unused,87912 .unused,
...@@ -87990,7 +87937,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -87990,7 +87937,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
87990 .call_frame = .{ .size = 16, .alignment = .@"16" },87937 .call_frame = .{ .size = 16, .alignment = .@"16" },
87991 .extra_temps = .{87938 .extra_temps = .{
87992 .{ .type = .f80, .kind = .{ .frame = .call_frame } },87939 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
87993 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendxftf2" } } },87940 .{ .type = .usize, .kind = .{ .extern_func = "__extendxftf2" } },
87994 .unused,87941 .unused,
87995 .unused,87942 .unused,
87996 .unused,87943 .unused,
...@@ -88018,7 +87965,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -88018,7 +87965,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
88018 .call_frame = .{ .size = 16, .alignment = .@"16" },87965 .call_frame = .{ .size = 16, .alignment = .@"16" },
88019 .extra_temps = .{87966 .extra_temps = .{
88020 .{ .type = .f80, .kind = .{ .frame = .call_frame } },87967 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
88021 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendxftf2" } } },87968 .{ .type = .usize, .kind = .{ .extern_func = "__extendxftf2" } },
88022 .unused,87969 .unused,
88023 .unused,87970 .unused,
88024 .unused,87971 .unused,
...@@ -88046,7 +87993,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -88046,7 +87993,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
88046 .call_frame = .{ .size = 16, .alignment = .@"16" },87993 .call_frame = .{ .size = 16, .alignment = .@"16" },
88047 .extra_temps = .{87994 .extra_temps = .{
88048 .{ .type = .f80, .kind = .{ .frame = .call_frame } },87995 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
88049 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendxftf2" } } },87996 .{ .type = .usize, .kind = .{ .extern_func = "__extendxftf2" } },
88050 .unused,87997 .unused,
88051 .unused,87998 .unused,
88052 .unused,87999 .unused,
...@@ -88076,7 +88023,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -88076,7 +88023,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
88076 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },88023 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
88077 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },88024 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
88078 .{ .type = .f80, .kind = .{ .frame = .call_frame } },88025 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
88079 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendxftf2" } } },88026 .{ .type = .usize, .kind = .{ .extern_func = "__extendxftf2" } },
88080 .unused,88027 .unused,
88081 .unused,88028 .unused,
88082 .unused,88029 .unused,
...@@ -88108,7 +88055,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -88108,7 +88055,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
88108 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },88055 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
88109 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },88056 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
88110 .{ .type = .f80, .kind = .{ .frame = .call_frame } },88057 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
88111 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendxftf2" } } },88058 .{ .type = .usize, .kind = .{ .extern_func = "__extendxftf2" } },
88112 .unused,88059 .unused,
88113 .unused,88060 .unused,
88114 .unused,88061 .unused,
...@@ -88140,7 +88087,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -88140,7 +88087,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
88140 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },88087 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
88141 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },88088 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
88142 .{ .type = .f80, .kind = .{ .frame = .call_frame } },88089 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
88143 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendxftf2" } } },88090 .{ .type = .usize, .kind = .{ .extern_func = "__extendxftf2" } },
88144 .unused,88091 .unused,
88145 .unused,88092 .unused,
88146 .unused,88093 .unused,
...@@ -98891,9 +98838,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -98891,9 +98838,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
98891 } }) catch |err| switch (err) {98838 } }) catch |err| switch (err) {
98892 error.SelectFailed => {98839 error.SelectFailed => {
98893 const elem_size = res_ty.abiSize(zcu);98840 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);
98895 while (try ops[0].toBase(false, cg) or98842 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))
98897 {}98845 {}
98898 const base_reg = base.tracking(cg).short.register.to64();98846 const base_reg = base.tracking(cg).short.register.to64();
98899 const rhs_reg = ops[1].tracking(cg).short.register.to64();98847 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 {...@@ -99334,7 +99282,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
99334 },99282 },
99335 .call_frame = .{ .alignment = .@"16" },99283 .call_frame = .{ .alignment = .@"16" },
99336 .extra_temps = .{99284 .extra_temps = .{
99337 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixhfsi" } } },99285 .{ .type = .usize, .kind = .{ .extern_func = "__fixhfsi" } },
99338 .unused,99286 .unused,
99339 .unused,99287 .unused,
99340 .unused,99288 .unused,
...@@ -99360,7 +99308,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -99360,7 +99308,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
99360 },99308 },
99361 .call_frame = .{ .alignment = .@"16" },99309 .call_frame = .{ .alignment = .@"16" },
99362 .extra_temps = .{99310 .extra_temps = .{
99363 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunshfsi" } } },99311 .{ .type = .usize, .kind = .{ .extern_func = "__fixunshfsi" } },
99364 .unused,99312 .unused,
99365 .unused,99313 .unused,
99366 .unused,99314 .unused,
...@@ -99386,7 +99334,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -99386,7 +99334,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
99386 },99334 },
99387 .call_frame = .{ .alignment = .@"16" },99335 .call_frame = .{ .alignment = .@"16" },
99388 .extra_temps = .{99336 .extra_temps = .{
99389 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixhfdi" } } },99337 .{ .type = .usize, .kind = .{ .extern_func = "__fixhfdi" } },
99390 .unused,99338 .unused,
99391 .unused,99339 .unused,
99392 .unused,99340 .unused,
...@@ -99412,7 +99360,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -99412,7 +99360,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
99412 },99360 },
99413 .call_frame = .{ .alignment = .@"16" },99361 .call_frame = .{ .alignment = .@"16" },
99414 .extra_temps = .{99362 .extra_temps = .{
99415 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunshfdi" } } },99363 .{ .type = .usize, .kind = .{ .extern_func = "__fixunshfdi" } },
99416 .unused,99364 .unused,
99417 .unused,99365 .unused,
99418 .unused,99366 .unused,
...@@ -99438,7 +99386,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -99438,7 +99386,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
99438 },99386 },
99439 .call_frame = .{ .alignment = .@"16" },99387 .call_frame = .{ .alignment = .@"16" },
99440 .extra_temps = .{99388 .extra_temps = .{
99441 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixhfti" } } },99389 .{ .type = .usize, .kind = .{ .extern_func = "__fixhfti" } },
99442 .unused,99390 .unused,
99443 .unused,99391 .unused,
99444 .unused,99392 .unused,
...@@ -99464,7 +99412,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -99464,7 +99412,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
99464 },99412 },
99465 .call_frame = .{ .alignment = .@"16" },99413 .call_frame = .{ .alignment = .@"16" },
99466 .extra_temps = .{99414 .extra_temps = .{
99467 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunshfti" } } },99415 .{ .type = .usize, .kind = .{ .extern_func = "__fixunshfti" } },
99468 .unused,99416 .unused,
99469 .unused,99417 .unused,
99470 .unused,99418 .unused,
...@@ -99490,7 +99438,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -99490,7 +99438,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
99490 },99438 },
99491 .call_frame = .{ .alignment = .@"16" },99439 .call_frame = .{ .alignment = .@"16" },
99492 .extra_temps = .{99440 .extra_temps = .{
99493 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixhfdi" } } },99441 .{ .type = .usize, .kind = .{ .extern_func = "__fixhfdi" } },
99494 .{ .type = .i64, .kind = .{ .reg = .rax } },99442 .{ .type = .i64, .kind = .{ .reg = .rax } },
99495 .{ .type = .usize, .kind = .{ .reg = .rdi } },99443 .{ .type = .usize, .kind = .{ .reg = .rdi } },
99496 .{ .type = .u32, .kind = .{ .reg = .ecx } },99444 .{ .type = .u32, .kind = .{ .reg = .ecx } },
...@@ -99521,7 +99469,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -99521,7 +99469,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
99521 },99469 },
99522 .call_frame = .{ .alignment = .@"16" },99470 .call_frame = .{ .alignment = .@"16" },
99523 .extra_temps = .{99471 .extra_temps = .{
99524 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunshfdi" } } },99472 .{ .type = .usize, .kind = .{ .extern_func = "__fixunshfdi" } },
99525 .{ .type = .i64, .kind = .{ .reg = .rax } },99473 .{ .type = .i64, .kind = .{ .reg = .rax } },
99526 .{ .type = .usize, .kind = .{ .reg = .rdi } },99474 .{ .type = .usize, .kind = .{ .reg = .rdi } },
99527 .{ .type = .u32, .kind = .{ .reg = .ecx } },99475 .{ .type = .u32, .kind = .{ .reg = .ecx } },
...@@ -99615,7 +99563,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -99615,7 +99563,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
99615 .extra_temps = .{99563 .extra_temps = .{
99616 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },99564 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
99617 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },99565 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
99618 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixhfsi" } } },99566 .{ .type = .usize, .kind = .{ .extern_func = "__fixhfsi" } },
99619 .{ .type = .i32, .kind = .{ .reg = .eax } },99567 .{ .type = .i32, .kind = .{ .reg = .eax } },
99620 .unused,99568 .unused,
99621 .unused,99569 .unused,
...@@ -99647,7 +99595,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -99647,7 +99595,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
99647 .extra_temps = .{99595 .extra_temps = .{
99648 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },99596 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
99649 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },99597 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
99650 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixhfsi" } } },99598 .{ .type = .usize, .kind = .{ .extern_func = "__fixhfsi" } },
99651 .{ .type = .i32, .kind = .{ .reg = .eax } },99599 .{ .type = .i32, .kind = .{ .reg = .eax } },
99652 .unused,99600 .unused,
99653 .unused,99601 .unused,
...@@ -99679,7 +99627,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -99679,7 +99627,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
99679 .extra_temps = .{99627 .extra_temps = .{
99680 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },99628 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
99681 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },99629 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
99682 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixhfsi" } } },99630 .{ .type = .usize, .kind = .{ .extern_func = "__fixhfsi" } },
99683 .{ .type = .i32, .kind = .{ .reg = .eax } },99631 .{ .type = .i32, .kind = .{ .reg = .eax } },
99684 .unused,99632 .unused,
99685 .unused,99633 .unused,
...@@ -99711,7 +99659,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -99711,7 +99659,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
99711 .extra_temps = .{99659 .extra_temps = .{
99712 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },99660 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
99713 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },99661 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
99714 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixhfsi" } } },99662 .{ .type = .usize, .kind = .{ .extern_func = "__fixhfsi" } },
99715 .{ .type = .i32, .kind = .{ .reg = .eax } },99663 .{ .type = .i32, .kind = .{ .reg = .eax } },
99716 .unused,99664 .unused,
99717 .unused,99665 .unused,
...@@ -99745,7 +99693,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -99745,7 +99693,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
99745 .{ .type = .i32, .kind = .{ .reg = .eax } },99693 .{ .type = .i32, .kind = .{ .reg = .eax } },
99746 .{ .type = .f32, .kind = .mem },99694 .{ .type = .f32, .kind = .mem },
99747 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },99695 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
99748 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixhfsi" } } },99696 .{ .type = .usize, .kind = .{ .extern_func = "__fixhfsi" } },
99749 .unused,99697 .unused,
99750 .unused,99698 .unused,
99751 .unused,99699 .unused,
...@@ -99778,7 +99726,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -99778,7 +99726,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
99778 .{ .type = .i32, .kind = .{ .reg = .eax } },99726 .{ .type = .i32, .kind = .{ .reg = .eax } },
99779 .{ .type = .f32, .kind = .mem },99727 .{ .type = .f32, .kind = .mem },
99780 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },99728 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
99781 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixhfsi" } } },99729 .{ .type = .usize, .kind = .{ .extern_func = "__fixhfsi" } },
99782 .unused,99730 .unused,
99783 .unused,99731 .unused,
99784 .unused,99732 .unused,
...@@ -99899,7 +99847,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -99899,7 +99847,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
99899 .extra_temps = .{99847 .extra_temps = .{
99900 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },99848 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
99901 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },99849 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
99902 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixhfsi" } } },99850 .{ .type = .usize, .kind = .{ .extern_func = "__fixhfsi" } },
99903 .{ .type = .i32, .kind = .{ .reg = .eax } },99851 .{ .type = .i32, .kind = .{ .reg = .eax } },
99904 .unused,99852 .unused,
99905 .unused,99853 .unused,
...@@ -99931,7 +99879,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -99931,7 +99879,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
99931 .extra_temps = .{99879 .extra_temps = .{
99932 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },99880 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
99933 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },99881 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
99934 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixhfsi" } } },99882 .{ .type = .usize, .kind = .{ .extern_func = "__fixhfsi" } },
99935 .{ .type = .i32, .kind = .{ .reg = .eax } },99883 .{ .type = .i32, .kind = .{ .reg = .eax } },
99936 .unused,99884 .unused,
99937 .unused,99885 .unused,
...@@ -99965,7 +99913,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -99965,7 +99913,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
99965 .{ .type = .i32, .kind = .{ .reg = .eax } },99913 .{ .type = .i32, .kind = .{ .reg = .eax } },
99966 .{ .type = .f32, .kind = .mem },99914 .{ .type = .f32, .kind = .mem },
99967 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },99915 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
99968 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixhfsi" } } },99916 .{ .type = .usize, .kind = .{ .extern_func = "__fixhfsi" } },
99969 .unused,99917 .unused,
99970 .unused,99918 .unused,
99971 .unused,99919 .unused,
...@@ -100058,7 +100006,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -100058,7 +100006,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
100058 .extra_temps = .{100006 .extra_temps = .{
100059 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },100007 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
100060 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },100008 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
100061 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixhfsi" } } },100009 .{ .type = .usize, .kind = .{ .extern_func = "__fixhfsi" } },
100062 .{ .type = .i32, .kind = .{ .reg = .eax } },100010 .{ .type = .i32, .kind = .{ .reg = .eax } },
100063 .unused,100011 .unused,
100064 .unused,100012 .unused,
...@@ -100090,7 +100038,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -100090,7 +100038,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
100090 .extra_temps = .{100038 .extra_temps = .{
100091 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },100039 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
100092 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },100040 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
100093 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunshfsi" } } },100041 .{ .type = .usize, .kind = .{ .extern_func = "__fixunshfsi" } },
100094 .{ .type = .u32, .kind = .{ .reg = .eax } },100042 .{ .type = .u32, .kind = .{ .reg = .eax } },
100095 .unused,100043 .unused,
100096 .unused,100044 .unused,
...@@ -100122,7 +100070,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -100122,7 +100070,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
100122 .extra_temps = .{100070 .extra_temps = .{
100123 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },100071 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
100124 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },100072 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
100125 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixhfsi" } } },100073 .{ .type = .usize, .kind = .{ .extern_func = "__fixhfsi" } },
100126 .{ .type = .i32, .kind = .{ .reg = .eax } },100074 .{ .type = .i32, .kind = .{ .reg = .eax } },
100127 .unused,100075 .unused,
100128 .unused,100076 .unused,
...@@ -100154,7 +100102,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -100154,7 +100102,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
100154 .extra_temps = .{100102 .extra_temps = .{
100155 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },100103 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
100156 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },100104 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
100157 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunshfsi" } } },100105 .{ .type = .usize, .kind = .{ .extern_func = "__fixunshfsi" } },
100158 .{ .type = .u32, .kind = .{ .reg = .eax } },100106 .{ .type = .u32, .kind = .{ .reg = .eax } },
100159 .unused,100107 .unused,
100160 .unused,100108 .unused,
...@@ -100188,7 +100136,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -100188,7 +100136,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
100188 .{ .type = .i32, .kind = .{ .reg = .eax } },100136 .{ .type = .i32, .kind = .{ .reg = .eax } },
100189 .{ .type = .f32, .kind = .mem },100137 .{ .type = .f32, .kind = .mem },
100190 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },100138 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
100191 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixhfsi" } } },100139 .{ .type = .usize, .kind = .{ .extern_func = "__fixhfsi" } },
100192 .unused,100140 .unused,
100193 .unused,100141 .unused,
100194 .unused,100142 .unused,
...@@ -100221,7 +100169,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -100221,7 +100169,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
100221 .{ .type = .u32, .kind = .{ .reg = .eax } },100169 .{ .type = .u32, .kind = .{ .reg = .eax } },
100222 .{ .type = .f32, .kind = .mem },100170 .{ .type = .f32, .kind = .mem },
100223 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },100171 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
100224 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunshfsi" } } },100172 .{ .type = .usize, .kind = .{ .extern_func = "__fixunshfsi" } },
100225 .unused,100173 .unused,
100226 .unused,100174 .unused,
100227 .unused,100175 .unused,
...@@ -100284,7 +100232,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -100284,7 +100232,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
100284 .extra_temps = .{100232 .extra_temps = .{
100285 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },100233 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
100286 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },100234 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
100287 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixhfdi" } } },100235 .{ .type = .usize, .kind = .{ .extern_func = "__fixhfdi" } },
100288 .{ .type = .i64, .kind = .{ .reg = .rax } },100236 .{ .type = .i64, .kind = .{ .reg = .rax } },
100289 .unused,100237 .unused,
100290 .unused,100238 .unused,
...@@ -100316,7 +100264,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -100316,7 +100264,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
100316 .extra_temps = .{100264 .extra_temps = .{
100317 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },100265 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
100318 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },100266 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
100319 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunshfdi" } } },100267 .{ .type = .usize, .kind = .{ .extern_func = "__fixunshfdi" } },
100320 .{ .type = .u64, .kind = .{ .reg = .rax } },100268 .{ .type = .u64, .kind = .{ .reg = .rax } },
100321 .unused,100269 .unused,
100322 .unused,100270 .unused,
...@@ -100348,7 +100296,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -100348,7 +100296,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
100348 .extra_temps = .{100296 .extra_temps = .{
100349 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },100297 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
100350 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },100298 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
100351 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixhfdi" } } },100299 .{ .type = .usize, .kind = .{ .extern_func = "__fixhfdi" } },
100352 .{ .type = .i64, .kind = .{ .reg = .rax } },100300 .{ .type = .i64, .kind = .{ .reg = .rax } },
100353 .unused,100301 .unused,
100354 .unused,100302 .unused,
...@@ -100380,7 +100328,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -100380,7 +100328,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
100380 .extra_temps = .{100328 .extra_temps = .{
100381 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },100329 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
100382 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },100330 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
100383 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunshfdi" } } },100331 .{ .type = .usize, .kind = .{ .extern_func = "__fixunshfdi" } },
100384 .{ .type = .u64, .kind = .{ .reg = .rax } },100332 .{ .type = .u64, .kind = .{ .reg = .rax } },
100385 .unused,100333 .unused,
100386 .unused,100334 .unused,
...@@ -100414,7 +100362,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -100414,7 +100362,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
100414 .{ .type = .i64, .kind = .{ .reg = .rax } },100362 .{ .type = .i64, .kind = .{ .reg = .rax } },
100415 .{ .type = .f32, .kind = .mem },100363 .{ .type = .f32, .kind = .mem },
100416 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },100364 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
100417 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixhfdi" } } },100365 .{ .type = .usize, .kind = .{ .extern_func = "__fixhfdi" } },
100418 .unused,100366 .unused,
100419 .unused,100367 .unused,
100420 .unused,100368 .unused,
...@@ -100447,7 +100395,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -100447,7 +100395,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
100447 .{ .type = .u64, .kind = .{ .reg = .rax } },100395 .{ .type = .u64, .kind = .{ .reg = .rax } },
100448 .{ .type = .f32, .kind = .mem },100396 .{ .type = .f32, .kind = .mem },
100449 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },100397 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
100450 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunshfdi" } } },100398 .{ .type = .usize, .kind = .{ .extern_func = "__fixunshfdi" } },
100451 .unused,100399 .unused,
100452 .unused,100400 .unused,
100453 .unused,100401 .unused,
...@@ -100478,7 +100426,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -100478,7 +100426,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
100478 .extra_temps = .{100426 .extra_temps = .{
100479 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },100427 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
100480 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },100428 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
100481 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixhfti" } } },100429 .{ .type = .usize, .kind = .{ .extern_func = "__fixhfti" } },
100482 .{ .type = .u64, .kind = .{ .reg = .rax } },100430 .{ .type = .u64, .kind = .{ .reg = .rax } },
100483 .{ .type = .i64, .kind = .{ .reg = .rdx } },100431 .{ .type = .i64, .kind = .{ .reg = .rdx } },
100484 .unused,100432 .unused,
...@@ -100511,7 +100459,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -100511,7 +100459,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
100511 .extra_temps = .{100459 .extra_temps = .{
100512 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },100460 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
100513 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },100461 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
100514 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunshfti" } } },100462 .{ .type = .usize, .kind = .{ .extern_func = "__fixunshfti" } },
100515 .{ .type = .u64, .kind = .{ .reg = .rax } },100463 .{ .type = .u64, .kind = .{ .reg = .rax } },
100516 .{ .type = .u64, .kind = .{ .reg = .rdx } },100464 .{ .type = .u64, .kind = .{ .reg = .rdx } },
100517 .unused,100465 .unused,
...@@ -100544,7 +100492,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -100544,7 +100492,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
100544 .extra_temps = .{100492 .extra_temps = .{
100545 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },100493 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
100546 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },100494 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
100547 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixhfti" } } },100495 .{ .type = .usize, .kind = .{ .extern_func = "__fixhfti" } },
100548 .{ .type = .u64, .kind = .{ .reg = .rax } },100496 .{ .type = .u64, .kind = .{ .reg = .rax } },
100549 .{ .type = .i64, .kind = .{ .reg = .rdx } },100497 .{ .type = .i64, .kind = .{ .reg = .rdx } },
100550 .unused,100498 .unused,
...@@ -100577,7 +100525,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -100577,7 +100525,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
100577 .extra_temps = .{100525 .extra_temps = .{
100578 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },100526 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
100579 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },100527 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
100580 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunshfti" } } },100528 .{ .type = .usize, .kind = .{ .extern_func = "__fixunshfti" } },
100581 .{ .type = .u64, .kind = .{ .reg = .rax } },100529 .{ .type = .u64, .kind = .{ .reg = .rax } },
100582 .{ .type = .u64, .kind = .{ .reg = .rdx } },100530 .{ .type = .u64, .kind = .{ .reg = .rdx } },
100583 .unused,100531 .unused,
...@@ -100612,7 +100560,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -100612,7 +100560,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
100612 .{ .type = .u64, .kind = .{ .reg = .rax } },100560 .{ .type = .u64, .kind = .{ .reg = .rax } },
100613 .{ .type = .f32, .kind = .mem },100561 .{ .type = .f32, .kind = .mem },
100614 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },100562 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
100615 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixhfti" } } },100563 .{ .type = .usize, .kind = .{ .extern_func = "__fixhfti" } },
100616 .{ .type = .i64, .kind = .{ .reg = .rdx } },100564 .{ .type = .i64, .kind = .{ .reg = .rdx } },
100617 .unused,100565 .unused,
100618 .unused,100566 .unused,
...@@ -100646,7 +100594,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -100646,7 +100594,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
100646 .{ .type = .u64, .kind = .{ .reg = .rax } },100594 .{ .type = .u64, .kind = .{ .reg = .rax } },
100647 .{ .type = .f32, .kind = .mem },100595 .{ .type = .f32, .kind = .mem },
100648 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },100596 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
100649 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunshfti" } } },100597 .{ .type = .usize, .kind = .{ .extern_func = "__fixunshfti" } },
100650 .{ .type = .u64, .kind = .{ .reg = .rdx } },100598 .{ .type = .u64, .kind = .{ .reg = .rdx } },
100651 .unused,100599 .unused,
100652 .unused,100600 .unused,
...@@ -100681,7 +100629,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -100681,7 +100629,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
100681 .{ .type = .usize, .kind = .{ .reg = .rdi } },100629 .{ .type = .usize, .kind = .{ .reg = .rdi } },
100682 .{ .type = .usize, .kind = .{ .reg = .rsi } },100630 .{ .type = .usize, .kind = .{ .reg = .rsi } },
100683 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },100631 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
100684 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixhfei" } } },100632 .{ .type = .usize, .kind = .{ .extern_func = "__fixhfei" } },
100685 .unused,100633 .unused,
100686 .unused,100634 .unused,
100687 .unused,100635 .unused,
...@@ -100716,7 +100664,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -100716,7 +100664,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
100716 .{ .type = .usize, .kind = .{ .reg = .rdi } },100664 .{ .type = .usize, .kind = .{ .reg = .rdi } },
100717 .{ .type = .usize, .kind = .{ .reg = .rsi } },100665 .{ .type = .usize, .kind = .{ .reg = .rsi } },
100718 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },100666 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
100719 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunshfei" } } },100667 .{ .type = .usize, .kind = .{ .extern_func = "__fixunshfei" } },
100720 .unused,100668 .unused,
100721 .unused,100669 .unused,
100722 .unused,100670 .unused,
...@@ -100751,7 +100699,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -100751,7 +100699,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
100751 .{ .type = .usize, .kind = .{ .reg = .rdi } },100699 .{ .type = .usize, .kind = .{ .reg = .rdi } },
100752 .{ .type = .usize, .kind = .{ .reg = .rsi } },100700 .{ .type = .usize, .kind = .{ .reg = .rsi } },
100753 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },100701 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
100754 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixhfei" } } },100702 .{ .type = .usize, .kind = .{ .extern_func = "__fixhfei" } },
100755 .unused,100703 .unused,
100756 .unused,100704 .unused,
100757 .unused,100705 .unused,
...@@ -100786,7 +100734,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -100786,7 +100734,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
100786 .{ .type = .usize, .kind = .{ .reg = .rdi } },100734 .{ .type = .usize, .kind = .{ .reg = .rdi } },
100787 .{ .type = .usize, .kind = .{ .reg = .rsi } },100735 .{ .type = .usize, .kind = .{ .reg = .rsi } },
100788 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },100736 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
100789 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunshfei" } } },100737 .{ .type = .usize, .kind = .{ .extern_func = "__fixunshfei" } },
100790 .unused,100738 .unused,
100791 .unused,100739 .unused,
100792 .unused,100740 .unused,
...@@ -100822,7 +100770,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -100822,7 +100770,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
100822 .{ .type = .usize, .kind = .{ .reg = .rsi } },100770 .{ .type = .usize, .kind = .{ .reg = .rsi } },
100823 .{ .type = .f32, .kind = .mem },100771 .{ .type = .f32, .kind = .mem },
100824 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },100772 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
100825 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixhfei" } } },100773 .{ .type = .usize, .kind = .{ .extern_func = "__fixhfei" } },
100826 .unused,100774 .unused,
100827 .unused,100775 .unused,
100828 .unused,100776 .unused,
...@@ -100858,7 +100806,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -100858,7 +100806,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
100858 .{ .type = .usize, .kind = .{ .reg = .rsi } },100806 .{ .type = .usize, .kind = .{ .reg = .rsi } },
100859 .{ .type = .f32, .kind = .mem },100807 .{ .type = .f32, .kind = .mem },
100860 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },100808 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
100861 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunshfei" } } },100809 .{ .type = .usize, .kind = .{ .extern_func = "__fixunshfei" } },
100862 .unused,100810 .unused,
100863 .unused,100811 .unused,
100864 .unused,100812 .unused,
...@@ -101000,7 +100948,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -101000,7 +100948,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101000 },100948 },
101001 .call_frame = .{ .alignment = .@"16" },100949 .call_frame = .{ .alignment = .@"16" },
101002 .extra_temps = .{100950 .extra_temps = .{
101003 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixsfti" } } },100951 .{ .type = .usize, .kind = .{ .extern_func = "__fixsfti" } },
101004 .unused,100952 .unused,
101005 .unused,100953 .unused,
101006 .unused,100954 .unused,
...@@ -101026,7 +100974,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -101026,7 +100974,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101026 },100974 },
101027 .call_frame = .{ .alignment = .@"16" },100975 .call_frame = .{ .alignment = .@"16" },
101028 .extra_temps = .{100976 .extra_temps = .{
101029 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunssfti" } } },100977 .{ .type = .usize, .kind = .{ .extern_func = "__fixunssfti" } },
101030 .unused,100978 .unused,
101031 .unused,100979 .unused,
101032 .unused,100980 .unused,
...@@ -101055,7 +101003,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -101055,7 +101003,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101055 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },101003 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
101056 .{ .type = .i64, .kind = .{ .reg = .rax } },101004 .{ .type = .i64, .kind = .{ .reg = .rax } },
101057 .{ .type = .vector_4_f32, .kind = .{ .smax_mem = .{} } },101005 .{ .type = .vector_4_f32, .kind = .{ .smax_mem = .{} } },
101058 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunssfti" } } },101006 .{ .type = .usize, .kind = .{ .extern_func = "__fixunssfti" } },
101059 .{ .type = .i64, .kind = .{ .reg = .rdx } },101007 .{ .type = .i64, .kind = .{ .reg = .rdx } },
101060 .{ .type = .usize, .kind = .{ .reg = .rdi } },101008 .{ .type = .usize, .kind = .{ .reg = .rdi } },
101061 .{ .type = .u32, .kind = .{ .reg = .ecx } },101009 .{ .type = .u32, .kind = .{ .reg = .ecx } },
...@@ -101096,7 +101044,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -101096,7 +101044,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101096 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },101044 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
101097 .{ .type = .i64, .kind = .{ .reg = .rax } },101045 .{ .type = .i64, .kind = .{ .reg = .rax } },
101098 .{ .type = .vector_4_f32, .kind = .{ .smax_mem = .{} } },101046 .{ .type = .vector_4_f32, .kind = .{ .smax_mem = .{} } },
101099 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunssfti" } } },101047 .{ .type = .usize, .kind = .{ .extern_func = "__fixunssfti" } },
101100 .{ .type = .i64, .kind = .{ .reg = .rdx } },101048 .{ .type = .i64, .kind = .{ .reg = .rdx } },
101101 .{ .type = .usize, .kind = .{ .reg = .rdi } },101049 .{ .type = .usize, .kind = .{ .reg = .rdi } },
101102 .{ .type = .u32, .kind = .{ .reg = .ecx } },101050 .{ .type = .u32, .kind = .{ .reg = .ecx } },
...@@ -101137,7 +101085,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -101137,7 +101085,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101137 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },101085 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
101138 .{ .type = .i64, .kind = .{ .reg = .rax } },101086 .{ .type = .i64, .kind = .{ .reg = .rax } },
101139 .{ .type = .vector_4_f32, .kind = .{ .smax_mem = .{} } },101087 .{ .type = .vector_4_f32, .kind = .{ .smax_mem = .{} } },
101140 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunssfti" } } },101088 .{ .type = .usize, .kind = .{ .extern_func = "__fixunssfti" } },
101141 .{ .type = .u32, .kind = .{ .reg = .ecx } },101089 .{ .type = .u32, .kind = .{ .reg = .ecx } },
101142 .{ .type = .i64, .kind = .{ .reg = .rdx } },101090 .{ .type = .i64, .kind = .{ .reg = .rdx } },
101143 .{ .type = .usize, .kind = .{ .reg = .rdi } },101091 .{ .type = .usize, .kind = .{ .reg = .rdi } },
...@@ -101175,7 +101123,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -101175,7 +101123,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101175 },101123 },
101176 .call_frame = .{ .alignment = .@"16" },101124 .call_frame = .{ .alignment = .@"16" },
101177 .extra_temps = .{101125 .extra_temps = .{
101178 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunssfti" } } },101126 .{ .type = .usize, .kind = .{ .extern_func = "__fixunssfti" } },
101179 .{ .type = .i64, .kind = .{ .reg = .rax } },101127 .{ .type = .i64, .kind = .{ .reg = .rax } },
101180 .{ .type = .i64, .kind = .{ .reg = .rdx } },101128 .{ .type = .i64, .kind = .{ .reg = .rdx } },
101181 .{ .type = .usize, .kind = .{ .reg = .rdi } },101129 .{ .type = .usize, .kind = .{ .reg = .rdi } },
...@@ -101385,7 +101333,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -101385,7 +101333,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101385 .extra_temps = .{101333 .extra_temps = .{
101386 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },101334 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
101387 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },101335 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
101388 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixsfsi" } } },101336 .{ .type = .usize, .kind = .{ .extern_func = "__fixsfsi" } },
101389 .{ .type = .i32, .kind = .{ .reg = .eax } },101337 .{ .type = .i32, .kind = .{ .reg = .eax } },
101390 .unused,101338 .unused,
101391 .unused,101339 .unused,
...@@ -101416,7 +101364,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -101416,7 +101364,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101416 .extra_temps = .{101364 .extra_temps = .{
101417 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },101365 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
101418 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },101366 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
101419 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixsfsi" } } },101367 .{ .type = .usize, .kind = .{ .extern_func = "__fixsfsi" } },
101420 .{ .type = .i32, .kind = .{ .reg = .eax } },101368 .{ .type = .i32, .kind = .{ .reg = .eax } },
101421 .unused,101369 .unused,
101422 .unused,101370 .unused,
...@@ -101447,7 +101395,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -101447,7 +101395,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101447 .extra_temps = .{101395 .extra_temps = .{
101448 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },101396 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
101449 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },101397 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
101450 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixsfsi" } } },101398 .{ .type = .usize, .kind = .{ .extern_func = "__fixsfsi" } },
101451 .{ .type = .i32, .kind = .{ .reg = .eax } },101399 .{ .type = .i32, .kind = .{ .reg = .eax } },
101452 .unused,101400 .unused,
101453 .unused,101401 .unused,
...@@ -101478,7 +101426,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -101478,7 +101426,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101478 .extra_temps = .{101426 .extra_temps = .{
101479 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },101427 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
101480 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },101428 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
101481 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixsfsi" } } },101429 .{ .type = .usize, .kind = .{ .extern_func = "__fixsfsi" } },
101482 .{ .type = .i32, .kind = .{ .reg = .eax } },101430 .{ .type = .i32, .kind = .{ .reg = .eax } },
101483 .unused,101431 .unused,
101484 .unused,101432 .unused,
...@@ -101681,7 +101629,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -101681,7 +101629,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101681 .extra_temps = .{101629 .extra_temps = .{
101682 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },101630 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
101683 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },101631 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
101684 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixsfsi" } } },101632 .{ .type = .usize, .kind = .{ .extern_func = "__fixsfsi" } },
101685 .{ .type = .i32, .kind = .{ .reg = .eax } },101633 .{ .type = .i32, .kind = .{ .reg = .eax } },
101686 .unused,101634 .unused,
101687 .unused,101635 .unused,
...@@ -101712,7 +101660,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -101712,7 +101660,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101712 .extra_temps = .{101660 .extra_temps = .{
101713 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },101661 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
101714 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },101662 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
101715 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixsfsi" } } },101663 .{ .type = .usize, .kind = .{ .extern_func = "__fixsfsi" } },
101716 .{ .type = .i32, .kind = .{ .reg = .eax } },101664 .{ .type = .i32, .kind = .{ .reg = .eax } },
101717 .unused,101665 .unused,
101718 .unused,101666 .unused,
...@@ -101825,7 +101773,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -101825,7 +101773,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101825 .extra_temps = .{101773 .extra_temps = .{
101826 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },101774 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
101827 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },101775 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
101828 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixsfsi" } } },101776 .{ .type = .usize, .kind = .{ .extern_func = "__fixsfsi" } },
101829 .{ .type = .i32, .kind = .{ .reg = .eax } },101777 .{ .type = .i32, .kind = .{ .reg = .eax } },
101830 .unused,101778 .unused,
101831 .unused,101779 .unused,
...@@ -101856,7 +101804,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -101856,7 +101804,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101856 .extra_temps = .{101804 .extra_temps = .{
101857 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },101805 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
101858 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },101806 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
101859 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunssfsi" } } },101807 .{ .type = .usize, .kind = .{ .extern_func = "__fixunssfsi" } },
101860 .{ .type = .u32, .kind = .{ .reg = .eax } },101808 .{ .type = .u32, .kind = .{ .reg = .eax } },
101861 .unused,101809 .unused,
101862 .unused,101810 .unused,
...@@ -101887,7 +101835,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -101887,7 +101835,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101887 .extra_temps = .{101835 .extra_temps = .{
101888 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },101836 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
101889 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },101837 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
101890 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixsfsi" } } },101838 .{ .type = .usize, .kind = .{ .extern_func = "__fixsfsi" } },
101891 .{ .type = .i32, .kind = .{ .reg = .eax } },101839 .{ .type = .i32, .kind = .{ .reg = .eax } },
101892 .unused,101840 .unused,
101893 .unused,101841 .unused,
...@@ -101918,7 +101866,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -101918,7 +101866,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101918 .extra_temps = .{101866 .extra_temps = .{
101919 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },101867 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
101920 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },101868 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
101921 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunssfsi" } } },101869 .{ .type = .usize, .kind = .{ .extern_func = "__fixunssfsi" } },
101922 .{ .type = .u32, .kind = .{ .reg = .eax } },101870 .{ .type = .u32, .kind = .{ .reg = .eax } },
101923 .unused,101871 .unused,
101924 .unused,101872 .unused,
...@@ -102007,7 +101955,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -102007,7 +101955,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
102007 .extra_temps = .{101955 .extra_temps = .{
102008 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },101956 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
102009 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },101957 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
102010 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixsfdi" } } },101958 .{ .type = .usize, .kind = .{ .extern_func = "__fixsfdi" } },
102011 .{ .type = .i64, .kind = .{ .reg = .rax } },101959 .{ .type = .i64, .kind = .{ .reg = .rax } },
102012 .unused,101960 .unused,
102013 .unused,101961 .unused,
...@@ -102038,7 +101986,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -102038,7 +101986,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
102038 .extra_temps = .{101986 .extra_temps = .{
102039 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },101987 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
102040 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },101988 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
102041 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunssfdi" } } },101989 .{ .type = .usize, .kind = .{ .extern_func = "__fixunssfdi" } },
102042 .{ .type = .u64, .kind = .{ .reg = .rax } },101990 .{ .type = .u64, .kind = .{ .reg = .rax } },
102043 .unused,101991 .unused,
102044 .unused,101992 .unused,
...@@ -102069,7 +102017,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -102069,7 +102017,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
102069 .extra_temps = .{102017 .extra_temps = .{
102070 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },102018 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
102071 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },102019 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
102072 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixsfdi" } } },102020 .{ .type = .usize, .kind = .{ .extern_func = "__fixsfdi" } },
102073 .{ .type = .i64, .kind = .{ .reg = .rax } },102021 .{ .type = .i64, .kind = .{ .reg = .rax } },
102074 .unused,102022 .unused,
102075 .unused,102023 .unused,
...@@ -102100,7 +102048,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -102100,7 +102048,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
102100 .extra_temps = .{102048 .extra_temps = .{
102101 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },102049 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
102102 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },102050 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
102103 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunssfdi" } } },102051 .{ .type = .usize, .kind = .{ .extern_func = "__fixunssfdi" } },
102104 .{ .type = .u64, .kind = .{ .reg = .rax } },102052 .{ .type = .u64, .kind = .{ .reg = .rax } },
102105 .unused,102053 .unused,
102106 .unused,102054 .unused,
...@@ -102131,7 +102079,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -102131,7 +102079,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
102131 .extra_temps = .{102079 .extra_temps = .{
102132 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },102080 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
102133 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },102081 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
102134 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixsfti" } } },102082 .{ .type = .usize, .kind = .{ .extern_func = "__fixsfti" } },
102135 .{ .type = .u64, .kind = .{ .reg = .rax } },102083 .{ .type = .u64, .kind = .{ .reg = .rax } },
102136 .{ .type = .i64, .kind = .{ .reg = .rdx } },102084 .{ .type = .i64, .kind = .{ .reg = .rdx } },
102137 .unused,102085 .unused,
...@@ -102163,7 +102111,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -102163,7 +102111,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
102163 .extra_temps = .{102111 .extra_temps = .{
102164 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },102112 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
102165 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },102113 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
102166 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunssfti" } } },102114 .{ .type = .usize, .kind = .{ .extern_func = "__fixunssfti" } },
102167 .{ .type = .u64, .kind = .{ .reg = .rax } },102115 .{ .type = .u64, .kind = .{ .reg = .rax } },
102168 .{ .type = .u64, .kind = .{ .reg = .rdx } },102116 .{ .type = .u64, .kind = .{ .reg = .rdx } },
102169 .unused,102117 .unused,
...@@ -102195,7 +102143,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -102195,7 +102143,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
102195 .extra_temps = .{102143 .extra_temps = .{
102196 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },102144 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
102197 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },102145 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
102198 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixsfti" } } },102146 .{ .type = .usize, .kind = .{ .extern_func = "__fixsfti" } },
102199 .{ .type = .u64, .kind = .{ .reg = .rax } },102147 .{ .type = .u64, .kind = .{ .reg = .rax } },
102200 .{ .type = .i64, .kind = .{ .reg = .rdx } },102148 .{ .type = .i64, .kind = .{ .reg = .rdx } },
102201 .unused,102149 .unused,
...@@ -102227,7 +102175,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -102227,7 +102175,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
102227 .extra_temps = .{102175 .extra_temps = .{
102228 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },102176 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
102229 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },102177 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
102230 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunssfti" } } },102178 .{ .type = .usize, .kind = .{ .extern_func = "__fixunssfti" } },
102231 .{ .type = .u64, .kind = .{ .reg = .rax } },102179 .{ .type = .u64, .kind = .{ .reg = .rax } },
102232 .{ .type = .u64, .kind = .{ .reg = .rdx } },102180 .{ .type = .u64, .kind = .{ .reg = .rdx } },
102233 .unused,102181 .unused,
...@@ -102262,7 +102210,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -102262,7 +102210,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
102262 .{ .type = .usize, .kind = .{ .reg = .rdi } },102210 .{ .type = .usize, .kind = .{ .reg = .rdi } },
102263 .{ .type = .usize, .kind = .{ .reg = .rsi } },102211 .{ .type = .usize, .kind = .{ .reg = .rsi } },
102264 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },102212 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
102265 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixsfei" } } },102213 .{ .type = .usize, .kind = .{ .extern_func = "__fixsfei" } },
102266 .unused,102214 .unused,
102267 .unused,102215 .unused,
102268 .unused,102216 .unused,
...@@ -102296,7 +102244,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -102296,7 +102244,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
102296 .{ .type = .usize, .kind = .{ .reg = .rdi } },102244 .{ .type = .usize, .kind = .{ .reg = .rdi } },
102297 .{ .type = .usize, .kind = .{ .reg = .rsi } },102245 .{ .type = .usize, .kind = .{ .reg = .rsi } },
102298 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },102246 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
102299 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunssfei" } } },102247 .{ .type = .usize, .kind = .{ .extern_func = "__fixunssfei" } },
102300 .unused,102248 .unused,
102301 .unused,102249 .unused,
102302 .unused,102250 .unused,
...@@ -102330,7 +102278,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -102330,7 +102278,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
102330 .{ .type = .usize, .kind = .{ .reg = .rdi } },102278 .{ .type = .usize, .kind = .{ .reg = .rdi } },
102331 .{ .type = .usize, .kind = .{ .reg = .rsi } },102279 .{ .type = .usize, .kind = .{ .reg = .rsi } },
102332 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },102280 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
102333 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixsfei" } } },102281 .{ .type = .usize, .kind = .{ .extern_func = "__fixsfei" } },
102334 .unused,102282 .unused,
102335 .unused,102283 .unused,
102336 .unused,102284 .unused,
...@@ -102364,7 +102312,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -102364,7 +102312,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
102364 .{ .type = .usize, .kind = .{ .reg = .rdi } },102312 .{ .type = .usize, .kind = .{ .reg = .rdi } },
102365 .{ .type = .usize, .kind = .{ .reg = .rsi } },102313 .{ .type = .usize, .kind = .{ .reg = .rsi } },
102366 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },102314 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
102367 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunssfei" } } },102315 .{ .type = .usize, .kind = .{ .extern_func = "__fixunssfei" } },
102368 .unused,102316 .unused,
102369 .unused,102317 .unused,
102370 .unused,102318 .unused,
...@@ -102703,7 +102651,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -102703,7 +102651,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
102703 },102651 },
102704 .call_frame = .{ .alignment = .@"16" },102652 .call_frame = .{ .alignment = .@"16" },
102705 .extra_temps = .{102653 .extra_temps = .{
102706 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixdfti" } } },102654 .{ .type = .usize, .kind = .{ .extern_func = "__fixdfti" } },
102707 .unused,102655 .unused,
102708 .unused,102656 .unused,
102709 .unused,102657 .unused,
...@@ -102729,7 +102677,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -102729,7 +102677,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
102729 },102677 },
102730 .call_frame = .{ .alignment = .@"16" },102678 .call_frame = .{ .alignment = .@"16" },
102731 .extra_temps = .{102679 .extra_temps = .{
102732 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsdfti" } } },102680 .{ .type = .usize, .kind = .{ .extern_func = "__fixunsdfti" } },
102733 .unused,102681 .unused,
102734 .unused,102682 .unused,
102735 .unused,102683 .unused,
...@@ -102757,7 +102705,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -102757,7 +102705,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
102757 .extra_temps = .{102705 .extra_temps = .{
102758 .{ .type = .usize, .kind = .{ .reg = .rdi } },102706 .{ .type = .usize, .kind = .{ .reg = .rdi } },
102759 .{ .type = .usize, .kind = .{ .reg = .rsi } },102707 .{ .type = .usize, .kind = .{ .reg = .rsi } },
102760 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixdfei" } } },102708 .{ .type = .usize, .kind = .{ .extern_func = "__fixdfei" } },
102761 .unused,102709 .unused,
102762 .unused,102710 .unused,
102763 .unused,102711 .unused,
...@@ -102785,7 +102733,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -102785,7 +102733,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
102785 .extra_temps = .{102733 .extra_temps = .{
102786 .{ .type = .usize, .kind = .{ .reg = .rdi } },102734 .{ .type = .usize, .kind = .{ .reg = .rdi } },
102787 .{ .type = .usize, .kind = .{ .reg = .rsi } },102735 .{ .type = .usize, .kind = .{ .reg = .rsi } },
102788 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsdfei" } } },102736 .{ .type = .usize, .kind = .{ .extern_func = "__fixunsdfei" } },
102789 .unused,102737 .unused,
102790 .unused,102738 .unused,
102791 .unused,102739 .unused,
...@@ -103090,7 +103038,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -103090,7 +103038,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
103090 .extra_temps = .{103038 .extra_temps = .{
103091 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },103039 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
103092 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },103040 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
103093 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixdfsi" } } },103041 .{ .type = .usize, .kind = .{ .extern_func = "__fixdfsi" } },
103094 .{ .type = .i32, .kind = .{ .reg = .eax } },103042 .{ .type = .i32, .kind = .{ .reg = .eax } },
103095 .unused,103043 .unused,
103096 .unused,103044 .unused,
...@@ -103121,7 +103069,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -103121,7 +103069,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
103121 .extra_temps = .{103069 .extra_temps = .{
103122 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },103070 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
103123 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },103071 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
103124 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixdfsi" } } },103072 .{ .type = .usize, .kind = .{ .extern_func = "__fixdfsi" } },
103125 .{ .type = .i32, .kind = .{ .reg = .eax } },103073 .{ .type = .i32, .kind = .{ .reg = .eax } },
103126 .unused,103074 .unused,
103127 .unused,103075 .unused,
...@@ -103152,7 +103100,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -103152,7 +103100,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
103152 .extra_temps = .{103100 .extra_temps = .{
103153 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },103101 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
103154 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },103102 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
103155 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixdfsi" } } },103103 .{ .type = .usize, .kind = .{ .extern_func = "__fixdfsi" } },
103156 .{ .type = .i32, .kind = .{ .reg = .eax } },103104 .{ .type = .i32, .kind = .{ .reg = .eax } },
103157 .unused,103105 .unused,
103158 .unused,103106 .unused,
...@@ -103183,7 +103131,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -103183,7 +103131,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
103183 .extra_temps = .{103131 .extra_temps = .{
103184 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },103132 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
103185 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },103133 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
103186 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixsfsi" } } },103134 .{ .type = .usize, .kind = .{ .extern_func = "__fixsfsi" } },
103187 .{ .type = .i32, .kind = .{ .reg = .eax } },103135 .{ .type = .i32, .kind = .{ .reg = .eax } },
103188 .unused,103136 .unused,
103189 .unused,103137 .unused,
...@@ -103214,7 +103162,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -103214,7 +103162,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
103214 .extra_temps = .{103162 .extra_temps = .{
103215 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },103163 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
103216 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },103164 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
103217 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixdfsi" } } },103165 .{ .type = .usize, .kind = .{ .extern_func = "__fixdfsi" } },
103218 .{ .type = .i32, .kind = .{ .reg = .eax } },103166 .{ .type = .i32, .kind = .{ .reg = .eax } },
103219 .unused,103167 .unused,
103220 .unused,103168 .unused,
...@@ -103246,7 +103194,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -103246,7 +103194,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
103246 .extra_temps = .{103194 .extra_temps = .{
103247 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },103195 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
103248 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },103196 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
103249 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixsfsi" } } },103197 .{ .type = .usize, .kind = .{ .extern_func = "__fixsfsi" } },
103250 .{ .type = .i32, .kind = .{ .reg = .eax } },103198 .{ .type = .i32, .kind = .{ .reg = .eax } },
103251 .unused,103199 .unused,
103252 .unused,103200 .unused,
...@@ -103577,7 +103525,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -103577,7 +103525,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
103577 .extra_temps = .{103525 .extra_temps = .{
103578 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },103526 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
103579 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },103527 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
103580 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixdfsi" } } },103528 .{ .type = .usize, .kind = .{ .extern_func = "__fixdfsi" } },
103581 .{ .type = .i32, .kind = .{ .reg = .eax } },103529 .{ .type = .i32, .kind = .{ .reg = .eax } },
103582 .unused,103530 .unused,
103583 .unused,103531 .unused,
...@@ -103608,7 +103556,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -103608,7 +103556,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
103608 .extra_temps = .{103556 .extra_temps = .{
103609 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },103557 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
103610 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },103558 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
103611 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixdfsi" } } },103559 .{ .type = .usize, .kind = .{ .extern_func = "__fixdfsi" } },
103612 .{ .type = .i32, .kind = .{ .reg = .eax } },103560 .{ .type = .i32, .kind = .{ .reg = .eax } },
103613 .unused,103561 .unused,
103614 .unused,103562 .unused,
...@@ -103639,7 +103587,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -103639,7 +103587,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
103639 .extra_temps = .{103587 .extra_temps = .{
103640 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },103588 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
103641 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },103589 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
103642 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixdfsi" } } },103590 .{ .type = .usize, .kind = .{ .extern_func = "__fixdfsi" } },
103643 .{ .type = .i32, .kind = .{ .reg = .eax } },103591 .{ .type = .i32, .kind = .{ .reg = .eax } },
103644 .unused,103592 .unused,
103645 .unused,103593 .unused,
...@@ -103837,7 +103785,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -103837,7 +103785,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
103837 .extra_temps = .{103785 .extra_temps = .{
103838 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },103786 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
103839 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },103787 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
103840 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixdfsi" } } },103788 .{ .type = .usize, .kind = .{ .extern_func = "__fixdfsi" } },
103841 .{ .type = .i32, .kind = .{ .reg = .eax } },103789 .{ .type = .i32, .kind = .{ .reg = .eax } },
103842 .unused,103790 .unused,
103843 .unused,103791 .unused,
...@@ -103868,7 +103816,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -103868,7 +103816,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
103868 .extra_temps = .{103816 .extra_temps = .{
103869 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },103817 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
103870 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },103818 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
103871 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsdfsi" } } },103819 .{ .type = .usize, .kind = .{ .extern_func = "__fixunsdfsi" } },
103872 .{ .type = .u32, .kind = .{ .reg = .eax } },103820 .{ .type = .u32, .kind = .{ .reg = .eax } },
103873 .unused,103821 .unused,
103874 .unused,103822 .unused,
...@@ -103899,7 +103847,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -103899,7 +103847,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
103899 .extra_temps = .{103847 .extra_temps = .{
103900 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },103848 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
103901 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },103849 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
103902 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixdfsi" } } },103850 .{ .type = .usize, .kind = .{ .extern_func = "__fixdfsi" } },
103903 .{ .type = .i32, .kind = .{ .reg = .eax } },103851 .{ .type = .i32, .kind = .{ .reg = .eax } },
103904 .unused,103852 .unused,
103905 .unused,103853 .unused,
...@@ -103930,7 +103878,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -103930,7 +103878,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
103930 .extra_temps = .{103878 .extra_temps = .{
103931 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },103879 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
103932 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },103880 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
103933 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsdfsi" } } },103881 .{ .type = .usize, .kind = .{ .extern_func = "__fixunsdfsi" } },
103934 .{ .type = .u32, .kind = .{ .reg = .eax } },103882 .{ .type = .u32, .kind = .{ .reg = .eax } },
103935 .unused,103883 .unused,
103936 .unused,103884 .unused,
...@@ -103961,7 +103909,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -103961,7 +103909,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
103961 .extra_temps = .{103909 .extra_temps = .{
103962 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },103910 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
103963 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },103911 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
103964 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixdfsi" } } },103912 .{ .type = .usize, .kind = .{ .extern_func = "__fixdfsi" } },
103965 .{ .type = .i32, .kind = .{ .reg = .eax } },103913 .{ .type = .i32, .kind = .{ .reg = .eax } },
103966 .unused,103914 .unused,
103967 .unused,103915 .unused,
...@@ -103993,7 +103941,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -103993,7 +103941,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
103993 .extra_temps = .{103941 .extra_temps = .{
103994 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },103942 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
103995 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },103943 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
103996 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsdfsi" } } },103944 .{ .type = .usize, .kind = .{ .extern_func = "__fixunsdfsi" } },
103997 .{ .type = .u32, .kind = .{ .reg = .eax } },103945 .{ .type = .u32, .kind = .{ .reg = .eax } },
103998 .unused,103946 .unused,
103999 .unused,103947 .unused,
...@@ -104118,7 +104066,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -104118,7 +104066,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
104118 .extra_temps = .{104066 .extra_temps = .{
104119 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },104067 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
104120 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },104068 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
104121 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixdfdi" } } },104069 .{ .type = .usize, .kind = .{ .extern_func = "__fixdfdi" } },
104122 .{ .type = .i64, .kind = .{ .reg = .rax } },104070 .{ .type = .i64, .kind = .{ .reg = .rax } },
104123 .unused,104071 .unused,
104124 .unused,104072 .unused,
...@@ -104149,7 +104097,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -104149,7 +104097,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
104149 .extra_temps = .{104097 .extra_temps = .{
104150 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },104098 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
104151 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },104099 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
104152 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsdfdi" } } },104100 .{ .type = .usize, .kind = .{ .extern_func = "__fixunsdfdi" } },
104153 .{ .type = .u64, .kind = .{ .reg = .rax } },104101 .{ .type = .u64, .kind = .{ .reg = .rax } },
104154 .unused,104102 .unused,
104155 .unused,104103 .unused,
...@@ -104180,7 +104128,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -104180,7 +104128,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
104180 .extra_temps = .{104128 .extra_temps = .{
104181 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },104129 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
104182 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },104130 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
104183 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixdfdi" } } },104131 .{ .type = .usize, .kind = .{ .extern_func = "__fixdfdi" } },
104184 .{ .type = .i64, .kind = .{ .reg = .rax } },104132 .{ .type = .i64, .kind = .{ .reg = .rax } },
104185 .unused,104133 .unused,
104186 .unused,104134 .unused,
...@@ -104211,7 +104159,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -104211,7 +104159,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
104211 .extra_temps = .{104159 .extra_temps = .{
104212 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },104160 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
104213 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },104161 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
104214 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsdfdi" } } },104162 .{ .type = .usize, .kind = .{ .extern_func = "__fixunsdfdi" } },
104215 .{ .type = .u64, .kind = .{ .reg = .rax } },104163 .{ .type = .u64, .kind = .{ .reg = .rax } },
104216 .unused,104164 .unused,
104217 .unused,104165 .unused,
...@@ -104242,7 +104190,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -104242,7 +104190,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
104242 .extra_temps = .{104190 .extra_temps = .{
104243 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },104191 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
104244 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },104192 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
104245 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixdfdi" } } },104193 .{ .type = .usize, .kind = .{ .extern_func = "__fixdfdi" } },
104246 .{ .type = .i64, .kind = .{ .reg = .rax } },104194 .{ .type = .i64, .kind = .{ .reg = .rax } },
104247 .unused,104195 .unused,
104248 .unused,104196 .unused,
...@@ -104274,7 +104222,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -104274,7 +104222,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
104274 .extra_temps = .{104222 .extra_temps = .{
104275 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },104223 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
104276 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },104224 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
104277 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsdfdi" } } },104225 .{ .type = .usize, .kind = .{ .extern_func = "__fixunsdfdi" } },
104278 .{ .type = .u64, .kind = .{ .reg = .rax } },104226 .{ .type = .u64, .kind = .{ .reg = .rax } },
104279 .unused,104227 .unused,
104280 .unused,104228 .unused,
...@@ -104306,7 +104254,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -104306,7 +104254,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
104306 .extra_temps = .{104254 .extra_temps = .{
104307 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },104255 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
104308 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },104256 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
104309 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixdfti" } } },104257 .{ .type = .usize, .kind = .{ .extern_func = "__fixdfti" } },
104310 .{ .type = .u64, .kind = .{ .reg = .rax } },104258 .{ .type = .u64, .kind = .{ .reg = .rax } },
104311 .{ .type = .i64, .kind = .{ .reg = .rdx } },104259 .{ .type = .i64, .kind = .{ .reg = .rdx } },
104312 .unused,104260 .unused,
...@@ -104338,7 +104286,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -104338,7 +104286,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
104338 .extra_temps = .{104286 .extra_temps = .{
104339 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },104287 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
104340 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },104288 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
104341 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsdfti" } } },104289 .{ .type = .usize, .kind = .{ .extern_func = "__fixunsdfti" } },
104342 .{ .type = .u64, .kind = .{ .reg = .rax } },104290 .{ .type = .u64, .kind = .{ .reg = .rax } },
104343 .{ .type = .u64, .kind = .{ .reg = .rdx } },104291 .{ .type = .u64, .kind = .{ .reg = .rdx } },
104344 .unused,104292 .unused,
...@@ -104370,7 +104318,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -104370,7 +104318,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
104370 .extra_temps = .{104318 .extra_temps = .{
104371 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },104319 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
104372 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },104320 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
104373 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixdfti" } } },104321 .{ .type = .usize, .kind = .{ .extern_func = "__fixdfti" } },
104374 .{ .type = .u64, .kind = .{ .reg = .rax } },104322 .{ .type = .u64, .kind = .{ .reg = .rax } },
104375 .{ .type = .i64, .kind = .{ .reg = .rdx } },104323 .{ .type = .i64, .kind = .{ .reg = .rdx } },
104376 .unused,104324 .unused,
...@@ -104402,7 +104350,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -104402,7 +104350,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
104402 .extra_temps = .{104350 .extra_temps = .{
104403 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },104351 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
104404 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },104352 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
104405 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsdfti" } } },104353 .{ .type = .usize, .kind = .{ .extern_func = "__fixunsdfti" } },
104406 .{ .type = .u64, .kind = .{ .reg = .rax } },104354 .{ .type = .u64, .kind = .{ .reg = .rax } },
104407 .{ .type = .u64, .kind = .{ .reg = .rdx } },104355 .{ .type = .u64, .kind = .{ .reg = .rdx } },
104408 .unused,104356 .unused,
...@@ -104434,7 +104382,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -104434,7 +104382,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
104434 .extra_temps = .{104382 .extra_temps = .{
104435 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },104383 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
104436 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },104384 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
104437 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixdfti" } } },104385 .{ .type = .usize, .kind = .{ .extern_func = "__fixdfti" } },
104438 .{ .type = .u64, .kind = .{ .reg = .rax } },104386 .{ .type = .u64, .kind = .{ .reg = .rax } },
104439 .{ .type = .i64, .kind = .{ .reg = .rdx } },104387 .{ .type = .i64, .kind = .{ .reg = .rdx } },
104440 .unused,104388 .unused,
...@@ -104467,7 +104415,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -104467,7 +104415,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
104467 .extra_temps = .{104415 .extra_temps = .{
104468 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },104416 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
104469 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },104417 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
104470 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsdfti" } } },104418 .{ .type = .usize, .kind = .{ .extern_func = "__fixunsdfti" } },
104471 .{ .type = .u64, .kind = .{ .reg = .rax } },104419 .{ .type = .u64, .kind = .{ .reg = .rax } },
104472 .{ .type = .u64, .kind = .{ .reg = .rdx } },104420 .{ .type = .u64, .kind = .{ .reg = .rdx } },
104473 .unused,104421 .unused,
...@@ -104503,7 +104451,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -104503,7 +104451,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
104503 .{ .type = .usize, .kind = .{ .reg = .rdi } },104451 .{ .type = .usize, .kind = .{ .reg = .rdi } },
104504 .{ .type = .usize, .kind = .{ .reg = .rsi } },104452 .{ .type = .usize, .kind = .{ .reg = .rsi } },
104505 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },104453 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
104506 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixdfei" } } },104454 .{ .type = .usize, .kind = .{ .extern_func = "__fixdfei" } },
104507 .unused,104455 .unused,
104508 .unused,104456 .unused,
104509 .unused,104457 .unused,
...@@ -104537,7 +104485,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -104537,7 +104485,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
104537 .{ .type = .usize, .kind = .{ .reg = .rdi } },104485 .{ .type = .usize, .kind = .{ .reg = .rdi } },
104538 .{ .type = .usize, .kind = .{ .reg = .rsi } },104486 .{ .type = .usize, .kind = .{ .reg = .rsi } },
104539 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },104487 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
104540 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsdfei" } } },104488 .{ .type = .usize, .kind = .{ .extern_func = "__fixunsdfei" } },
104541 .unused,104489 .unused,
104542 .unused,104490 .unused,
104543 .unused,104491 .unused,
...@@ -104571,7 +104519,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -104571,7 +104519,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
104571 .{ .type = .usize, .kind = .{ .reg = .rdi } },104519 .{ .type = .usize, .kind = .{ .reg = .rdi } },
104572 .{ .type = .usize, .kind = .{ .reg = .rsi } },104520 .{ .type = .usize, .kind = .{ .reg = .rsi } },
104573 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },104521 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
104574 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixdfei" } } },104522 .{ .type = .usize, .kind = .{ .extern_func = "__fixdfei" } },
104575 .unused,104523 .unused,
104576 .unused,104524 .unused,
104577 .unused,104525 .unused,
...@@ -104605,7 +104553,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -104605,7 +104553,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
104605 .{ .type = .usize, .kind = .{ .reg = .rdi } },104553 .{ .type = .usize, .kind = .{ .reg = .rdi } },
104606 .{ .type = .usize, .kind = .{ .reg = .rsi } },104554 .{ .type = .usize, .kind = .{ .reg = .rsi } },
104607 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },104555 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
104608 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsdfei" } } },104556 .{ .type = .usize, .kind = .{ .extern_func = "__fixunsdfei" } },
104609 .unused,104557 .unused,
104610 .unused,104558 .unused,
104611 .unused,104559 .unused,
...@@ -104639,7 +104587,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -104639,7 +104587,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
104639 .{ .type = .usize, .kind = .{ .reg = .rdi } },104587 .{ .type = .usize, .kind = .{ .reg = .rdi } },
104640 .{ .type = .usize, .kind = .{ .reg = .rsi } },104588 .{ .type = .usize, .kind = .{ .reg = .rsi } },
104641 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },104589 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
104642 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixdfei" } } },104590 .{ .type = .usize, .kind = .{ .extern_func = "__fixdfei" } },
104643 .unused,104591 .unused,
104644 .unused,104592 .unused,
104645 .unused,104593 .unused,
...@@ -104674,7 +104622,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -104674,7 +104622,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
104674 .{ .type = .usize, .kind = .{ .reg = .rdi } },104622 .{ .type = .usize, .kind = .{ .reg = .rdi } },
104675 .{ .type = .usize, .kind = .{ .reg = .rsi } },104623 .{ .type = .usize, .kind = .{ .reg = .rsi } },
104676 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },104624 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
104677 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsdfei" } } },104625 .{ .type = .usize, .kind = .{ .extern_func = "__fixunsdfei" } },
104678 .unused,104626 .unused,
104679 .unused,104627 .unused,
104680 .unused,104628 .unused,
...@@ -105695,7 +105643,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -105695,7 +105643,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
105695 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },105643 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
105696 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },105644 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
105697 .{ .type = .f80, .kind = .{ .frame = .call_frame } },105645 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
105698 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsxfti" } } },105646 .{ .type = .usize, .kind = .{ .extern_func = "__fixunsxfti" } },
105699 .{ .type = .u64, .kind = .{ .reg = .rax } },105647 .{ .type = .u64, .kind = .{ .reg = .rax } },
105700 .unused,105648 .unused,
105701 .unused,105649 .unused,
...@@ -105727,7 +105675,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -105727,7 +105675,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
105727 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },105675 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
105728 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },105676 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
105729 .{ .type = .f80, .kind = .{ .frame = .call_frame } },105677 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
105730 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsxfti" } } },105678 .{ .type = .usize, .kind = .{ .extern_func = "__fixunsxfti" } },
105731 .{ .type = .u64, .kind = .{ .reg = .rax } },105679 .{ .type = .u64, .kind = .{ .reg = .rax } },
105732 .unused,105680 .unused,
105733 .unused,105681 .unused,
...@@ -105759,7 +105707,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -105759,7 +105707,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
105759 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },105707 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
105760 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },105708 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
105761 .{ .type = .f80, .kind = .{ .frame = .call_frame } },105709 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
105762 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsxfti" } } },105710 .{ .type = .usize, .kind = .{ .extern_func = "__fixunsxfti" } },
105763 .{ .type = .u64, .kind = .{ .reg = .rax } },105711 .{ .type = .u64, .kind = .{ .reg = .rax } },
105764 .unused,105712 .unused,
105765 .unused,105713 .unused,
...@@ -105790,7 +105738,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -105790,7 +105738,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
105790 .extra_temps = .{105738 .extra_temps = .{
105791 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },105739 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
105792 .{ .type = .f80, .kind = .{ .frame = .call_frame } },105740 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
105793 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixxfti" } } },105741 .{ .type = .usize, .kind = .{ .extern_func = "__fixxfti" } },
105794 .unused,105742 .unused,
105795 .unused,105743 .unused,
105796 .unused,105744 .unused,
...@@ -105818,7 +105766,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -105818,7 +105766,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
105818 .extra_temps = .{105766 .extra_temps = .{
105819 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },105767 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
105820 .{ .type = .f80, .kind = .{ .frame = .call_frame } },105768 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
105821 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsxfti" } } },105769 .{ .type = .usize, .kind = .{ .extern_func = "__fixunsxfti" } },
105822 .unused,105770 .unused,
105823 .unused,105771 .unused,
105824 .unused,105772 .unused,
...@@ -105846,7 +105794,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -105846,7 +105794,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
105846 .extra_temps = .{105794 .extra_temps = .{
105847 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },105795 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
105848 .{ .type = .f80, .kind = .{ .frame = .call_frame } },105796 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
105849 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixxfti" } } },105797 .{ .type = .usize, .kind = .{ .extern_func = "__fixxfti" } },
105850 .unused,105798 .unused,
105851 .unused,105799 .unused,
105852 .unused,105800 .unused,
...@@ -105874,7 +105822,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -105874,7 +105822,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
105874 .extra_temps = .{105822 .extra_temps = .{
105875 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },105823 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
105876 .{ .type = .f80, .kind = .{ .frame = .call_frame } },105824 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
105877 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsxfti" } } },105825 .{ .type = .usize, .kind = .{ .extern_func = "__fixunsxfti" } },
105878 .unused,105826 .unused,
105879 .unused,105827 .unused,
105880 .unused,105828 .unused,
...@@ -105902,7 +105850,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -105902,7 +105850,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
105902 .extra_temps = .{105850 .extra_temps = .{
105903 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },105851 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
105904 .{ .type = .f80, .kind = .{ .frame = .call_frame } },105852 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
105905 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixxfti" } } },105853 .{ .type = .usize, .kind = .{ .extern_func = "__fixxfti" } },
105906 .unused,105854 .unused,
105907 .unused,105855 .unused,
105908 .unused,105856 .unused,
...@@ -105930,7 +105878,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -105930,7 +105878,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
105930 .extra_temps = .{105878 .extra_temps = .{
105931 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },105879 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
105932 .{ .type = .f80, .kind = .{ .frame = .call_frame } },105880 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
105933 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsxfti" } } },105881 .{ .type = .usize, .kind = .{ .extern_func = "__fixunsxfti" } },
105934 .unused,105882 .unused,
105935 .unused,105883 .unused,
105936 .unused,105884 .unused,
...@@ -105959,7 +105907,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -105959,7 +105907,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
105959 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },105907 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
105960 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },105908 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
105961 .{ .type = .f80, .kind = .{ .frame = .call_frame } },105909 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
105962 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixxfti" } } },105910 .{ .type = .usize, .kind = .{ .extern_func = "__fixxfti" } },
105963 .{ .type = .u64, .kind = .{ .reg = .rax } },105911 .{ .type = .u64, .kind = .{ .reg = .rax } },
105964 .{ .type = .i64, .kind = .{ .reg = .rdx } },105912 .{ .type = .i64, .kind = .{ .reg = .rdx } },
105965 .unused,105913 .unused,
...@@ -105992,7 +105940,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -105992,7 +105940,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
105992 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },105940 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
105993 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },105941 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
105994 .{ .type = .f80, .kind = .{ .frame = .call_frame } },105942 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
105995 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsxfti" } } },105943 .{ .type = .usize, .kind = .{ .extern_func = "__fixunsxfti" } },
105996 .{ .type = .u64, .kind = .{ .reg = .rax } },105944 .{ .type = .u64, .kind = .{ .reg = .rax } },
105997 .{ .type = .u64, .kind = .{ .reg = .rdx } },105945 .{ .type = .u64, .kind = .{ .reg = .rdx } },
105998 .unused,105946 .unused,
...@@ -106025,7 +105973,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -106025,7 +105973,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106025 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },105973 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
106026 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },105974 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
106027 .{ .type = .f80, .kind = .{ .frame = .call_frame } },105975 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
106028 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixxfti" } } },105976 .{ .type = .usize, .kind = .{ .extern_func = "__fixxfti" } },
106029 .{ .type = .u64, .kind = .{ .reg = .rax } },105977 .{ .type = .u64, .kind = .{ .reg = .rax } },
106030 .{ .type = .i64, .kind = .{ .reg = .rdx } },105978 .{ .type = .i64, .kind = .{ .reg = .rdx } },
106031 .unused,105979 .unused,
...@@ -106058,7 +106006,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -106058,7 +106006,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106058 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },106006 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
106059 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },106007 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
106060 .{ .type = .f80, .kind = .{ .frame = .call_frame } },106008 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
106061 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsxfti" } } },106009 .{ .type = .usize, .kind = .{ .extern_func = "__fixunsxfti" } },
106062 .{ .type = .u64, .kind = .{ .reg = .rax } },106010 .{ .type = .u64, .kind = .{ .reg = .rax } },
106063 .{ .type = .u64, .kind = .{ .reg = .rdx } },106011 .{ .type = .u64, .kind = .{ .reg = .rdx } },
106064 .unused,106012 .unused,
...@@ -106091,7 +106039,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -106091,7 +106039,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106091 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },106039 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
106092 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },106040 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
106093 .{ .type = .f80, .kind = .{ .frame = .call_frame } },106041 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
106094 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixxfti" } } },106042 .{ .type = .usize, .kind = .{ .extern_func = "__fixxfti" } },
106095 .{ .type = .u64, .kind = .{ .reg = .rax } },106043 .{ .type = .u64, .kind = .{ .reg = .rax } },
106096 .{ .type = .i64, .kind = .{ .reg = .rdx } },106044 .{ .type = .i64, .kind = .{ .reg = .rdx } },
106097 .unused,106045 .unused,
...@@ -106124,7 +106072,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -106124,7 +106072,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106124 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },106072 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
106125 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },106073 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
106126 .{ .type = .f80, .kind = .{ .frame = .call_frame } },106074 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
106127 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsxfti" } } },106075 .{ .type = .usize, .kind = .{ .extern_func = "__fixunsxfti" } },
106128 .{ .type = .u64, .kind = .{ .reg = .rax } },106076 .{ .type = .u64, .kind = .{ .reg = .rax } },
106129 .{ .type = .u64, .kind = .{ .reg = .rdx } },106077 .{ .type = .u64, .kind = .{ .reg = .rdx } },
106130 .unused,106078 .unused,
...@@ -106158,7 +106106,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -106158,7 +106106,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106158 .{ .type = .usize, .kind = .{ .reg = .rsi } },106106 .{ .type = .usize, .kind = .{ .reg = .rsi } },
106159 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },106107 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
106160 .{ .type = .f80, .kind = .{ .frame = .call_frame } },106108 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
106161 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixxfei" } } },106109 .{ .type = .usize, .kind = .{ .extern_func = "__fixxfei" } },
106162 .unused,106110 .unused,
106163 .unused,106111 .unused,
106164 .unused,106112 .unused,
...@@ -106188,7 +106136,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -106188,7 +106136,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106188 .{ .type = .usize, .kind = .{ .reg = .rsi } },106136 .{ .type = .usize, .kind = .{ .reg = .rsi } },
106189 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },106137 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
106190 .{ .type = .f80, .kind = .{ .frame = .call_frame } },106138 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
106191 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsxfei" } } },106139 .{ .type = .usize, .kind = .{ .extern_func = "__fixunsxfei" } },
106192 .unused,106140 .unused,
106193 .unused,106141 .unused,
106194 .unused,106142 .unused,
...@@ -106218,7 +106166,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -106218,7 +106166,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106218 .{ .type = .usize, .kind = .{ .reg = .rsi } },106166 .{ .type = .usize, .kind = .{ .reg = .rsi } },
106219 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },106167 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
106220 .{ .type = .f80, .kind = .{ .frame = .call_frame } },106168 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
106221 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixxfei" } } },106169 .{ .type = .usize, .kind = .{ .extern_func = "__fixxfei" } },
106222 .unused,106170 .unused,
106223 .unused,106171 .unused,
106224 .unused,106172 .unused,
...@@ -106248,7 +106196,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -106248,7 +106196,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106248 .{ .type = .usize, .kind = .{ .reg = .rsi } },106196 .{ .type = .usize, .kind = .{ .reg = .rsi } },
106249 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },106197 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
106250 .{ .type = .f80, .kind = .{ .frame = .call_frame } },106198 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
106251 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsxfei" } } },106199 .{ .type = .usize, .kind = .{ .extern_func = "__fixunsxfei" } },
106252 .unused,106200 .unused,
106253 .unused,106201 .unused,
106254 .unused,106202 .unused,
...@@ -106278,7 +106226,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -106278,7 +106226,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106278 .{ .type = .usize, .kind = .{ .reg = .rsi } },106226 .{ .type = .usize, .kind = .{ .reg = .rsi } },
106279 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },106227 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
106280 .{ .type = .f80, .kind = .{ .frame = .call_frame } },106228 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
106281 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixxfei" } } },106229 .{ .type = .usize, .kind = .{ .extern_func = "__fixxfei" } },
106282 .unused,106230 .unused,
106283 .unused,106231 .unused,
106284 .unused,106232 .unused,
...@@ -106308,7 +106256,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -106308,7 +106256,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106308 .{ .type = .usize, .kind = .{ .reg = .rsi } },106256 .{ .type = .usize, .kind = .{ .reg = .rsi } },
106309 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },106257 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
106310 .{ .type = .f80, .kind = .{ .frame = .call_frame } },106258 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
106311 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsxfei" } } },106259 .{ .type = .usize, .kind = .{ .extern_func = "__fixunsxfei" } },
106312 .unused,106260 .unused,
106313 .unused,106261 .unused,
106314 .unused,106262 .unused,
...@@ -106340,7 +106288,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -106340,7 +106288,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106340 .{ .type = .usize, .kind = .{ .reg = .rsi } },106288 .{ .type = .usize, .kind = .{ .reg = .rsi } },
106341 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },106289 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
106342 .{ .type = .f80, .kind = .{ .frame = .call_frame } },106290 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
106343 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixxfei" } } },106291 .{ .type = .usize, .kind = .{ .extern_func = "__fixxfei" } },
106344 .unused,106292 .unused,
106345 .unused,106293 .unused,
106346 .unused,106294 .unused,
...@@ -106375,7 +106323,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -106375,7 +106323,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106375 .{ .type = .usize, .kind = .{ .reg = .rsi } },106323 .{ .type = .usize, .kind = .{ .reg = .rsi } },
106376 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },106324 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
106377 .{ .type = .f80, .kind = .{ .frame = .call_frame } },106325 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
106378 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsxfei" } } },106326 .{ .type = .usize, .kind = .{ .extern_func = "__fixunsxfei" } },
106379 .unused,106327 .unused,
106380 .unused,106328 .unused,
106381 .unused,106329 .unused,
...@@ -106410,7 +106358,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -106410,7 +106358,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106410 .{ .type = .usize, .kind = .{ .reg = .rsi } },106358 .{ .type = .usize, .kind = .{ .reg = .rsi } },
106411 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },106359 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
106412 .{ .type = .f80, .kind = .{ .frame = .call_frame } },106360 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
106413 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixxfei" } } },106361 .{ .type = .usize, .kind = .{ .extern_func = "__fixxfei" } },
106414 .unused,106362 .unused,
106415 .unused,106363 .unused,
106416 .unused,106364 .unused,
...@@ -106445,7 +106393,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -106445,7 +106393,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106445 .{ .type = .usize, .kind = .{ .reg = .rsi } },106393 .{ .type = .usize, .kind = .{ .reg = .rsi } },
106446 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },106394 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
106447 .{ .type = .f80, .kind = .{ .frame = .call_frame } },106395 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
106448 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsxfei" } } },106396 .{ .type = .usize, .kind = .{ .extern_func = "__fixunsxfei" } },
106449 .unused,106397 .unused,
106450 .unused,106398 .unused,
106451 .unused,106399 .unused,
...@@ -106480,7 +106428,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -106480,7 +106428,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106480 .{ .type = .usize, .kind = .{ .reg = .rsi } },106428 .{ .type = .usize, .kind = .{ .reg = .rsi } },
106481 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },106429 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
106482 .{ .type = .f80, .kind = .{ .frame = .call_frame } },106430 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
106483 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixxfei" } } },106431 .{ .type = .usize, .kind = .{ .extern_func = "__fixxfei" } },
106484 .unused,106432 .unused,
106485 .unused,106433 .unused,
106486 .unused,106434 .unused,
...@@ -106515,7 +106463,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -106515,7 +106463,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106515 .{ .type = .usize, .kind = .{ .reg = .rsi } },106463 .{ .type = .usize, .kind = .{ .reg = .rsi } },
106516 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },106464 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
106517 .{ .type = .f80, .kind = .{ .frame = .call_frame } },106465 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
106518 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsxfei" } } },106466 .{ .type = .usize, .kind = .{ .extern_func = "__fixunsxfei" } },
106519 .unused,106467 .unused,
106520 .unused,106468 .unused,
106521 .unused,106469 .unused,
...@@ -106547,7 +106495,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -106547,7 +106495,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106547 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },106495 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
106548 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },106496 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
106549 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },106497 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
106550 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixtfsi" } } },106498 .{ .type = .usize, .kind = .{ .extern_func = "__fixtfsi" } },
106551 .{ .type = .i32, .kind = .{ .reg = .eax } },106499 .{ .type = .i32, .kind = .{ .reg = .eax } },
106552 .unused,106500 .unused,
106553 .unused,106501 .unused,
...@@ -106580,7 +106528,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -106580,7 +106528,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106580 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },106528 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
106581 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },106529 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
106582 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },106530 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
106583 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixtfsi" } } },106531 .{ .type = .usize, .kind = .{ .extern_func = "__fixtfsi" } },
106584 .{ .type = .i32, .kind = .{ .reg = .eax } },106532 .{ .type = .i32, .kind = .{ .reg = .eax } },
106585 .unused,106533 .unused,
106586 .unused,106534 .unused,
...@@ -106613,7 +106561,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -106613,7 +106561,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106613 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },106561 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
106614 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },106562 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
106615 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },106563 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
106616 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixtfsi" } } },106564 .{ .type = .usize, .kind = .{ .extern_func = "__fixtfsi" } },
106617 .{ .type = .i32, .kind = .{ .reg = .eax } },106565 .{ .type = .i32, .kind = .{ .reg = .eax } },
106618 .unused,106566 .unused,
106619 .unused,106567 .unused,
...@@ -106646,7 +106594,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -106646,7 +106594,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106646 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },106594 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
106647 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },106595 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
106648 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },106596 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
106649 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixtfsi" } } },106597 .{ .type = .usize, .kind = .{ .extern_func = "__fixtfsi" } },
106650 .{ .type = .i32, .kind = .{ .reg = .eax } },106598 .{ .type = .i32, .kind = .{ .reg = .eax } },
106651 .unused,106599 .unused,
106652 .unused,106600 .unused,
...@@ -106679,7 +106627,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -106679,7 +106627,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106679 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },106627 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
106680 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },106628 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
106681 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },106629 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
106682 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixtfsi" } } },106630 .{ .type = .usize, .kind = .{ .extern_func = "__fixtfsi" } },
106683 .{ .type = .i32, .kind = .{ .reg = .eax } },106631 .{ .type = .i32, .kind = .{ .reg = .eax } },
106684 .unused,106632 .unused,
106685 .unused,106633 .unused,
...@@ -106712,7 +106660,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -106712,7 +106660,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106712 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },106660 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
106713 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },106661 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
106714 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },106662 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
106715 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixtfsi" } } },106663 .{ .type = .usize, .kind = .{ .extern_func = "__fixtfsi" } },
106716 .{ .type = .i32, .kind = .{ .reg = .eax } },106664 .{ .type = .i32, .kind = .{ .reg = .eax } },
106717 .unused,106665 .unused,
106718 .unused,106666 .unused,
...@@ -106744,7 +106692,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -106744,7 +106692,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106744 .extra_temps = .{106692 .extra_temps = .{
106745 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },106693 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
106746 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },106694 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
106747 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixtfsi" } } },106695 .{ .type = .usize, .kind = .{ .extern_func = "__fixtfsi" } },
106748 .{ .type = .i32, .kind = .{ .reg = .eax } },106696 .{ .type = .i32, .kind = .{ .reg = .eax } },
106749 .unused,106697 .unused,
106750 .unused,106698 .unused,
...@@ -106775,7 +106723,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -106775,7 +106723,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106775 .extra_temps = .{106723 .extra_temps = .{
106776 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },106724 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
106777 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },106725 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
106778 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixtfsi" } } },106726 .{ .type = .usize, .kind = .{ .extern_func = "__fixtfsi" } },
106779 .{ .type = .i32, .kind = .{ .reg = .eax } },106727 .{ .type = .i32, .kind = .{ .reg = .eax } },
106780 .unused,106728 .unused,
106781 .unused,106729 .unused,
...@@ -106806,7 +106754,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -106806,7 +106754,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106806 .extra_temps = .{106754 .extra_temps = .{
106807 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },106755 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
106808 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },106756 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
106809 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixtfsi" } } },106757 .{ .type = .usize, .kind = .{ .extern_func = "__fixtfsi" } },
106810 .{ .type = .i32, .kind = .{ .reg = .eax } },106758 .{ .type = .i32, .kind = .{ .reg = .eax } },
106811 .unused,106759 .unused,
106812 .unused,106760 .unused,
...@@ -106835,7 +106783,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -106835,7 +106783,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106835 },106783 },
106836 .call_frame = .{ .alignment = .@"16" },106784 .call_frame = .{ .alignment = .@"16" },
106837 .extra_temps = .{106785 .extra_temps = .{
106838 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixtfsi" } } },106786 .{ .type = .usize, .kind = .{ .extern_func = "__fixtfsi" } },
106839 .unused,106787 .unused,
106840 .unused,106788 .unused,
106841 .unused,106789 .unused,
...@@ -106861,7 +106809,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -106861,7 +106809,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106861 },106809 },
106862 .call_frame = .{ .alignment = .@"16" },106810 .call_frame = .{ .alignment = .@"16" },
106863 .extra_temps = .{106811 .extra_temps = .{
106864 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunstfsi" } } },106812 .{ .type = .usize, .kind = .{ .extern_func = "__fixunstfsi" } },
106865 .unused,106813 .unused,
106866 .unused,106814 .unused,
106867 .unused,106815 .unused,
...@@ -106889,7 +106837,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -106889,7 +106837,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106889 .extra_temps = .{106837 .extra_temps = .{
106890 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },106838 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
106891 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },106839 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
106892 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixtfsi" } } },106840 .{ .type = .usize, .kind = .{ .extern_func = "__fixtfsi" } },
106893 .{ .type = .i32, .kind = .{ .reg = .eax } },106841 .{ .type = .i32, .kind = .{ .reg = .eax } },
106894 .unused,106842 .unused,
106895 .unused,106843 .unused,
...@@ -106920,7 +106868,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -106920,7 +106868,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106920 .extra_temps = .{106868 .extra_temps = .{
106921 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },106869 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
106922 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },106870 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
106923 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunstfsi" } } },106871 .{ .type = .usize, .kind = .{ .extern_func = "__fixunstfsi" } },
106924 .{ .type = .u32, .kind = .{ .reg = .eax } },106872 .{ .type = .u32, .kind = .{ .reg = .eax } },
106925 .unused,106873 .unused,
106926 .unused,106874 .unused,
...@@ -106951,7 +106899,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -106951,7 +106899,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106951 .extra_temps = .{106899 .extra_temps = .{
106952 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },106900 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
106953 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },106901 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
106954 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixtfsi" } } },106902 .{ .type = .usize, .kind = .{ .extern_func = "__fixtfsi" } },
106955 .{ .type = .i32, .kind = .{ .reg = .eax } },106903 .{ .type = .i32, .kind = .{ .reg = .eax } },
106956 .unused,106904 .unused,
106957 .unused,106905 .unused,
...@@ -106982,7 +106930,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -106982,7 +106930,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106982 .extra_temps = .{106930 .extra_temps = .{
106983 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },106931 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
106984 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },106932 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
106985 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunstfsi" } } },106933 .{ .type = .usize, .kind = .{ .extern_func = "__fixunstfsi" } },
106986 .{ .type = .u32, .kind = .{ .reg = .eax } },106934 .{ .type = .u32, .kind = .{ .reg = .eax } },
106987 .unused,106935 .unused,
106988 .unused,106936 .unused,
...@@ -107013,7 +106961,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -107013,7 +106961,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
107013 .extra_temps = .{106961 .extra_temps = .{
107014 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },106962 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
107015 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },106963 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
107016 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixtfsi" } } },106964 .{ .type = .usize, .kind = .{ .extern_func = "__fixtfsi" } },
107017 .{ .type = .i32, .kind = .{ .reg = .eax } },106965 .{ .type = .i32, .kind = .{ .reg = .eax } },
107018 .unused,106966 .unused,
107019 .unused,106967 .unused,
...@@ -107044,7 +106992,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -107044,7 +106992,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
107044 .extra_temps = .{106992 .extra_temps = .{
107045 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },106993 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
107046 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },106994 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
107047 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunstfsi" } } },106995 .{ .type = .usize, .kind = .{ .extern_func = "__fixunstfsi" } },
107048 .{ .type = .u32, .kind = .{ .reg = .eax } },106996 .{ .type = .u32, .kind = .{ .reg = .eax } },
107049 .unused,106997 .unused,
107050 .unused,106998 .unused,
...@@ -107073,7 +107021,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -107073,7 +107021,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
107073 },107021 },
107074 .call_frame = .{ .alignment = .@"16" },107022 .call_frame = .{ .alignment = .@"16" },
107075 .extra_temps = .{107023 .extra_temps = .{
107076 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixtfdi" } } },107024 .{ .type = .usize, .kind = .{ .extern_func = "__fixtfdi" } },
107077 .unused,107025 .unused,
107078 .unused,107026 .unused,
107079 .unused,107027 .unused,
...@@ -107099,7 +107047,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -107099,7 +107047,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
107099 },107047 },
107100 .call_frame = .{ .alignment = .@"16" },107048 .call_frame = .{ .alignment = .@"16" },
107101 .extra_temps = .{107049 .extra_temps = .{
107102 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunstfdi" } } },107050 .{ .type = .usize, .kind = .{ .extern_func = "__fixunstfdi" } },
107103 .unused,107051 .unused,
107104 .unused,107052 .unused,
107105 .unused,107053 .unused,
...@@ -107127,7 +107075,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -107127,7 +107075,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
107127 .extra_temps = .{107075 .extra_temps = .{
107128 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },107076 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
107129 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },107077 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
107130 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixtfdi" } } },107078 .{ .type = .usize, .kind = .{ .extern_func = "__fixtfdi" } },
107131 .{ .type = .i64, .kind = .{ .reg = .rax } },107079 .{ .type = .i64, .kind = .{ .reg = .rax } },
107132 .unused,107080 .unused,
107133 .unused,107081 .unused,
...@@ -107158,7 +107106,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -107158,7 +107106,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
107158 .extra_temps = .{107106 .extra_temps = .{
107159 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },107107 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
107160 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },107108 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
107161 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunstfdi" } } },107109 .{ .type = .usize, .kind = .{ .extern_func = "__fixunstfdi" } },
107162 .{ .type = .u64, .kind = .{ .reg = .rax } },107110 .{ .type = .u64, .kind = .{ .reg = .rax } },
107163 .unused,107111 .unused,
107164 .unused,107112 .unused,
...@@ -107189,7 +107137,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -107189,7 +107137,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
107189 .extra_temps = .{107137 .extra_temps = .{
107190 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },107138 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
107191 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },107139 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
107192 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixtfdi" } } },107140 .{ .type = .usize, .kind = .{ .extern_func = "__fixtfdi" } },
107193 .{ .type = .i64, .kind = .{ .reg = .rax } },107141 .{ .type = .i64, .kind = .{ .reg = .rax } },
107194 .unused,107142 .unused,
107195 .unused,107143 .unused,
...@@ -107220,7 +107168,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -107220,7 +107168,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
107220 .extra_temps = .{107168 .extra_temps = .{
107221 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },107169 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
107222 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },107170 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
107223 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunstfdi" } } },107171 .{ .type = .usize, .kind = .{ .extern_func = "__fixunstfdi" } },
107224 .{ .type = .u64, .kind = .{ .reg = .rax } },107172 .{ .type = .u64, .kind = .{ .reg = .rax } },
107225 .unused,107173 .unused,
107226 .unused,107174 .unused,
...@@ -107251,7 +107199,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -107251,7 +107199,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
107251 .extra_temps = .{107199 .extra_temps = .{
107252 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },107200 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
107253 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },107201 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
107254 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixtfdi" } } },107202 .{ .type = .usize, .kind = .{ .extern_func = "__fixtfdi" } },
107255 .{ .type = .i64, .kind = .{ .reg = .rax } },107203 .{ .type = .i64, .kind = .{ .reg = .rax } },
107256 .unused,107204 .unused,
107257 .unused,107205 .unused,
...@@ -107282,7 +107230,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -107282,7 +107230,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
107282 .extra_temps = .{107230 .extra_temps = .{
107283 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },107231 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
107284 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },107232 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
107285 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunstfdi" } } },107233 .{ .type = .usize, .kind = .{ .extern_func = "__fixunstfdi" } },
107286 .{ .type = .u64, .kind = .{ .reg = .rax } },107234 .{ .type = .u64, .kind = .{ .reg = .rax } },
107287 .unused,107235 .unused,
107288 .unused,107236 .unused,
...@@ -107311,7 +107259,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -107311,7 +107259,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
107311 },107259 },
107312 .call_frame = .{ .alignment = .@"16" },107260 .call_frame = .{ .alignment = .@"16" },
107313 .extra_temps = .{107261 .extra_temps = .{
107314 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixtfti" } } },107262 .{ .type = .usize, .kind = .{ .extern_func = "__fixtfti" } },
107315 .unused,107263 .unused,
107316 .unused,107264 .unused,
107317 .unused,107265 .unused,
...@@ -107337,7 +107285,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -107337,7 +107285,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
107337 },107285 },
107338 .call_frame = .{ .alignment = .@"16" },107286 .call_frame = .{ .alignment = .@"16" },
107339 .extra_temps = .{107287 .extra_temps = .{
107340 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunstfti" } } },107288 .{ .type = .usize, .kind = .{ .extern_func = "__fixunstfti" } },
107341 .unused,107289 .unused,
107342 .unused,107290 .unused,
107343 .unused,107291 .unused,
...@@ -107365,7 +107313,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -107365,7 +107313,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
107365 .extra_temps = .{107313 .extra_temps = .{
107366 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },107314 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
107367 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },107315 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
107368 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixtfti" } } },107316 .{ .type = .usize, .kind = .{ .extern_func = "__fixtfti" } },
107369 .{ .type = .u64, .kind = .{ .reg = .rax } },107317 .{ .type = .u64, .kind = .{ .reg = .rax } },
107370 .{ .type = .i64, .kind = .{ .reg = .rdx } },107318 .{ .type = .i64, .kind = .{ .reg = .rdx } },
107371 .unused,107319 .unused,
...@@ -107397,7 +107345,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -107397,7 +107345,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
107397 .extra_temps = .{107345 .extra_temps = .{
107398 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },107346 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
107399 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },107347 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
107400 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunstfti" } } },107348 .{ .type = .usize, .kind = .{ .extern_func = "__fixunstfti" } },
107401 .{ .type = .u64, .kind = .{ .reg = .rax } },107349 .{ .type = .u64, .kind = .{ .reg = .rax } },
107402 .{ .type = .u64, .kind = .{ .reg = .rdx } },107350 .{ .type = .u64, .kind = .{ .reg = .rdx } },
107403 .unused,107351 .unused,
...@@ -107429,7 +107377,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -107429,7 +107377,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
107429 .extra_temps = .{107377 .extra_temps = .{
107430 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },107378 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
107431 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },107379 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
107432 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixtfti" } } },107380 .{ .type = .usize, .kind = .{ .extern_func = "__fixtfti" } },
107433 .{ .type = .u64, .kind = .{ .reg = .rax } },107381 .{ .type = .u64, .kind = .{ .reg = .rax } },
107434 .{ .type = .i64, .kind = .{ .reg = .rdx } },107382 .{ .type = .i64, .kind = .{ .reg = .rdx } },
107435 .unused,107383 .unused,
...@@ -107461,7 +107409,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -107461,7 +107409,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
107461 .extra_temps = .{107409 .extra_temps = .{
107462 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },107410 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
107463 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },107411 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
107464 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunstfti" } } },107412 .{ .type = .usize, .kind = .{ .extern_func = "__fixunstfti" } },
107465 .{ .type = .u64, .kind = .{ .reg = .rax } },107413 .{ .type = .u64, .kind = .{ .reg = .rax } },
107466 .{ .type = .u64, .kind = .{ .reg = .rdx } },107414 .{ .type = .u64, .kind = .{ .reg = .rdx } },
107467 .unused,107415 .unused,
...@@ -107493,7 +107441,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -107493,7 +107441,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
107493 .extra_temps = .{107441 .extra_temps = .{
107494 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },107442 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
107495 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },107443 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
107496 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixtfti" } } },107444 .{ .type = .usize, .kind = .{ .extern_func = "__fixtfti" } },
107497 .{ .type = .u64, .kind = .{ .reg = .rax } },107445 .{ .type = .u64, .kind = .{ .reg = .rax } },
107498 .{ .type = .i64, .kind = .{ .reg = .rdx } },107446 .{ .type = .i64, .kind = .{ .reg = .rdx } },
107499 .unused,107447 .unused,
...@@ -107525,7 +107473,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -107525,7 +107473,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
107525 .extra_temps = .{107473 .extra_temps = .{
107526 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },107474 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
107527 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },107475 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
107528 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunstfti" } } },107476 .{ .type = .usize, .kind = .{ .extern_func = "__fixunstfti" } },
107529 .{ .type = .u64, .kind = .{ .reg = .rax } },107477 .{ .type = .u64, .kind = .{ .reg = .rax } },
107530 .{ .type = .u64, .kind = .{ .reg = .rdx } },107478 .{ .type = .u64, .kind = .{ .reg = .rdx } },
107531 .unused,107479 .unused,
...@@ -107557,7 +107505,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -107557,7 +107505,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
107557 .extra_temps = .{107505 .extra_temps = .{
107558 .{ .type = .usize, .kind = .{ .reg = .rdi } },107506 .{ .type = .usize, .kind = .{ .reg = .rdi } },
107559 .{ .type = .usize, .kind = .{ .reg = .rsi } },107507 .{ .type = .usize, .kind = .{ .reg = .rsi } },
107560 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixtfei" } } },107508 .{ .type = .usize, .kind = .{ .extern_func = "__fixtfei" } },
107561 .unused,107509 .unused,
107562 .unused,107510 .unused,
107563 .unused,107511 .unused,
...@@ -107585,7 +107533,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -107585,7 +107533,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
107585 .extra_temps = .{107533 .extra_temps = .{
107586 .{ .type = .usize, .kind = .{ .reg = .rdi } },107534 .{ .type = .usize, .kind = .{ .reg = .rdi } },
107587 .{ .type = .usize, .kind = .{ .reg = .rsi } },107535 .{ .type = .usize, .kind = .{ .reg = .rsi } },
107588 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunstfei" } } },107536 .{ .type = .usize, .kind = .{ .extern_func = "__fixunstfei" } },
107589 .unused,107537 .unused,
107590 .unused,107538 .unused,
107591 .unused,107539 .unused,
...@@ -107616,7 +107564,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -107616,7 +107564,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
107616 .{ .type = .usize, .kind = .{ .reg = .rdi } },107564 .{ .type = .usize, .kind = .{ .reg = .rdi } },
107617 .{ .type = .usize, .kind = .{ .reg = .rsi } },107565 .{ .type = .usize, .kind = .{ .reg = .rsi } },
107618 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },107566 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
107619 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixtfei" } } },107567 .{ .type = .usize, .kind = .{ .extern_func = "__fixtfei" } },
107620 .unused,107568 .unused,
107621 .unused,107569 .unused,
107622 .unused,107570 .unused,
...@@ -107650,7 +107598,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -107650,7 +107598,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
107650 .{ .type = .usize, .kind = .{ .reg = .rdi } },107598 .{ .type = .usize, .kind = .{ .reg = .rdi } },
107651 .{ .type = .usize, .kind = .{ .reg = .rsi } },107599 .{ .type = .usize, .kind = .{ .reg = .rsi } },
107652 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },107600 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
107653 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunstfei" } } },107601 .{ .type = .usize, .kind = .{ .extern_func = "__fixunstfei" } },
107654 .unused,107602 .unused,
107655 .unused,107603 .unused,
107656 .unused,107604 .unused,
...@@ -107684,7 +107632,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -107684,7 +107632,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
107684 .{ .type = .usize, .kind = .{ .reg = .rdi } },107632 .{ .type = .usize, .kind = .{ .reg = .rdi } },
107685 .{ .type = .usize, .kind = .{ .reg = .rsi } },107633 .{ .type = .usize, .kind = .{ .reg = .rsi } },
107686 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },107634 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
107687 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixtfei" } } },107635 .{ .type = .usize, .kind = .{ .extern_func = "__fixtfei" } },
107688 .unused,107636 .unused,
107689 .unused,107637 .unused,
107690 .unused,107638 .unused,
...@@ -107718,7 +107666,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -107718,7 +107666,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
107718 .{ .type = .usize, .kind = .{ .reg = .rdi } },107666 .{ .type = .usize, .kind = .{ .reg = .rdi } },
107719 .{ .type = .usize, .kind = .{ .reg = .rsi } },107667 .{ .type = .usize, .kind = .{ .reg = .rsi } },
107720 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },107668 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
107721 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunstfei" } } },107669 .{ .type = .usize, .kind = .{ .extern_func = "__fixunstfei" } },
107722 .unused,107670 .unused,
107723 .unused,107671 .unused,
107724 .unused,107672 .unused,
...@@ -107752,7 +107700,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -107752,7 +107700,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
107752 .{ .type = .usize, .kind = .{ .reg = .rdi } },107700 .{ .type = .usize, .kind = .{ .reg = .rdi } },
107753 .{ .type = .usize, .kind = .{ .reg = .rsi } },107701 .{ .type = .usize, .kind = .{ .reg = .rsi } },
107754 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },107702 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
107755 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixtfei" } } },107703 .{ .type = .usize, .kind = .{ .extern_func = "__fixtfei" } },
107756 .unused,107704 .unused,
107757 .unused,107705 .unused,
107758 .unused,107706 .unused,
...@@ -107786,7 +107734,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -107786,7 +107734,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
107786 .{ .type = .usize, .kind = .{ .reg = .rdi } },107734 .{ .type = .usize, .kind = .{ .reg = .rdi } },
107787 .{ .type = .usize, .kind = .{ .reg = .rsi } },107735 .{ .type = .usize, .kind = .{ .reg = .rsi } },
107788 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },107736 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
107789 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunstfei" } } },107737 .{ .type = .usize, .kind = .{ .extern_func = "__fixunstfei" } },
107790 .unused,107738 .unused,
107791 .unused,107739 .unused,
107792 .unused,107740 .unused,
...@@ -108034,7 +107982,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -108034,7 +107982,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108034 },107982 },
108035 .call_frame = .{ .alignment = .@"16" },107983 .call_frame = .{ .alignment = .@"16" },
108036 .extra_temps = .{107984 .extra_temps = .{
108037 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsihf" } } },107985 .{ .type = .usize, .kind = .{ .extern_func = "__floatsihf" } },
108038 .unused,107986 .unused,
108039 .unused,107987 .unused,
108040 .unused,107988 .unused,
...@@ -108061,7 +108009,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -108061,7 +108009,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108061 },108009 },
108062 .call_frame = .{ .alignment = .@"16" },108010 .call_frame = .{ .alignment = .@"16" },
108063 .extra_temps = .{108011 .extra_temps = .{
108064 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsihf" } } },108012 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsihf" } },
108065 .unused,108013 .unused,
108066 .unused,108014 .unused,
108067 .unused,108015 .unused,
...@@ -108088,7 +108036,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -108088,7 +108036,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108088 },108036 },
108089 .call_frame = .{ .alignment = .@"16" },108037 .call_frame = .{ .alignment = .@"16" },
108090 .extra_temps = .{108038 .extra_temps = .{
108091 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsihf" } } },108039 .{ .type = .usize, .kind = .{ .extern_func = "__floatsihf" } },
108092 .unused,108040 .unused,
108093 .unused,108041 .unused,
108094 .unused,108042 .unused,
...@@ -108115,7 +108063,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -108115,7 +108063,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108115 },108063 },
108116 .call_frame = .{ .alignment = .@"16" },108064 .call_frame = .{ .alignment = .@"16" },
108117 .extra_temps = .{108065 .extra_temps = .{
108118 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsihf" } } },108066 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsihf" } },
108119 .unused,108067 .unused,
108120 .unused,108068 .unused,
108121 .unused,108069 .unused,
...@@ -108142,7 +108090,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -108142,7 +108090,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108142 },108090 },
108143 .call_frame = .{ .alignment = .@"16" },108091 .call_frame = .{ .alignment = .@"16" },
108144 .extra_temps = .{108092 .extra_temps = .{
108145 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsihf" } } },108093 .{ .type = .usize, .kind = .{ .extern_func = "__floatsihf" } },
108146 .unused,108094 .unused,
108147 .unused,108095 .unused,
108148 .unused,108096 .unused,
...@@ -108168,7 +108116,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -108168,7 +108116,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108168 },108116 },
108169 .call_frame = .{ .alignment = .@"16" },108117 .call_frame = .{ .alignment = .@"16" },
108170 .extra_temps = .{108118 .extra_temps = .{
108171 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsihf" } } },108119 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsihf" } },
108172 .unused,108120 .unused,
108173 .unused,108121 .unused,
108174 .unused,108122 .unused,
...@@ -108194,7 +108142,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -108194,7 +108142,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108194 },108142 },
108195 .call_frame = .{ .alignment = .@"16" },108143 .call_frame = .{ .alignment = .@"16" },
108196 .extra_temps = .{108144 .extra_temps = .{
108197 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatdihf" } } },108145 .{ .type = .usize, .kind = .{ .extern_func = "__floatdihf" } },
108198 .unused,108146 .unused,
108199 .unused,108147 .unused,
108200 .unused,108148 .unused,
...@@ -108220,7 +108168,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -108220,7 +108168,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108220 },108168 },
108221 .call_frame = .{ .alignment = .@"16" },108169 .call_frame = .{ .alignment = .@"16" },
108222 .extra_temps = .{108170 .extra_temps = .{
108223 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatundihf" } } },108171 .{ .type = .usize, .kind = .{ .extern_func = "__floatundihf" } },
108224 .unused,108172 .unused,
108225 .unused,108173 .unused,
108226 .unused,108174 .unused,
...@@ -108246,7 +108194,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -108246,7 +108194,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108246 },108194 },
108247 .call_frame = .{ .alignment = .@"16" },108195 .call_frame = .{ .alignment = .@"16" },
108248 .extra_temps = .{108196 .extra_temps = .{
108249 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floattihf" } } },108197 .{ .type = .usize, .kind = .{ .extern_func = "__floattihf" } },
108250 .unused,108198 .unused,
108251 .unused,108199 .unused,
108252 .unused,108200 .unused,
...@@ -108272,7 +108220,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -108272,7 +108220,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108272 },108220 },
108273 .call_frame = .{ .alignment = .@"16" },108221 .call_frame = .{ .alignment = .@"16" },
108274 .extra_temps = .{108222 .extra_temps = .{
108275 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuntihf" } } },108223 .{ .type = .usize, .kind = .{ .extern_func = "__floatuntihf" } },
108276 .unused,108224 .unused,
108277 .unused,108225 .unused,
108278 .unused,108226 .unused,
...@@ -108300,7 +108248,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -108300,7 +108248,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108300 .extra_temps = .{108248 .extra_temps = .{
108301 .{ .type = .usize, .kind = .{ .reg = .rdi } },108249 .{ .type = .usize, .kind = .{ .reg = .rdi } },
108302 .{ .type = .usize, .kind = .{ .reg = .rsi } },108250 .{ .type = .usize, .kind = .{ .reg = .rsi } },
108303 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floateihf" } } },108251 .{ .type = .usize, .kind = .{ .extern_func = "__floateihf" } },
108304 .unused,108252 .unused,
108305 .unused,108253 .unused,
108306 .unused,108254 .unused,
...@@ -108328,7 +108276,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -108328,7 +108276,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108328 .extra_temps = .{108276 .extra_temps = .{
108329 .{ .type = .usize, .kind = .{ .reg = .rdi } },108277 .{ .type = .usize, .kind = .{ .reg = .rdi } },
108330 .{ .type = .usize, .kind = .{ .reg = .rsi } },108278 .{ .type = .usize, .kind = .{ .reg = .rsi } },
108331 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuneihf" } } },108279 .{ .type = .usize, .kind = .{ .extern_func = "__floatuneihf" } },
108332 .unused,108280 .unused,
108333 .unused,108281 .unused,
108334 .unused,108282 .unused,
...@@ -108532,7 +108480,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -108532,7 +108480,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108532 .extra_temps = .{108480 .extra_temps = .{
108533 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },108481 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
108534 .{ .type = .i32, .kind = .{ .reg = .edi } },108482 .{ .type = .i32, .kind = .{ .reg = .edi } },
108535 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsihf" } } },108483 .{ .type = .usize, .kind = .{ .extern_func = "__floatsihf" } },
108536 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },108484 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
108537 .unused,108485 .unused,
108538 .unused,108486 .unused,
...@@ -108563,7 +108511,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -108563,7 +108511,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108563 .extra_temps = .{108511 .extra_temps = .{
108564 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },108512 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
108565 .{ .type = .i32, .kind = .{ .reg = .edi } },108513 .{ .type = .i32, .kind = .{ .reg = .edi } },
108566 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsihf" } } },108514 .{ .type = .usize, .kind = .{ .extern_func = "__floatsihf" } },
108567 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },108515 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
108568 .unused,108516 .unused,
108569 .unused,108517 .unused,
...@@ -108594,7 +108542,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -108594,7 +108542,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108594 .extra_temps = .{108542 .extra_temps = .{
108595 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },108543 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
108596 .{ .type = .i32, .kind = .{ .reg = .edi } },108544 .{ .type = .i32, .kind = .{ .reg = .edi } },
108597 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsihf" } } },108545 .{ .type = .usize, .kind = .{ .extern_func = "__floatsihf" } },
108598 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },108546 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
108599 .unused,108547 .unused,
108600 .unused,108548 .unused,
...@@ -108625,7 +108573,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -108625,7 +108573,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108625 .extra_temps = .{108573 .extra_temps = .{
108626 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },108574 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
108627 .{ .type = .i32, .kind = .{ .reg = .edi } },108575 .{ .type = .i32, .kind = .{ .reg = .edi } },
108628 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsihf" } } },108576 .{ .type = .usize, .kind = .{ .extern_func = "__floatsihf" } },
108629 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },108577 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
108630 .unused,108578 .unused,
108631 .unused,108579 .unused,
...@@ -108656,7 +108604,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -108656,7 +108604,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108656 .extra_temps = .{108604 .extra_temps = .{
108657 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },108605 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
108658 .{ .type = .i32, .kind = .{ .reg = .edi } },108606 .{ .type = .i32, .kind = .{ .reg = .edi } },
108659 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsihf" } } },108607 .{ .type = .usize, .kind = .{ .extern_func = "__floatsihf" } },
108660 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },108608 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
108661 .unused,108609 .unused,
108662 .unused,108610 .unused,
...@@ -108688,7 +108636,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -108688,7 +108636,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108688 .extra_temps = .{108636 .extra_temps = .{
108689 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },108637 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
108690 .{ .type = .i32, .kind = .{ .reg = .edi } },108638 .{ .type = .i32, .kind = .{ .reg = .edi } },
108691 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsihf" } } },108639 .{ .type = .usize, .kind = .{ .extern_func = "__floatsihf" } },
108692 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },108640 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
108693 .unused,108641 .unused,
108694 .unused,108642 .unused,
...@@ -108720,7 +108668,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -108720,7 +108668,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108720 .extra_temps = .{108668 .extra_temps = .{
108721 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },108669 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
108722 .{ .type = .i32, .kind = .{ .reg = .edi } },108670 .{ .type = .i32, .kind = .{ .reg = .edi } },
108723 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsihf" } } },108671 .{ .type = .usize, .kind = .{ .extern_func = "__floatsihf" } },
108724 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },108672 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
108725 .{ .type = .f32, .kind = .mem },108673 .{ .type = .f32, .kind = .mem },
108726 .unused,108674 .unused,
...@@ -108753,7 +108701,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -108753,7 +108701,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108753 .extra_temps = .{108701 .extra_temps = .{
108754 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },108702 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
108755 .{ .type = .i32, .kind = .{ .reg = .edi } },108703 .{ .type = .i32, .kind = .{ .reg = .edi } },
108756 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsihf" } } },108704 .{ .type = .usize, .kind = .{ .extern_func = "__floatsihf" } },
108757 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },108705 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
108758 .{ .type = .f32, .kind = .mem },108706 .{ .type = .f32, .kind = .mem },
108759 .unused,108707 .unused,
...@@ -108786,7 +108734,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -108786,7 +108734,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108786 .extra_temps = .{108734 .extra_temps = .{
108787 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },108735 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
108788 .{ .type = .u32, .kind = .{ .reg = .edi } },108736 .{ .type = .u32, .kind = .{ .reg = .edi } },
108789 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsihf" } } },108737 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsihf" } },
108790 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },108738 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
108791 .unused,108739 .unused,
108792 .unused,108740 .unused,
...@@ -108817,7 +108765,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -108817,7 +108765,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108817 .extra_temps = .{108765 .extra_temps = .{
108818 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },108766 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
108819 .{ .type = .u32, .kind = .{ .reg = .edi } },108767 .{ .type = .u32, .kind = .{ .reg = .edi } },
108820 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsihf" } } },108768 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsihf" } },
108821 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },108769 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
108822 .unused,108770 .unused,
108823 .unused,108771 .unused,
...@@ -108848,7 +108796,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -108848,7 +108796,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108848 .extra_temps = .{108796 .extra_temps = .{
108849 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },108797 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
108850 .{ .type = .u32, .kind = .{ .reg = .edi } },108798 .{ .type = .u32, .kind = .{ .reg = .edi } },
108851 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsihf" } } },108799 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsihf" } },
108852 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },108800 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
108853 .unused,108801 .unused,
108854 .unused,108802 .unused,
...@@ -108879,7 +108827,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -108879,7 +108827,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108879 .extra_temps = .{108827 .extra_temps = .{
108880 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },108828 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
108881 .{ .type = .u32, .kind = .{ .reg = .edi } },108829 .{ .type = .u32, .kind = .{ .reg = .edi } },
108882 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsihf" } } },108830 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsihf" } },
108883 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },108831 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
108884 .unused,108832 .unused,
108885 .unused,108833 .unused,
...@@ -108910,7 +108858,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -108910,7 +108858,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108910 .extra_temps = .{108858 .extra_temps = .{
108911 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },108859 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
108912 .{ .type = .u32, .kind = .{ .reg = .edi } },108860 .{ .type = .u32, .kind = .{ .reg = .edi } },
108913 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsihf" } } },108861 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsihf" } },
108914 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },108862 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
108915 .unused,108863 .unused,
108916 .unused,108864 .unused,
...@@ -108942,7 +108890,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -108942,7 +108890,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108942 .extra_temps = .{108890 .extra_temps = .{
108943 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },108891 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
108944 .{ .type = .u32, .kind = .{ .reg = .edi } },108892 .{ .type = .u32, .kind = .{ .reg = .edi } },
108945 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsihf" } } },108893 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsihf" } },
108946 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },108894 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
108947 .unused,108895 .unused,
108948 .unused,108896 .unused,
...@@ -108974,7 +108922,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -108974,7 +108922,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108974 .extra_temps = .{108922 .extra_temps = .{
108975 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },108923 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
108976 .{ .type = .u32, .kind = .{ .reg = .edi } },108924 .{ .type = .u32, .kind = .{ .reg = .edi } },
108977 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsihf" } } },108925 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsihf" } },
108978 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },108926 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
108979 .{ .type = .f32, .kind = .mem },108927 .{ .type = .f32, .kind = .mem },
108980 .unused,108928 .unused,
...@@ -109007,7 +108955,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -109007,7 +108955,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
109007 .extra_temps = .{108955 .extra_temps = .{
109008 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },108956 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
109009 .{ .type = .u32, .kind = .{ .reg = .edi } },108957 .{ .type = .u32, .kind = .{ .reg = .edi } },
109010 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsihf" } } },108958 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsihf" } },
109011 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },108959 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
109012 .{ .type = .f32, .kind = .mem },108960 .{ .type = .f32, .kind = .mem },
109013 .unused,108961 .unused,
...@@ -109216,7 +109164,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -109216,7 +109164,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
109216 .extra_temps = .{109164 .extra_temps = .{
109217 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },109165 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
109218 .{ .type = .i32, .kind = .{ .reg = .edi } },109166 .{ .type = .i32, .kind = .{ .reg = .edi } },
109219 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsihf" } } },109167 .{ .type = .usize, .kind = .{ .extern_func = "__floatsihf" } },
109220 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },109168 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
109221 .unused,109169 .unused,
109222 .unused,109170 .unused,
...@@ -109247,7 +109195,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -109247,7 +109195,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
109247 .extra_temps = .{109195 .extra_temps = .{
109248 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },109196 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
109249 .{ .type = .i32, .kind = .{ .reg = .edi } },109197 .{ .type = .i32, .kind = .{ .reg = .edi } },
109250 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsihf" } } },109198 .{ .type = .usize, .kind = .{ .extern_func = "__floatsihf" } },
109251 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },109199 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
109252 .unused,109200 .unused,
109253 .unused,109201 .unused,
...@@ -109278,7 +109226,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -109278,7 +109226,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
109278 .extra_temps = .{109226 .extra_temps = .{
109279 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },109227 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
109280 .{ .type = .i32, .kind = .{ .reg = .edi } },109228 .{ .type = .i32, .kind = .{ .reg = .edi } },
109281 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsihf" } } },109229 .{ .type = .usize, .kind = .{ .extern_func = "__floatsihf" } },
109282 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },109230 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
109283 .unused,109231 .unused,
109284 .unused,109232 .unused,
...@@ -109310,7 +109258,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -109310,7 +109258,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
109310 .extra_temps = .{109258 .extra_temps = .{
109311 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },109259 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
109312 .{ .type = .i32, .kind = .{ .reg = .edi } },109260 .{ .type = .i32, .kind = .{ .reg = .edi } },
109313 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsihf" } } },109261 .{ .type = .usize, .kind = .{ .extern_func = "__floatsihf" } },
109314 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },109262 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
109315 .{ .type = .f32, .kind = .mem },109263 .{ .type = .f32, .kind = .mem },
109316 .unused,109264 .unused,
...@@ -109343,7 +109291,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -109343,7 +109291,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
109343 .extra_temps = .{109291 .extra_temps = .{
109344 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },109292 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
109345 .{ .type = .u32, .kind = .{ .reg = .edi } },109293 .{ .type = .u32, .kind = .{ .reg = .edi } },
109346 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsihf" } } },109294 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsihf" } },
109347 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },109295 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
109348 .unused,109296 .unused,
109349 .unused,109297 .unused,
...@@ -109374,7 +109322,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -109374,7 +109322,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
109374 .extra_temps = .{109322 .extra_temps = .{
109375 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },109323 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
109376 .{ .type = .u32, .kind = .{ .reg = .edi } },109324 .{ .type = .u32, .kind = .{ .reg = .edi } },
109377 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsihf" } } },109325 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsihf" } },
109378 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },109326 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
109379 .unused,109327 .unused,
109380 .unused,109328 .unused,
...@@ -109405,7 +109353,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -109405,7 +109353,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
109405 .extra_temps = .{109353 .extra_temps = .{
109406 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },109354 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
109407 .{ .type = .u32, .kind = .{ .reg = .edi } },109355 .{ .type = .u32, .kind = .{ .reg = .edi } },
109408 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsihf" } } },109356 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsihf" } },
109409 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },109357 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
109410 .unused,109358 .unused,
109411 .unused,109359 .unused,
...@@ -109437,7 +109385,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -109437,7 +109385,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
109437 .extra_temps = .{109385 .extra_temps = .{
109438 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },109386 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
109439 .{ .type = .u32, .kind = .{ .reg = .edi } },109387 .{ .type = .u32, .kind = .{ .reg = .edi } },
109440 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsihf" } } },109388 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsihf" } },
109441 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },109389 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
109442 .{ .type = .f32, .kind = .mem },109390 .{ .type = .f32, .kind = .mem },
109443 .unused,109391 .unused,
...@@ -109554,7 +109502,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -109554,7 +109502,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
109554 .extra_temps = .{109502 .extra_temps = .{
109555 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },109503 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
109556 .{ .type = .i32, .kind = .{ .reg = .edi } },109504 .{ .type = .i32, .kind = .{ .reg = .edi } },
109557 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsihf" } } },109505 .{ .type = .usize, .kind = .{ .extern_func = "__floatsihf" } },
109558 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },109506 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
109559 .unused,109507 .unused,
109560 .unused,109508 .unused,
...@@ -109585,7 +109533,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -109585,7 +109533,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
109585 .extra_temps = .{109533 .extra_temps = .{
109586 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },109534 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
109587 .{ .type = .i32, .kind = .{ .reg = .edi } },109535 .{ .type = .i32, .kind = .{ .reg = .edi } },
109588 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsihf" } } },109536 .{ .type = .usize, .kind = .{ .extern_func = "__floatsihf" } },
109589 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },109537 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
109590 .unused,109538 .unused,
109591 .unused,109539 .unused,
...@@ -109616,7 +109564,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -109616,7 +109564,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
109616 .extra_temps = .{109564 .extra_temps = .{
109617 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },109565 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
109618 .{ .type = .i32, .kind = .{ .reg = .edi } },109566 .{ .type = .i32, .kind = .{ .reg = .edi } },
109619 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsihf" } } },109567 .{ .type = .usize, .kind = .{ .extern_func = "__floatsihf" } },
109620 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },109568 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
109621 .unused,109569 .unused,
109622 .unused,109570 .unused,
...@@ -109648,7 +109596,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -109648,7 +109596,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
109648 .extra_temps = .{109596 .extra_temps = .{
109649 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },109597 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
109650 .{ .type = .i32, .kind = .{ .reg = .edi } },109598 .{ .type = .i32, .kind = .{ .reg = .edi } },
109651 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsihf" } } },109599 .{ .type = .usize, .kind = .{ .extern_func = "__floatsihf" } },
109652 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },109600 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
109653 .{ .type = .f32, .kind = .mem },109601 .{ .type = .f32, .kind = .mem },
109654 .unused,109602 .unused,
...@@ -109681,7 +109629,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -109681,7 +109629,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
109681 .extra_temps = .{109629 .extra_temps = .{
109682 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },109630 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
109683 .{ .type = .u32, .kind = .{ .reg = .edi } },109631 .{ .type = .u32, .kind = .{ .reg = .edi } },
109684 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsihf" } } },109632 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsihf" } },
109685 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },109633 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
109686 .unused,109634 .unused,
109687 .unused,109635 .unused,
...@@ -109712,7 +109660,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -109712,7 +109660,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
109712 .extra_temps = .{109660 .extra_temps = .{
109713 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },109661 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
109714 .{ .type = .u32, .kind = .{ .reg = .edi } },109662 .{ .type = .u32, .kind = .{ .reg = .edi } },
109715 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsihf" } } },109663 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsihf" } },
109716 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },109664 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
109717 .unused,109665 .unused,
109718 .unused,109666 .unused,
...@@ -109743,7 +109691,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -109743,7 +109691,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
109743 .extra_temps = .{109691 .extra_temps = .{
109744 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },109692 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
109745 .{ .type = .u32, .kind = .{ .reg = .edi } },109693 .{ .type = .u32, .kind = .{ .reg = .edi } },
109746 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsihf" } } },109694 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsihf" } },
109747 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },109695 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
109748 .unused,109696 .unused,
109749 .unused,109697 .unused,
...@@ -109775,7 +109723,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -109775,7 +109723,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
109775 .extra_temps = .{109723 .extra_temps = .{
109776 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },109724 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
109777 .{ .type = .u32, .kind = .{ .reg = .edi } },109725 .{ .type = .u32, .kind = .{ .reg = .edi } },
109778 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsihf" } } },109726 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsihf" } },
109779 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },109727 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
109780 .{ .type = .f32, .kind = .mem },109728 .{ .type = .f32, .kind = .mem },
109781 .unused,109729 .unused,
...@@ -109839,7 +109787,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -109839,7 +109787,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
109839 .extra_temps = .{109787 .extra_temps = .{
109840 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },109788 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
109841 .{ .type = .i64, .kind = .{ .reg = .rdi } },109789 .{ .type = .i64, .kind = .{ .reg = .rdi } },
109842 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatdihf" } } },109790 .{ .type = .usize, .kind = .{ .extern_func = "__floatdihf" } },
109843 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },109791 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
109844 .unused,109792 .unused,
109845 .unused,109793 .unused,
...@@ -109870,7 +109818,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -109870,7 +109818,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
109870 .extra_temps = .{109818 .extra_temps = .{
109871 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },109819 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
109872 .{ .type = .i64, .kind = .{ .reg = .rdi } },109820 .{ .type = .i64, .kind = .{ .reg = .rdi } },
109873 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatdihf" } } },109821 .{ .type = .usize, .kind = .{ .extern_func = "__floatdihf" } },
109874 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },109822 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
109875 .unused,109823 .unused,
109876 .unused,109824 .unused,
...@@ -109901,7 +109849,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -109901,7 +109849,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
109901 .extra_temps = .{109849 .extra_temps = .{
109902 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },109850 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
109903 .{ .type = .i64, .kind = .{ .reg = .rdi } },109851 .{ .type = .i64, .kind = .{ .reg = .rdi } },
109904 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatdihf" } } },109852 .{ .type = .usize, .kind = .{ .extern_func = "__floatdihf" } },
109905 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },109853 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
109906 .unused,109854 .unused,
109907 .unused,109855 .unused,
...@@ -109933,7 +109881,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -109933,7 +109881,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
109933 .extra_temps = .{109881 .extra_temps = .{
109934 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },109882 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
109935 .{ .type = .i64, .kind = .{ .reg = .rdi } },109883 .{ .type = .i64, .kind = .{ .reg = .rdi } },
109936 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatdihf" } } },109884 .{ .type = .usize, .kind = .{ .extern_func = "__floatdihf" } },
109937 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },109885 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
109938 .{ .type = .f32, .kind = .mem },109886 .{ .type = .f32, .kind = .mem },
109939 .unused,109887 .unused,
...@@ -109966,7 +109914,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -109966,7 +109914,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
109966 .extra_temps = .{109914 .extra_temps = .{
109967 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },109915 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
109968 .{ .type = .u64, .kind = .{ .reg = .rdi } },109916 .{ .type = .u64, .kind = .{ .reg = .rdi } },
109969 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatundihf" } } },109917 .{ .type = .usize, .kind = .{ .extern_func = "__floatundihf" } },
109970 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },109918 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
109971 .unused,109919 .unused,
109972 .unused,109920 .unused,
...@@ -109997,7 +109945,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -109997,7 +109945,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
109997 .extra_temps = .{109945 .extra_temps = .{
109998 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },109946 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
109999 .{ .type = .u64, .kind = .{ .reg = .rdi } },109947 .{ .type = .u64, .kind = .{ .reg = .rdi } },
110000 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatundihf" } } },109948 .{ .type = .usize, .kind = .{ .extern_func = "__floatundihf" } },
110001 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },109949 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
110002 .unused,109950 .unused,
110003 .unused,109951 .unused,
...@@ -110028,7 +109976,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -110028,7 +109976,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
110028 .extra_temps = .{109976 .extra_temps = .{
110029 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },109977 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
110030 .{ .type = .u64, .kind = .{ .reg = .rdi } },109978 .{ .type = .u64, .kind = .{ .reg = .rdi } },
110031 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatundihf" } } },109979 .{ .type = .usize, .kind = .{ .extern_func = "__floatundihf" } },
110032 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },109980 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
110033 .unused,109981 .unused,
110034 .unused,109982 .unused,
...@@ -110060,7 +110008,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -110060,7 +110008,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
110060 .extra_temps = .{110008 .extra_temps = .{
110061 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },110009 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
110062 .{ .type = .u64, .kind = .{ .reg = .rdi } },110010 .{ .type = .u64, .kind = .{ .reg = .rdi } },
110063 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatundihf" } } },110011 .{ .type = .usize, .kind = .{ .extern_func = "__floatundihf" } },
110064 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },110012 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
110065 .{ .type = .f32, .kind = .mem },110013 .{ .type = .f32, .kind = .mem },
110066 .unused,110014 .unused,
...@@ -110094,7 +110042,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -110094,7 +110042,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
110094 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },110042 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
110095 .{ .type = .u64, .kind = .{ .reg = .rdi } },110043 .{ .type = .u64, .kind = .{ .reg = .rdi } },
110096 .{ .type = .i64, .kind = .{ .reg = .rsi } },110044 .{ .type = .i64, .kind = .{ .reg = .rsi } },
110097 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floattihf" } } },110045 .{ .type = .usize, .kind = .{ .extern_func = "__floattihf" } },
110098 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },110046 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
110099 .unused,110047 .unused,
110100 .unused,110048 .unused,
...@@ -110126,7 +110074,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -110126,7 +110074,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
110126 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },110074 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
110127 .{ .type = .u64, .kind = .{ .reg = .rdi } },110075 .{ .type = .u64, .kind = .{ .reg = .rdi } },
110128 .{ .type = .i64, .kind = .{ .reg = .rsi } },110076 .{ .type = .i64, .kind = .{ .reg = .rsi } },
110129 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floattihf" } } },110077 .{ .type = .usize, .kind = .{ .extern_func = "__floattihf" } },
110130 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },110078 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
110131 .unused,110079 .unused,
110132 .unused,110080 .unused,
...@@ -110158,7 +110106,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -110158,7 +110106,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
110158 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },110106 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
110159 .{ .type = .u64, .kind = .{ .reg = .rdi } },110107 .{ .type = .u64, .kind = .{ .reg = .rdi } },
110160 .{ .type = .i64, .kind = .{ .reg = .rsi } },110108 .{ .type = .i64, .kind = .{ .reg = .rsi } },
110161 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floattihf" } } },110109 .{ .type = .usize, .kind = .{ .extern_func = "__floattihf" } },
110162 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },110110 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
110163 .unused,110111 .unused,
110164 .unused,110112 .unused,
...@@ -110191,7 +110139,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -110191,7 +110139,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
110191 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },110139 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
110192 .{ .type = .u64, .kind = .{ .reg = .rdi } },110140 .{ .type = .u64, .kind = .{ .reg = .rdi } },
110193 .{ .type = .i64, .kind = .{ .reg = .rsi } },110141 .{ .type = .i64, .kind = .{ .reg = .rsi } },
110194 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floattihf" } } },110142 .{ .type = .usize, .kind = .{ .extern_func = "__floattihf" } },
110195 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },110143 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
110196 .{ .type = .f32, .kind = .mem },110144 .{ .type = .f32, .kind = .mem },
110197 .unused,110145 .unused,
...@@ -110225,7 +110173,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -110225,7 +110173,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
110225 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },110173 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
110226 .{ .type = .u64, .kind = .{ .reg = .rdi } },110174 .{ .type = .u64, .kind = .{ .reg = .rdi } },
110227 .{ .type = .u64, .kind = .{ .reg = .rsi } },110175 .{ .type = .u64, .kind = .{ .reg = .rsi } },
110228 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuntihf" } } },110176 .{ .type = .usize, .kind = .{ .extern_func = "__floatuntihf" } },
110229 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },110177 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
110230 .unused,110178 .unused,
110231 .unused,110179 .unused,
...@@ -110257,7 +110205,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -110257,7 +110205,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
110257 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },110205 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
110258 .{ .type = .u64, .kind = .{ .reg = .rdi } },110206 .{ .type = .u64, .kind = .{ .reg = .rdi } },
110259 .{ .type = .u64, .kind = .{ .reg = .rsi } },110207 .{ .type = .u64, .kind = .{ .reg = .rsi } },
110260 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuntihf" } } },110208 .{ .type = .usize, .kind = .{ .extern_func = "__floatuntihf" } },
110261 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },110209 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
110262 .unused,110210 .unused,
110263 .unused,110211 .unused,
...@@ -110289,7 +110237,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -110289,7 +110237,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
110289 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },110237 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
110290 .{ .type = .u64, .kind = .{ .reg = .rdi } },110238 .{ .type = .u64, .kind = .{ .reg = .rdi } },
110291 .{ .type = .u64, .kind = .{ .reg = .rsi } },110239 .{ .type = .u64, .kind = .{ .reg = .rsi } },
110292 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuntihf" } } },110240 .{ .type = .usize, .kind = .{ .extern_func = "__floatuntihf" } },
110293 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },110241 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
110294 .unused,110242 .unused,
110295 .unused,110243 .unused,
...@@ -110322,7 +110270,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -110322,7 +110270,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
110322 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },110270 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
110323 .{ .type = .u64, .kind = .{ .reg = .rdi } },110271 .{ .type = .u64, .kind = .{ .reg = .rdi } },
110324 .{ .type = .u64, .kind = .{ .reg = .rsi } },110272 .{ .type = .u64, .kind = .{ .reg = .rsi } },
110325 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuntihf" } } },110273 .{ .type = .usize, .kind = .{ .extern_func = "__floatuntihf" } },
110326 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },110274 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
110327 .{ .type = .f32, .kind = .mem },110275 .{ .type = .f32, .kind = .mem },
110328 .unused,110276 .unused,
...@@ -110357,7 +110305,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -110357,7 +110305,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
110357 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },110305 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
110358 .{ .type = .usize, .kind = .{ .reg = .rdi } },110306 .{ .type = .usize, .kind = .{ .reg = .rdi } },
110359 .{ .type = .usize, .kind = .{ .reg = .rsi } },110307 .{ .type = .usize, .kind = .{ .reg = .rsi } },
110360 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floateihf" } } },110308 .{ .type = .usize, .kind = .{ .extern_func = "__floateihf" } },
110361 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },110309 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
110362 .unused,110310 .unused,
110363 .unused,110311 .unused,
...@@ -110391,7 +110339,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -110391,7 +110339,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
110391 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },110339 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
110392 .{ .type = .usize, .kind = .{ .reg = .rdi } },110340 .{ .type = .usize, .kind = .{ .reg = .rdi } },
110393 .{ .type = .usize, .kind = .{ .reg = .rsi } },110341 .{ .type = .usize, .kind = .{ .reg = .rsi } },
110394 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floateihf" } } },110342 .{ .type = .usize, .kind = .{ .extern_func = "__floateihf" } },
110395 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },110343 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
110396 .unused,110344 .unused,
110397 .unused,110345 .unused,
...@@ -110425,7 +110373,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -110425,7 +110373,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
110425 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },110373 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
110426 .{ .type = .usize, .kind = .{ .reg = .rdi } },110374 .{ .type = .usize, .kind = .{ .reg = .rdi } },
110427 .{ .type = .usize, .kind = .{ .reg = .rsi } },110375 .{ .type = .usize, .kind = .{ .reg = .rsi } },
110428 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floateihf" } } },110376 .{ .type = .usize, .kind = .{ .extern_func = "__floateihf" } },
110429 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },110377 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
110430 .unused,110378 .unused,
110431 .unused,110379 .unused,
...@@ -110460,7 +110408,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -110460,7 +110408,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
110460 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },110408 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
110461 .{ .type = .usize, .kind = .{ .reg = .rdi } },110409 .{ .type = .usize, .kind = .{ .reg = .rdi } },
110462 .{ .type = .usize, .kind = .{ .reg = .rsi } },110410 .{ .type = .usize, .kind = .{ .reg = .rsi } },
110463 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floateihf" } } },110411 .{ .type = .usize, .kind = .{ .extern_func = "__floateihf" } },
110464 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },110412 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
110465 .{ .type = .f32, .kind = .mem },110413 .{ .type = .f32, .kind = .mem },
110466 .unused,110414 .unused,
...@@ -110496,7 +110444,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -110496,7 +110444,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
110496 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },110444 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
110497 .{ .type = .usize, .kind = .{ .reg = .rdi } },110445 .{ .type = .usize, .kind = .{ .reg = .rdi } },
110498 .{ .type = .usize, .kind = .{ .reg = .rsi } },110446 .{ .type = .usize, .kind = .{ .reg = .rsi } },
110499 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuneihf" } } },110447 .{ .type = .usize, .kind = .{ .extern_func = "__floatuneihf" } },
110500 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },110448 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
110501 .unused,110449 .unused,
110502 .unused,110450 .unused,
...@@ -110530,7 +110478,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -110530,7 +110478,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
110530 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },110478 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
110531 .{ .type = .usize, .kind = .{ .reg = .rdi } },110479 .{ .type = .usize, .kind = .{ .reg = .rdi } },
110532 .{ .type = .usize, .kind = .{ .reg = .rsi } },110480 .{ .type = .usize, .kind = .{ .reg = .rsi } },
110533 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuneihf" } } },110481 .{ .type = .usize, .kind = .{ .extern_func = "__floatuneihf" } },
110534 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },110482 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
110535 .unused,110483 .unused,
110536 .unused,110484 .unused,
...@@ -110564,7 +110512,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -110564,7 +110512,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
110564 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },110512 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
110565 .{ .type = .usize, .kind = .{ .reg = .rdi } },110513 .{ .type = .usize, .kind = .{ .reg = .rdi } },
110566 .{ .type = .usize, .kind = .{ .reg = .rsi } },110514 .{ .type = .usize, .kind = .{ .reg = .rsi } },
110567 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuneihf" } } },110515 .{ .type = .usize, .kind = .{ .extern_func = "__floatuneihf" } },
110568 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },110516 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
110569 .unused,110517 .unused,
110570 .unused,110518 .unused,
...@@ -110599,7 +110547,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -110599,7 +110547,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
110599 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },110547 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
110600 .{ .type = .usize, .kind = .{ .reg = .rdi } },110548 .{ .type = .usize, .kind = .{ .reg = .rdi } },
110601 .{ .type = .usize, .kind = .{ .reg = .rsi } },110549 .{ .type = .usize, .kind = .{ .reg = .rsi } },
110602 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuneihf" } } },110550 .{ .type = .usize, .kind = .{ .extern_func = "__floatuneihf" } },
110603 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },110551 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
110604 .{ .type = .f32, .kind = .mem },110552 .{ .type = .f32, .kind = .mem },
110605 .unused,110553 .unused,
...@@ -111023,7 +110971,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -111023,7 +110971,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
111023 },110971 },
111024 .call_frame = .{ .alignment = .@"16" },110972 .call_frame = .{ .alignment = .@"16" },
111025 .extra_temps = .{110973 .extra_temps = .{
111026 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floattisf" } } },110974 .{ .type = .usize, .kind = .{ .extern_func = "__floattisf" } },
111027 .unused,110975 .unused,
111028 .unused,110976 .unused,
111029 .unused,110977 .unused,
...@@ -111049,7 +110997,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -111049,7 +110997,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
111049 },110997 },
111050 .call_frame = .{ .alignment = .@"16" },110998 .call_frame = .{ .alignment = .@"16" },
111051 .extra_temps = .{110999 .extra_temps = .{
111052 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuntisf" } } },111000 .{ .type = .usize, .kind = .{ .extern_func = "__floatuntisf" } },
111053 .unused,111001 .unused,
111054 .unused,111002 .unused,
111055 .unused,111003 .unused,
...@@ -111077,7 +111025,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -111077,7 +111025,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
111077 .extra_temps = .{111025 .extra_temps = .{
111078 .{ .type = .usize, .kind = .{ .reg = .rdi } },111026 .{ .type = .usize, .kind = .{ .reg = .rdi } },
111079 .{ .type = .usize, .kind = .{ .reg = .rsi } },111027 .{ .type = .usize, .kind = .{ .reg = .rsi } },
111080 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floateisf" } } },111028 .{ .type = .usize, .kind = .{ .extern_func = "__floateisf" } },
111081 .unused,111029 .unused,
111082 .unused,111030 .unused,
111083 .unused,111031 .unused,
...@@ -111105,7 +111053,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -111105,7 +111053,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
111105 .extra_temps = .{111053 .extra_temps = .{
111106 .{ .type = .usize, .kind = .{ .reg = .rdi } },111054 .{ .type = .usize, .kind = .{ .reg = .rdi } },
111107 .{ .type = .usize, .kind = .{ .reg = .rsi } },111055 .{ .type = .usize, .kind = .{ .reg = .rsi } },
111108 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuneisf" } } },111056 .{ .type = .usize, .kind = .{ .extern_func = "__floatuneisf" } },
111109 .unused,111057 .unused,
111110 .unused,111058 .unused,
111111 .unused,111059 .unused,
...@@ -111391,7 +111339,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -111391,7 +111339,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
111391 .extra_temps = .{111339 .extra_temps = .{
111392 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },111340 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
111393 .{ .type = .i32, .kind = .{ .reg = .edi } },111341 .{ .type = .i32, .kind = .{ .reg = .edi } },
111394 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsisf" } } },111342 .{ .type = .usize, .kind = .{ .extern_func = "__floatsisf" } },
111395 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },111343 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
111396 .unused,111344 .unused,
111397 .unused,111345 .unused,
...@@ -111422,7 +111370,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -111422,7 +111370,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
111422 .extra_temps = .{111370 .extra_temps = .{
111423 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },111371 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
111424 .{ .type = .i32, .kind = .{ .reg = .edi } },111372 .{ .type = .i32, .kind = .{ .reg = .edi } },
111425 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsisf" } } },111373 .{ .type = .usize, .kind = .{ .extern_func = "__floatsisf" } },
111426 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },111374 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
111427 .unused,111375 .unused,
111428 .unused,111376 .unused,
...@@ -111453,7 +111401,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -111453,7 +111401,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
111453 .extra_temps = .{111401 .extra_temps = .{
111454 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },111402 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
111455 .{ .type = .i32, .kind = .{ .reg = .edi } },111403 .{ .type = .i32, .kind = .{ .reg = .edi } },
111456 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsisf" } } },111404 .{ .type = .usize, .kind = .{ .extern_func = "__floatsisf" } },
111457 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },111405 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
111458 .unused,111406 .unused,
111459 .unused,111407 .unused,
...@@ -111484,7 +111432,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -111484,7 +111432,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
111484 .extra_temps = .{111432 .extra_temps = .{
111485 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },111433 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
111486 .{ .type = .i32, .kind = .{ .reg = .edi } },111434 .{ .type = .i32, .kind = .{ .reg = .edi } },
111487 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsisf" } } },111435 .{ .type = .usize, .kind = .{ .extern_func = "__floatsisf" } },
111488 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },111436 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
111489 .unused,111437 .unused,
111490 .unused,111438 .unused,
...@@ -111515,7 +111463,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -111515,7 +111463,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
111515 .extra_temps = .{111463 .extra_temps = .{
111516 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },111464 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
111517 .{ .type = .u32, .kind = .{ .reg = .edi } },111465 .{ .type = .u32, .kind = .{ .reg = .edi } },
111518 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsisf" } } },111466 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsisf" } },
111519 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },111467 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
111520 .unused,111468 .unused,
111521 .unused,111469 .unused,
...@@ -111546,7 +111494,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -111546,7 +111494,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
111546 .extra_temps = .{111494 .extra_temps = .{
111547 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },111495 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
111548 .{ .type = .u32, .kind = .{ .reg = .edi } },111496 .{ .type = .u32, .kind = .{ .reg = .edi } },
111549 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsisf" } } },111497 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsisf" } },
111550 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },111498 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
111551 .unused,111499 .unused,
111552 .unused,111500 .unused,
...@@ -111577,7 +111525,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -111577,7 +111525,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
111577 .extra_temps = .{111525 .extra_temps = .{
111578 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },111526 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
111579 .{ .type = .u32, .kind = .{ .reg = .edi } },111527 .{ .type = .u32, .kind = .{ .reg = .edi } },
111580 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsisf" } } },111528 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsisf" } },
111581 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },111529 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
111582 .unused,111530 .unused,
111583 .unused,111531 .unused,
...@@ -111608,7 +111556,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -111608,7 +111556,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
111608 .extra_temps = .{111556 .extra_temps = .{
111609 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },111557 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
111610 .{ .type = .u32, .kind = .{ .reg = .edi } },111558 .{ .type = .u32, .kind = .{ .reg = .edi } },
111611 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsisf" } } },111559 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsisf" } },
111612 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },111560 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
111613 .unused,111561 .unused,
111614 .unused,111562 .unused,
...@@ -111897,7 +111845,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -111897,7 +111845,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
111897 .extra_temps = .{111845 .extra_temps = .{
111898 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },111846 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
111899 .{ .type = .i32, .kind = .{ .reg = .edi } },111847 .{ .type = .i32, .kind = .{ .reg = .edi } },
111900 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsisf" } } },111848 .{ .type = .usize, .kind = .{ .extern_func = "__floatsisf" } },
111901 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },111849 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
111902 .unused,111850 .unused,
111903 .unused,111851 .unused,
...@@ -111928,7 +111876,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -111928,7 +111876,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
111928 .extra_temps = .{111876 .extra_temps = .{
111929 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },111877 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
111930 .{ .type = .i32, .kind = .{ .reg = .edi } },111878 .{ .type = .i32, .kind = .{ .reg = .edi } },
111931 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsisf" } } },111879 .{ .type = .usize, .kind = .{ .extern_func = "__floatsisf" } },
111932 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },111880 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
111933 .unused,111881 .unused,
111934 .unused,111882 .unused,
...@@ -111959,7 +111907,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -111959,7 +111907,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
111959 .extra_temps = .{111907 .extra_temps = .{
111960 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },111908 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
111961 .{ .type = .u32, .kind = .{ .reg = .edi } },111909 .{ .type = .u32, .kind = .{ .reg = .edi } },
111962 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsisf" } } },111910 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsisf" } },
111963 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },111911 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
111964 .unused,111912 .unused,
111965 .unused,111913 .unused,
...@@ -111990,7 +111938,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -111990,7 +111938,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
111990 .extra_temps = .{111938 .extra_temps = .{
111991 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },111939 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
111992 .{ .type = .u32, .kind = .{ .reg = .edi } },111940 .{ .type = .u32, .kind = .{ .reg = .edi } },
111993 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsisf" } } },111941 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsisf" } },
111994 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },111942 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
111995 .unused,111943 .unused,
111996 .unused,111944 .unused,
...@@ -112173,7 +112121,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -112173,7 +112121,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
112173 .extra_temps = .{112121 .extra_temps = .{
112174 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },112122 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
112175 .{ .type = .i32, .kind = .{ .reg = .edi } },112123 .{ .type = .i32, .kind = .{ .reg = .edi } },
112176 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsisf" } } },112124 .{ .type = .usize, .kind = .{ .extern_func = "__floatsisf" } },
112177 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },112125 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
112178 .unused,112126 .unused,
112179 .unused,112127 .unused,
...@@ -112204,7 +112152,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -112204,7 +112152,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
112204 .extra_temps = .{112152 .extra_temps = .{
112205 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },112153 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
112206 .{ .type = .i32, .kind = .{ .reg = .edi } },112154 .{ .type = .i32, .kind = .{ .reg = .edi } },
112207 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsisf" } } },112155 .{ .type = .usize, .kind = .{ .extern_func = "__floatsisf" } },
112208 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },112156 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
112209 .unused,112157 .unused,
112210 .unused,112158 .unused,
...@@ -112235,7 +112183,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -112235,7 +112183,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
112235 .extra_temps = .{112183 .extra_temps = .{
112236 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },112184 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
112237 .{ .type = .u32, .kind = .{ .reg = .edi } },112185 .{ .type = .u32, .kind = .{ .reg = .edi } },
112238 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsisf" } } },112186 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsisf" } },
112239 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },112187 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
112240 .unused,112188 .unused,
112241 .unused,112189 .unused,
...@@ -112266,7 +112214,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -112266,7 +112214,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
112266 .extra_temps = .{112214 .extra_temps = .{
112267 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },112215 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
112268 .{ .type = .u32, .kind = .{ .reg = .edi } },112216 .{ .type = .u32, .kind = .{ .reg = .edi } },
112269 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsisf" } } },112217 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsisf" } },
112270 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },112218 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
112271 .unused,112219 .unused,
112272 .unused,112220 .unused,
...@@ -112357,7 +112305,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -112357,7 +112305,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
112357 .extra_temps = .{112305 .extra_temps = .{
112358 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },112306 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
112359 .{ .type = .i64, .kind = .{ .reg = .rdi } },112307 .{ .type = .i64, .kind = .{ .reg = .rdi } },
112360 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatdisf" } } },112308 .{ .type = .usize, .kind = .{ .extern_func = "__floatdisf" } },
112361 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },112309 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
112362 .unused,112310 .unused,
112363 .unused,112311 .unused,
...@@ -112388,7 +112336,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -112388,7 +112336,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
112388 .extra_temps = .{112336 .extra_temps = .{
112389 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },112337 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
112390 .{ .type = .i64, .kind = .{ .reg = .rdi } },112338 .{ .type = .i64, .kind = .{ .reg = .rdi } },
112391 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatdisf" } } },112339 .{ .type = .usize, .kind = .{ .extern_func = "__floatdisf" } },
112392 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },112340 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
112393 .unused,112341 .unused,
112394 .unused,112342 .unused,
...@@ -112419,7 +112367,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -112419,7 +112367,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
112419 .extra_temps = .{112367 .extra_temps = .{
112420 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },112368 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
112421 .{ .type = .u64, .kind = .{ .reg = .rdi } },112369 .{ .type = .u64, .kind = .{ .reg = .rdi } },
112422 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatundisf" } } },112370 .{ .type = .usize, .kind = .{ .extern_func = "__floatundisf" } },
112423 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },112371 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
112424 .unused,112372 .unused,
112425 .unused,112373 .unused,
...@@ -112450,7 +112398,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -112450,7 +112398,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
112450 .extra_temps = .{112398 .extra_temps = .{
112451 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },112399 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
112452 .{ .type = .u64, .kind = .{ .reg = .rdi } },112400 .{ .type = .u64, .kind = .{ .reg = .rdi } },
112453 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatundisf" } } },112401 .{ .type = .usize, .kind = .{ .extern_func = "__floatundisf" } },
112454 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },112402 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
112455 .unused,112403 .unused,
112456 .unused,112404 .unused,
...@@ -112482,7 +112430,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -112482,7 +112430,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
112482 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },112430 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
112483 .{ .type = .u64, .kind = .{ .reg = .rdi } },112431 .{ .type = .u64, .kind = .{ .reg = .rdi } },
112484 .{ .type = .i64, .kind = .{ .reg = .rsi } },112432 .{ .type = .i64, .kind = .{ .reg = .rsi } },
112485 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floattisf" } } },112433 .{ .type = .usize, .kind = .{ .extern_func = "__floattisf" } },
112486 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },112434 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
112487 .unused,112435 .unused,
112488 .unused,112436 .unused,
...@@ -112514,7 +112462,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -112514,7 +112462,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
112514 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },112462 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
112515 .{ .type = .u64, .kind = .{ .reg = .rdi } },112463 .{ .type = .u64, .kind = .{ .reg = .rdi } },
112516 .{ .type = .i64, .kind = .{ .reg = .rsi } },112464 .{ .type = .i64, .kind = .{ .reg = .rsi } },
112517 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floattisf" } } },112465 .{ .type = .usize, .kind = .{ .extern_func = "__floattisf" } },
112518 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },112466 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
112519 .unused,112467 .unused,
112520 .unused,112468 .unused,
...@@ -112546,7 +112494,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -112546,7 +112494,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
112546 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },112494 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
112547 .{ .type = .u64, .kind = .{ .reg = .rdi } },112495 .{ .type = .u64, .kind = .{ .reg = .rdi } },
112548 .{ .type = .u64, .kind = .{ .reg = .rsi } },112496 .{ .type = .u64, .kind = .{ .reg = .rsi } },
112549 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuntisf" } } },112497 .{ .type = .usize, .kind = .{ .extern_func = "__floatuntisf" } },
112550 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },112498 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
112551 .unused,112499 .unused,
112552 .unused,112500 .unused,
...@@ -112578,7 +112526,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -112578,7 +112526,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
112578 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },112526 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
112579 .{ .type = .u64, .kind = .{ .reg = .rdi } },112527 .{ .type = .u64, .kind = .{ .reg = .rdi } },
112580 .{ .type = .u64, .kind = .{ .reg = .rsi } },112528 .{ .type = .u64, .kind = .{ .reg = .rsi } },
112581 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuntisf" } } },112529 .{ .type = .usize, .kind = .{ .extern_func = "__floatuntisf" } },
112582 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },112530 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
112583 .unused,112531 .unused,
112584 .unused,112532 .unused,
...@@ -112611,7 +112559,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -112611,7 +112559,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
112611 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },112559 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
112612 .{ .type = .usize, .kind = .{ .reg = .rdi } },112560 .{ .type = .usize, .kind = .{ .reg = .rdi } },
112613 .{ .type = .usize, .kind = .{ .reg = .rsi } },112561 .{ .type = .usize, .kind = .{ .reg = .rsi } },
112614 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floateisf" } } },112562 .{ .type = .usize, .kind = .{ .extern_func = "__floateisf" } },
112615 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },112563 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
112616 .unused,112564 .unused,
112617 .unused,112565 .unused,
...@@ -112645,7 +112593,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -112645,7 +112593,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
112645 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },112593 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
112646 .{ .type = .usize, .kind = .{ .reg = .rdi } },112594 .{ .type = .usize, .kind = .{ .reg = .rdi } },
112647 .{ .type = .usize, .kind = .{ .reg = .rsi } },112595 .{ .type = .usize, .kind = .{ .reg = .rsi } },
112648 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floateisf" } } },112596 .{ .type = .usize, .kind = .{ .extern_func = "__floateisf" } },
112649 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },112597 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
112650 .unused,112598 .unused,
112651 .unused,112599 .unused,
...@@ -112679,7 +112627,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -112679,7 +112627,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
112679 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },112627 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
112680 .{ .type = .usize, .kind = .{ .reg = .rdi } },112628 .{ .type = .usize, .kind = .{ .reg = .rdi } },
112681 .{ .type = .usize, .kind = .{ .reg = .rsi } },112629 .{ .type = .usize, .kind = .{ .reg = .rsi } },
112682 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuneisf" } } },112630 .{ .type = .usize, .kind = .{ .extern_func = "__floatuneisf" } },
112683 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },112631 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
112684 .unused,112632 .unused,
112685 .unused,112633 .unused,
...@@ -112713,7 +112661,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -112713,7 +112661,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
112713 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },112661 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
112714 .{ .type = .usize, .kind = .{ .reg = .rdi } },112662 .{ .type = .usize, .kind = .{ .reg = .rdi } },
112715 .{ .type = .usize, .kind = .{ .reg = .rsi } },112663 .{ .type = .usize, .kind = .{ .reg = .rsi } },
112716 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuneisf" } } },112664 .{ .type = .usize, .kind = .{ .extern_func = "__floatuneisf" } },
112717 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },112665 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
112718 .unused,112666 .unused,
112719 .unused,112667 .unused,
...@@ -113353,7 +113301,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -113353,7 +113301,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
113353 },113301 },
113354 .call_frame = .{ .alignment = .@"16" },113302 .call_frame = .{ .alignment = .@"16" },
113355 .extra_temps = .{113303 .extra_temps = .{
113356 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floattidf" } } },113304 .{ .type = .usize, .kind = .{ .extern_func = "__floattidf" } },
113357 .unused,113305 .unused,
113358 .unused,113306 .unused,
113359 .unused,113307 .unused,
...@@ -113379,7 +113327,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -113379,7 +113327,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
113379 },113327 },
113380 .call_frame = .{ .alignment = .@"16" },113328 .call_frame = .{ .alignment = .@"16" },
113381 .extra_temps = .{113329 .extra_temps = .{
113382 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuntidf" } } },113330 .{ .type = .usize, .kind = .{ .extern_func = "__floatuntidf" } },
113383 .unused,113331 .unused,
113384 .unused,113332 .unused,
113385 .unused,113333 .unused,
...@@ -113407,7 +113355,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -113407,7 +113355,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
113407 .extra_temps = .{113355 .extra_temps = .{
113408 .{ .type = .usize, .kind = .{ .reg = .rdi } },113356 .{ .type = .usize, .kind = .{ .reg = .rdi } },
113409 .{ .type = .usize, .kind = .{ .reg = .rsi } },113357 .{ .type = .usize, .kind = .{ .reg = .rsi } },
113410 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floateidf" } } },113358 .{ .type = .usize, .kind = .{ .extern_func = "__floateidf" } },
113411 .unused,113359 .unused,
113412 .unused,113360 .unused,
113413 .unused,113361 .unused,
...@@ -113435,7 +113383,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -113435,7 +113383,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
113435 .extra_temps = .{113383 .extra_temps = .{
113436 .{ .type = .usize, .kind = .{ .reg = .rdi } },113384 .{ .type = .usize, .kind = .{ .reg = .rdi } },
113437 .{ .type = .usize, .kind = .{ .reg = .rsi } },113385 .{ .type = .usize, .kind = .{ .reg = .rsi } },
113438 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuneidf" } } },113386 .{ .type = .usize, .kind = .{ .extern_func = "__floatuneidf" } },
113439 .unused,113387 .unused,
113440 .unused,113388 .unused,
113441 .unused,113389 .unused,
...@@ -113729,7 +113677,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -113729,7 +113677,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
113729 .extra_temps = .{113677 .extra_temps = .{
113730 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },113678 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
113731 .{ .type = .i32, .kind = .{ .reg = .edi } },113679 .{ .type = .i32, .kind = .{ .reg = .edi } },
113732 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsidf" } } },113680 .{ .type = .usize, .kind = .{ .extern_func = "__floatsidf" } },
113733 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },113681 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
113734 .unused,113682 .unused,
113735 .unused,113683 .unused,
...@@ -113760,7 +113708,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -113760,7 +113708,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
113760 .extra_temps = .{113708 .extra_temps = .{
113761 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },113709 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
113762 .{ .type = .i32, .kind = .{ .reg = .edi } },113710 .{ .type = .i32, .kind = .{ .reg = .edi } },
113763 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsidf" } } },113711 .{ .type = .usize, .kind = .{ .extern_func = "__floatsidf" } },
113764 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },113712 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
113765 .unused,113713 .unused,
113766 .unused,113714 .unused,
...@@ -113791,7 +113739,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -113791,7 +113739,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
113791 .extra_temps = .{113739 .extra_temps = .{
113792 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },113740 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
113793 .{ .type = .i32, .kind = .{ .reg = .edi } },113741 .{ .type = .i32, .kind = .{ .reg = .edi } },
113794 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsidf" } } },113742 .{ .type = .usize, .kind = .{ .extern_func = "__floatsidf" } },
113795 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },113743 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
113796 .unused,113744 .unused,
113797 .unused,113745 .unused,
...@@ -113822,7 +113770,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -113822,7 +113770,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
113822 .extra_temps = .{113770 .extra_temps = .{
113823 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },113771 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
113824 .{ .type = .i32, .kind = .{ .reg = .edi } },113772 .{ .type = .i32, .kind = .{ .reg = .edi } },
113825 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsidf" } } },113773 .{ .type = .usize, .kind = .{ .extern_func = "__floatsidf" } },
113826 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },113774 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
113827 .unused,113775 .unused,
113828 .unused,113776 .unused,
...@@ -113853,7 +113801,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -113853,7 +113801,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
113853 .extra_temps = .{113801 .extra_temps = .{
113854 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },113802 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
113855 .{ .type = .i32, .kind = .{ .reg = .edi } },113803 .{ .type = .i32, .kind = .{ .reg = .edi } },
113856 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsidf" } } },113804 .{ .type = .usize, .kind = .{ .extern_func = "__floatsidf" } },
113857 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },113805 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
113858 .unused,113806 .unused,
113859 .unused,113807 .unused,
...@@ -113884,7 +113832,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -113884,7 +113832,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
113884 .extra_temps = .{113832 .extra_temps = .{
113885 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },113833 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
113886 .{ .type = .i32, .kind = .{ .reg = .edi } },113834 .{ .type = .i32, .kind = .{ .reg = .edi } },
113887 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsidf" } } },113835 .{ .type = .usize, .kind = .{ .extern_func = "__floatsidf" } },
113888 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },113836 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
113889 .unused,113837 .unused,
113890 .unused,113838 .unused,
...@@ -113915,7 +113863,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -113915,7 +113863,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
113915 .extra_temps = .{113863 .extra_temps = .{
113916 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },113864 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
113917 .{ .type = .u32, .kind = .{ .reg = .edi } },113865 .{ .type = .u32, .kind = .{ .reg = .edi } },
113918 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsidf" } } },113866 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsidf" } },
113919 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },113867 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
113920 .unused,113868 .unused,
113921 .unused,113869 .unused,
...@@ -113946,7 +113894,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -113946,7 +113894,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
113946 .extra_temps = .{113894 .extra_temps = .{
113947 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },113895 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
113948 .{ .type = .u32, .kind = .{ .reg = .edi } },113896 .{ .type = .u32, .kind = .{ .reg = .edi } },
113949 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsidf" } } },113897 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsidf" } },
113950 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },113898 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
113951 .unused,113899 .unused,
113952 .unused,113900 .unused,
...@@ -113977,7 +113925,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -113977,7 +113925,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
113977 .extra_temps = .{113925 .extra_temps = .{
113978 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },113926 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
113979 .{ .type = .u32, .kind = .{ .reg = .edi } },113927 .{ .type = .u32, .kind = .{ .reg = .edi } },
113980 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsidf" } } },113928 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsidf" } },
113981 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },113929 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
113982 .unused,113930 .unused,
113983 .unused,113931 .unused,
...@@ -114008,7 +113956,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -114008,7 +113956,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
114008 .extra_temps = .{113956 .extra_temps = .{
114009 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },113957 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
114010 .{ .type = .u32, .kind = .{ .reg = .edi } },113958 .{ .type = .u32, .kind = .{ .reg = .edi } },
114011 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsidf" } } },113959 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsidf" } },
114012 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },113960 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
114013 .unused,113961 .unused,
114014 .unused,113962 .unused,
...@@ -114039,7 +113987,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -114039,7 +113987,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
114039 .extra_temps = .{113987 .extra_temps = .{
114040 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },113988 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
114041 .{ .type = .u32, .kind = .{ .reg = .edi } },113989 .{ .type = .u32, .kind = .{ .reg = .edi } },
114042 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsidf" } } },113990 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsidf" } },
114043 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },113991 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
114044 .unused,113992 .unused,
114045 .unused,113993 .unused,
...@@ -114070,7 +114018,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -114070,7 +114018,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
114070 .extra_temps = .{114018 .extra_temps = .{
114071 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },114019 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
114072 .{ .type = .u32, .kind = .{ .reg = .edi } },114020 .{ .type = .u32, .kind = .{ .reg = .edi } },
114073 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsidf" } } },114021 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsidf" } },
114074 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },114022 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
114075 .unused,114023 .unused,
114076 .unused,114024 .unused,
...@@ -114363,7 +114311,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -114363,7 +114311,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
114363 .extra_temps = .{114311 .extra_temps = .{
114364 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },114312 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
114365 .{ .type = .i32, .kind = .{ .reg = .edi } },114313 .{ .type = .i32, .kind = .{ .reg = .edi } },
114366 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsidf" } } },114314 .{ .type = .usize, .kind = .{ .extern_func = "__floatsidf" } },
114367 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },114315 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
114368 .unused,114316 .unused,
114369 .unused,114317 .unused,
...@@ -114394,7 +114342,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -114394,7 +114342,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
114394 .extra_temps = .{114342 .extra_temps = .{
114395 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },114343 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
114396 .{ .type = .i32, .kind = .{ .reg = .edi } },114344 .{ .type = .i32, .kind = .{ .reg = .edi } },
114397 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsidf" } } },114345 .{ .type = .usize, .kind = .{ .extern_func = "__floatsidf" } },
114398 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },114346 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
114399 .unused,114347 .unused,
114400 .unused,114348 .unused,
...@@ -114425,7 +114373,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -114425,7 +114373,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
114425 .extra_temps = .{114373 .extra_temps = .{
114426 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },114374 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
114427 .{ .type = .i32, .kind = .{ .reg = .edi } },114375 .{ .type = .i32, .kind = .{ .reg = .edi } },
114428 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsidf" } } },114376 .{ .type = .usize, .kind = .{ .extern_func = "__floatsidf" } },
114429 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },114377 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
114430 .unused,114378 .unused,
114431 .unused,114379 .unused,
...@@ -114456,7 +114404,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -114456,7 +114404,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
114456 .extra_temps = .{114404 .extra_temps = .{
114457 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },114405 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
114458 .{ .type = .u32, .kind = .{ .reg = .edi } },114406 .{ .type = .u32, .kind = .{ .reg = .edi } },
114459 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsidf" } } },114407 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsidf" } },
114460 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },114408 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
114461 .unused,114409 .unused,
114462 .unused,114410 .unused,
...@@ -114487,7 +114435,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -114487,7 +114435,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
114487 .extra_temps = .{114435 .extra_temps = .{
114488 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },114436 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
114489 .{ .type = .u32, .kind = .{ .reg = .edi } },114437 .{ .type = .u32, .kind = .{ .reg = .edi } },
114490 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsidf" } } },114438 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsidf" } },
114491 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },114439 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
114492 .unused,114440 .unused,
114493 .unused,114441 .unused,
...@@ -114518,7 +114466,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -114518,7 +114466,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
114518 .extra_temps = .{114466 .extra_temps = .{
114519 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },114467 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
114520 .{ .type = .u32, .kind = .{ .reg = .edi } },114468 .{ .type = .u32, .kind = .{ .reg = .edi } },
114521 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsidf" } } },114469 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsidf" } },
114522 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },114470 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
114523 .unused,114471 .unused,
114524 .unused,114472 .unused,
...@@ -114672,7 +114620,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -114672,7 +114620,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
114672 .extra_temps = .{114620 .extra_temps = .{
114673 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },114621 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
114674 .{ .type = .i32, .kind = .{ .reg = .edi } },114622 .{ .type = .i32, .kind = .{ .reg = .edi } },
114675 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsidf" } } },114623 .{ .type = .usize, .kind = .{ .extern_func = "__floatsidf" } },
114676 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },114624 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
114677 .unused,114625 .unused,
114678 .unused,114626 .unused,
...@@ -114703,7 +114651,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -114703,7 +114651,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
114703 .extra_temps = .{114651 .extra_temps = .{
114704 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },114652 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
114705 .{ .type = .i32, .kind = .{ .reg = .edi } },114653 .{ .type = .i32, .kind = .{ .reg = .edi } },
114706 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsidf" } } },114654 .{ .type = .usize, .kind = .{ .extern_func = "__floatsidf" } },
114707 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },114655 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
114708 .unused,114656 .unused,
114709 .unused,114657 .unused,
...@@ -114734,7 +114682,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -114734,7 +114682,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
114734 .extra_temps = .{114682 .extra_temps = .{
114735 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },114683 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
114736 .{ .type = .i32, .kind = .{ .reg = .edi } },114684 .{ .type = .i32, .kind = .{ .reg = .edi } },
114737 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsidf" } } },114685 .{ .type = .usize, .kind = .{ .extern_func = "__floatsidf" } },
114738 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },114686 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
114739 .unused,114687 .unused,
114740 .unused,114688 .unused,
...@@ -114765,7 +114713,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -114765,7 +114713,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
114765 .extra_temps = .{114713 .extra_temps = .{
114766 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },114714 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
114767 .{ .type = .u32, .kind = .{ .reg = .edi } },114715 .{ .type = .u32, .kind = .{ .reg = .edi } },
114768 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsidf" } } },114716 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsidf" } },
114769 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },114717 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
114770 .unused,114718 .unused,
114771 .unused,114719 .unused,
...@@ -114796,7 +114744,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -114796,7 +114744,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
114796 .extra_temps = .{114744 .extra_temps = .{
114797 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },114745 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
114798 .{ .type = .u32, .kind = .{ .reg = .edi } },114746 .{ .type = .u32, .kind = .{ .reg = .edi } },
114799 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsidf" } } },114747 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsidf" } },
114800 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },114748 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
114801 .unused,114749 .unused,
114802 .unused,114750 .unused,
...@@ -114827,7 +114775,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -114827,7 +114775,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
114827 .extra_temps = .{114775 .extra_temps = .{
114828 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },114776 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
114829 .{ .type = .u32, .kind = .{ .reg = .edi } },114777 .{ .type = .u32, .kind = .{ .reg = .edi } },
114830 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsidf" } } },114778 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsidf" } },
114831 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },114779 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
114832 .unused,114780 .unused,
114833 .unused,114781 .unused,
...@@ -114918,7 +114866,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -114918,7 +114866,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
114918 .extra_temps = .{114866 .extra_temps = .{
114919 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },114867 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
114920 .{ .type = .i64, .kind = .{ .reg = .rdi } },114868 .{ .type = .i64, .kind = .{ .reg = .rdi } },
114921 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatdidf" } } },114869 .{ .type = .usize, .kind = .{ .extern_func = "__floatdidf" } },
114922 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },114870 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
114923 .unused,114871 .unused,
114924 .unused,114872 .unused,
...@@ -114949,7 +114897,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -114949,7 +114897,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
114949 .extra_temps = .{114897 .extra_temps = .{
114950 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },114898 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
114951 .{ .type = .i64, .kind = .{ .reg = .rdi } },114899 .{ .type = .i64, .kind = .{ .reg = .rdi } },
114952 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatdidf" } } },114900 .{ .type = .usize, .kind = .{ .extern_func = "__floatdidf" } },
114953 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },114901 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
114954 .unused,114902 .unused,
114955 .unused,114903 .unused,
...@@ -114980,7 +114928,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -114980,7 +114928,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
114980 .extra_temps = .{114928 .extra_temps = .{
114981 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },114929 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
114982 .{ .type = .i64, .kind = .{ .reg = .rdi } },114930 .{ .type = .i64, .kind = .{ .reg = .rdi } },
114983 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatdidf" } } },114931 .{ .type = .usize, .kind = .{ .extern_func = "__floatdidf" } },
114984 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },114932 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
114985 .unused,114933 .unused,
114986 .unused,114934 .unused,
...@@ -115011,7 +114959,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -115011,7 +114959,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
115011 .extra_temps = .{114959 .extra_temps = .{
115012 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },114960 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
115013 .{ .type = .u64, .kind = .{ .reg = .rdi } },114961 .{ .type = .u64, .kind = .{ .reg = .rdi } },
115014 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatundidf" } } },114962 .{ .type = .usize, .kind = .{ .extern_func = "__floatundidf" } },
115015 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },114963 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
115016 .unused,114964 .unused,
115017 .unused,114965 .unused,
...@@ -115042,7 +114990,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -115042,7 +114990,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
115042 .extra_temps = .{114990 .extra_temps = .{
115043 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },114991 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
115044 .{ .type = .u64, .kind = .{ .reg = .rdi } },114992 .{ .type = .u64, .kind = .{ .reg = .rdi } },
115045 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatundidf" } } },114993 .{ .type = .usize, .kind = .{ .extern_func = "__floatundidf" } },
115046 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },114994 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
115047 .unused,114995 .unused,
115048 .unused,114996 .unused,
...@@ -115073,7 +115021,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -115073,7 +115021,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
115073 .extra_temps = .{115021 .extra_temps = .{
115074 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },115022 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
115075 .{ .type = .u64, .kind = .{ .reg = .rdi } },115023 .{ .type = .u64, .kind = .{ .reg = .rdi } },
115076 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatundidf" } } },115024 .{ .type = .usize, .kind = .{ .extern_func = "__floatundidf" } },
115077 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },115025 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
115078 .unused,115026 .unused,
115079 .unused,115027 .unused,
...@@ -115105,7 +115053,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -115105,7 +115053,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
115105 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },115053 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
115106 .{ .type = .u64, .kind = .{ .reg = .rdi } },115054 .{ .type = .u64, .kind = .{ .reg = .rdi } },
115107 .{ .type = .i64, .kind = .{ .reg = .rsi } },115055 .{ .type = .i64, .kind = .{ .reg = .rsi } },
115108 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floattidf" } } },115056 .{ .type = .usize, .kind = .{ .extern_func = "__floattidf" } },
115109 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },115057 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
115110 .unused,115058 .unused,
115111 .unused,115059 .unused,
...@@ -115137,7 +115085,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -115137,7 +115085,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
115137 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },115085 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
115138 .{ .type = .u64, .kind = .{ .reg = .rdi } },115086 .{ .type = .u64, .kind = .{ .reg = .rdi } },
115139 .{ .type = .i64, .kind = .{ .reg = .rsi } },115087 .{ .type = .i64, .kind = .{ .reg = .rsi } },
115140 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floattidf" } } },115088 .{ .type = .usize, .kind = .{ .extern_func = "__floattidf" } },
115141 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },115089 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
115142 .unused,115090 .unused,
115143 .unused,115091 .unused,
...@@ -115169,7 +115117,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -115169,7 +115117,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
115169 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },115117 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
115170 .{ .type = .u64, .kind = .{ .reg = .rdi } },115118 .{ .type = .u64, .kind = .{ .reg = .rdi } },
115171 .{ .type = .i64, .kind = .{ .reg = .rsi } },115119 .{ .type = .i64, .kind = .{ .reg = .rsi } },
115172 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floattidf" } } },115120 .{ .type = .usize, .kind = .{ .extern_func = "__floattidf" } },
115173 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },115121 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
115174 .unused,115122 .unused,
115175 .unused,115123 .unused,
...@@ -115201,7 +115149,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -115201,7 +115149,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
115201 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },115149 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
115202 .{ .type = .u64, .kind = .{ .reg = .rdi } },115150 .{ .type = .u64, .kind = .{ .reg = .rdi } },
115203 .{ .type = .u64, .kind = .{ .reg = .rsi } },115151 .{ .type = .u64, .kind = .{ .reg = .rsi } },
115204 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuntidf" } } },115152 .{ .type = .usize, .kind = .{ .extern_func = "__floatuntidf" } },
115205 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },115153 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
115206 .unused,115154 .unused,
115207 .unused,115155 .unused,
...@@ -115233,7 +115181,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -115233,7 +115181,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
115233 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },115181 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
115234 .{ .type = .u64, .kind = .{ .reg = .rdi } },115182 .{ .type = .u64, .kind = .{ .reg = .rdi } },
115235 .{ .type = .u64, .kind = .{ .reg = .rsi } },115183 .{ .type = .u64, .kind = .{ .reg = .rsi } },
115236 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuntidf" } } },115184 .{ .type = .usize, .kind = .{ .extern_func = "__floatuntidf" } },
115237 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },115185 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
115238 .unused,115186 .unused,
115239 .unused,115187 .unused,
...@@ -115265,7 +115213,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -115265,7 +115213,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
115265 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },115213 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
115266 .{ .type = .u64, .kind = .{ .reg = .rdi } },115214 .{ .type = .u64, .kind = .{ .reg = .rdi } },
115267 .{ .type = .u64, .kind = .{ .reg = .rsi } },115215 .{ .type = .u64, .kind = .{ .reg = .rsi } },
115268 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuntidf" } } },115216 .{ .type = .usize, .kind = .{ .extern_func = "__floatuntidf" } },
115269 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },115217 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
115270 .unused,115218 .unused,
115271 .unused,115219 .unused,
...@@ -115298,7 +115246,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -115298,7 +115246,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
115298 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },115246 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
115299 .{ .type = .usize, .kind = .{ .reg = .rdi } },115247 .{ .type = .usize, .kind = .{ .reg = .rdi } },
115300 .{ .type = .usize, .kind = .{ .reg = .rsi } },115248 .{ .type = .usize, .kind = .{ .reg = .rsi } },
115301 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floateidf" } } },115249 .{ .type = .usize, .kind = .{ .extern_func = "__floateidf" } },
115302 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },115250 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
115303 .unused,115251 .unused,
115304 .unused,115252 .unused,
...@@ -115332,7 +115280,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -115332,7 +115280,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
115332 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },115280 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
115333 .{ .type = .usize, .kind = .{ .reg = .rdi } },115281 .{ .type = .usize, .kind = .{ .reg = .rdi } },
115334 .{ .type = .usize, .kind = .{ .reg = .rsi } },115282 .{ .type = .usize, .kind = .{ .reg = .rsi } },
115335 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floateidf" } } },115283 .{ .type = .usize, .kind = .{ .extern_func = "__floateidf" } },
115336 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },115284 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
115337 .unused,115285 .unused,
115338 .unused,115286 .unused,
...@@ -115366,7 +115314,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -115366,7 +115314,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
115366 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },115314 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
115367 .{ .type = .usize, .kind = .{ .reg = .rdi } },115315 .{ .type = .usize, .kind = .{ .reg = .rdi } },
115368 .{ .type = .usize, .kind = .{ .reg = .rsi } },115316 .{ .type = .usize, .kind = .{ .reg = .rsi } },
115369 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floateidf" } } },115317 .{ .type = .usize, .kind = .{ .extern_func = "__floateidf" } },
115370 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },115318 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
115371 .unused,115319 .unused,
115372 .unused,115320 .unused,
...@@ -115400,7 +115348,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -115400,7 +115348,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
115400 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },115348 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
115401 .{ .type = .usize, .kind = .{ .reg = .rdi } },115349 .{ .type = .usize, .kind = .{ .reg = .rdi } },
115402 .{ .type = .usize, .kind = .{ .reg = .rsi } },115350 .{ .type = .usize, .kind = .{ .reg = .rsi } },
115403 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuneidf" } } },115351 .{ .type = .usize, .kind = .{ .extern_func = "__floatuneidf" } },
115404 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },115352 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
115405 .unused,115353 .unused,
115406 .unused,115354 .unused,
...@@ -115434,7 +115382,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -115434,7 +115382,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
115434 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },115382 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
115435 .{ .type = .usize, .kind = .{ .reg = .rdi } },115383 .{ .type = .usize, .kind = .{ .reg = .rdi } },
115436 .{ .type = .usize, .kind = .{ .reg = .rsi } },115384 .{ .type = .usize, .kind = .{ .reg = .rsi } },
115437 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuneidf" } } },115385 .{ .type = .usize, .kind = .{ .extern_func = "__floatuneidf" } },
115438 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },115386 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
115439 .unused,115387 .unused,
115440 .unused,115388 .unused,
...@@ -115468,7 +115416,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -115468,7 +115416,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
115468 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },115416 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
115469 .{ .type = .usize, .kind = .{ .reg = .rdi } },115417 .{ .type = .usize, .kind = .{ .reg = .rdi } },
115470 .{ .type = .usize, .kind = .{ .reg = .rsi } },115418 .{ .type = .usize, .kind = .{ .reg = .rsi } },
115471 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuneidf" } } },115419 .{ .type = .usize, .kind = .{ .extern_func = "__floatuneidf" } },
115472 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },115420 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
115473 .unused,115421 .unused,
115474 .unused,115422 .unused,
...@@ -115715,7 +115663,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -115715,7 +115663,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
115715 },115663 },
115716 .call_frame = .{ .alignment = .@"16" },115664 .call_frame = .{ .alignment = .@"16" },
115717 .extra_temps = .{115665 .extra_temps = .{
115718 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floattixf" } } },115666 .{ .type = .usize, .kind = .{ .extern_func = "__floattixf" } },
115719 .unused,115667 .unused,
115720 .unused,115668 .unused,
115721 .unused,115669 .unused,
...@@ -115741,7 +115689,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -115741,7 +115689,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
115741 },115689 },
115742 .call_frame = .{ .alignment = .@"16" },115690 .call_frame = .{ .alignment = .@"16" },
115743 .extra_temps = .{115691 .extra_temps = .{
115744 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuntixf" } } },115692 .{ .type = .usize, .kind = .{ .extern_func = "__floatuntixf" } },
115745 .unused,115693 .unused,
115746 .unused,115694 .unused,
115747 .unused,115695 .unused,
...@@ -115769,7 +115717,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -115769,7 +115717,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
115769 .extra_temps = .{115717 .extra_temps = .{
115770 .{ .type = .usize, .kind = .{ .reg = .rdi } },115718 .{ .type = .usize, .kind = .{ .reg = .rdi } },
115771 .{ .type = .usize, .kind = .{ .reg = .rsi } },115719 .{ .type = .usize, .kind = .{ .reg = .rsi } },
115772 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floateixf" } } },115720 .{ .type = .usize, .kind = .{ .extern_func = "__floateixf" } },
115773 .unused,115721 .unused,
115774 .unused,115722 .unused,
115775 .unused,115723 .unused,
...@@ -115797,7 +115745,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -115797,7 +115745,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
115797 .extra_temps = .{115745 .extra_temps = .{
115798 .{ .type = .usize, .kind = .{ .reg = .rdi } },115746 .{ .type = .usize, .kind = .{ .reg = .rdi } },
115799 .{ .type = .usize, .kind = .{ .reg = .rsi } },115747 .{ .type = .usize, .kind = .{ .reg = .rsi } },
115800 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuneixf" } } },115748 .{ .type = .usize, .kind = .{ .extern_func = "__floatuneixf" } },
115801 .unused,115749 .unused,
115802 .unused,115750 .unused,
115803 .unused,115751 .unused,
...@@ -115958,7 +115906,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -115958,7 +115906,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
115958 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },115906 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
115959 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },115907 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
115960 .{ .type = .i32, .kind = .{ .reg = .edi } },115908 .{ .type = .i32, .kind = .{ .reg = .edi } },
115961 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsixf" } } },115909 .{ .type = .usize, .kind = .{ .extern_func = "__floatsixf" } },
115962 .{ .type = .f80, .kind = .{ .reg = .st7 } },115910 .{ .type = .f80, .kind = .{ .reg = .st7 } },
115963 .unused,115911 .unused,
115964 .unused,115912 .unused,
...@@ -115992,7 +115940,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -115992,7 +115940,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
115992 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },115940 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
115993 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },115941 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
115994 .{ .type = .i32, .kind = .{ .reg = .edi } },115942 .{ .type = .i32, .kind = .{ .reg = .edi } },
115995 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsixf" } } },115943 .{ .type = .usize, .kind = .{ .extern_func = "__floatsixf" } },
115996 .{ .type = .f80, .kind = .{ .reg = .st7 } },115944 .{ .type = .f80, .kind = .{ .reg = .st7 } },
115997 .unused,115945 .unused,
115998 .unused,115946 .unused,
...@@ -116026,7 +115974,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -116026,7 +115974,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116026 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },115974 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
116027 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },115975 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
116028 .{ .type = .u32, .kind = .{ .reg = .edi } },115976 .{ .type = .u32, .kind = .{ .reg = .edi } },
116029 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsixf" } } },115977 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsixf" } },
116030 .{ .type = .f80, .kind = .{ .reg = .st7 } },115978 .{ .type = .f80, .kind = .{ .reg = .st7 } },
116031 .unused,115979 .unused,
116032 .unused,115980 .unused,
...@@ -116060,7 +116008,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -116060,7 +116008,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116060 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },116008 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
116061 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },116009 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
116062 .{ .type = .u32, .kind = .{ .reg = .edi } },116010 .{ .type = .u32, .kind = .{ .reg = .edi } },
116063 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsixf" } } },116011 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsixf" } },
116064 .{ .type = .f80, .kind = .{ .reg = .st7 } },116012 .{ .type = .f80, .kind = .{ .reg = .st7 } },
116065 .unused,116013 .unused,
116066 .unused,116014 .unused,
...@@ -116122,7 +116070,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -116122,7 +116070,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116122 .extra_temps = .{116070 .extra_temps = .{
116123 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },116071 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
116124 .{ .type = .i32, .kind = .{ .reg = .edi } },116072 .{ .type = .i32, .kind = .{ .reg = .edi } },
116125 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsixf" } } },116073 .{ .type = .usize, .kind = .{ .extern_func = "__floatsixf" } },
116126 .{ .type = .f80, .kind = .{ .reg = .st7 } },116074 .{ .type = .f80, .kind = .{ .reg = .st7 } },
116127 .unused,116075 .unused,
116128 .unused,116076 .unused,
...@@ -116154,7 +116102,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -116154,7 +116102,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116154 .extra_temps = .{116102 .extra_temps = .{
116155 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },116103 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
116156 .{ .type = .u32, .kind = .{ .reg = .edi } },116104 .{ .type = .u32, .kind = .{ .reg = .edi } },
116157 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsixf" } } },116105 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsixf" } },
116158 .{ .type = .f80, .kind = .{ .reg = .st7 } },116106 .{ .type = .f80, .kind = .{ .reg = .st7 } },
116159 .unused,116107 .unused,
116160 .unused,116108 .unused,
...@@ -116215,7 +116163,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -116215,7 +116163,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116215 .extra_temps = .{116163 .extra_temps = .{
116216 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },116164 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
116217 .{ .type = .i32, .kind = .{ .reg = .edi } },116165 .{ .type = .i32, .kind = .{ .reg = .edi } },
116218 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsixf" } } },116166 .{ .type = .usize, .kind = .{ .extern_func = "__floatsixf" } },
116219 .{ .type = .f80, .kind = .{ .reg = .st7 } },116167 .{ .type = .f80, .kind = .{ .reg = .st7 } },
116220 .unused,116168 .unused,
116221 .unused,116169 .unused,
...@@ -116247,7 +116195,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -116247,7 +116195,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116247 .extra_temps = .{116195 .extra_temps = .{
116248 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },116196 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
116249 .{ .type = .u32, .kind = .{ .reg = .edi } },116197 .{ .type = .u32, .kind = .{ .reg = .edi } },
116250 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsixf" } } },116198 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsixf" } },
116251 .{ .type = .f80, .kind = .{ .reg = .st7 } },116199 .{ .type = .f80, .kind = .{ .reg = .st7 } },
116252 .unused,116200 .unused,
116253 .unused,116201 .unused,
...@@ -116308,7 +116256,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -116308,7 +116256,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116308 .extra_temps = .{116256 .extra_temps = .{
116309 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },116257 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
116310 .{ .type = .i64, .kind = .{ .reg = .rdi } },116258 .{ .type = .i64, .kind = .{ .reg = .rdi } },
116311 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatdixf" } } },116259 .{ .type = .usize, .kind = .{ .extern_func = "__floatdixf" } },
116312 .{ .type = .f80, .kind = .{ .reg = .st7 } },116260 .{ .type = .f80, .kind = .{ .reg = .st7 } },
116313 .unused,116261 .unused,
116314 .unused,116262 .unused,
...@@ -116340,7 +116288,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -116340,7 +116288,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116340 .extra_temps = .{116288 .extra_temps = .{
116341 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },116289 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
116342 .{ .type = .u64, .kind = .{ .reg = .rdi } },116290 .{ .type = .u64, .kind = .{ .reg = .rdi } },
116343 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatundixf" } } },116291 .{ .type = .usize, .kind = .{ .extern_func = "__floatundixf" } },
116344 .{ .type = .f80, .kind = .{ .reg = .st7 } },116292 .{ .type = .f80, .kind = .{ .reg = .st7 } },
116345 .unused,116293 .unused,
116346 .unused,116294 .unused,
...@@ -116373,7 +116321,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -116373,7 +116321,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116373 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },116321 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
116374 .{ .type = .u64, .kind = .{ .reg = .rdi } },116322 .{ .type = .u64, .kind = .{ .reg = .rdi } },
116375 .{ .type = .i64, .kind = .{ .reg = .rsi } },116323 .{ .type = .i64, .kind = .{ .reg = .rsi } },
116376 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floattixf" } } },116324 .{ .type = .usize, .kind = .{ .extern_func = "__floattixf" } },
116377 .{ .type = .f80, .kind = .{ .reg = .st7 } },116325 .{ .type = .f80, .kind = .{ .reg = .st7 } },
116378 .unused,116326 .unused,
116379 .unused,116327 .unused,
...@@ -116406,7 +116354,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -116406,7 +116354,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116406 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },116354 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
116407 .{ .type = .u64, .kind = .{ .reg = .rdi } },116355 .{ .type = .u64, .kind = .{ .reg = .rdi } },
116408 .{ .type = .u64, .kind = .{ .reg = .rsi } },116356 .{ .type = .u64, .kind = .{ .reg = .rsi } },
116409 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuntixf" } } },116357 .{ .type = .usize, .kind = .{ .extern_func = "__floatuntixf" } },
116410 .{ .type = .f80, .kind = .{ .reg = .st7 } },116358 .{ .type = .f80, .kind = .{ .reg = .st7 } },
116411 .unused,116359 .unused,
116412 .unused,116360 .unused,
...@@ -116440,7 +116388,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -116440,7 +116388,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116440 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },116388 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
116441 .{ .type = .usize, .kind = .{ .reg = .rdi } },116389 .{ .type = .usize, .kind = .{ .reg = .rdi } },
116442 .{ .type = .usize, .kind = .{ .reg = .rsi } },116390 .{ .type = .usize, .kind = .{ .reg = .rsi } },
116443 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floateixf" } } },116391 .{ .type = .usize, .kind = .{ .extern_func = "__floateixf" } },
116444 .{ .type = .f80, .kind = .{ .reg = .st7 } },116392 .{ .type = .f80, .kind = .{ .reg = .st7 } },
116445 .unused,116393 .unused,
116446 .unused,116394 .unused,
...@@ -116475,7 +116423,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -116475,7 +116423,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116475 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },116423 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
116476 .{ .type = .usize, .kind = .{ .reg = .rdi } },116424 .{ .type = .usize, .kind = .{ .reg = .rdi } },
116477 .{ .type = .usize, .kind = .{ .reg = .rsi } },116425 .{ .type = .usize, .kind = .{ .reg = .rsi } },
116478 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuneixf" } } },116426 .{ .type = .usize, .kind = .{ .extern_func = "__floatuneixf" } },
116479 .{ .type = .f80, .kind = .{ .reg = .st7 } },116427 .{ .type = .f80, .kind = .{ .reg = .st7 } },
116480 .unused,116428 .unused,
116481 .unused,116429 .unused,
...@@ -116508,7 +116456,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -116508,7 +116456,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116508 .call_frame = .{ .alignment = .@"16" },116456 .call_frame = .{ .alignment = .@"16" },
116509 .extra_temps = .{116457 .extra_temps = .{
116510 .{ .type = .i32, .kind = .{ .reg = .edi } },116458 .{ .type = .i32, .kind = .{ .reg = .edi } },
116511 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsitf" } } },116459 .{ .type = .usize, .kind = .{ .extern_func = "__floatsitf" } },
116512 .unused,116460 .unused,
116513 .unused,116461 .unused,
116514 .unused,116462 .unused,
...@@ -116536,7 +116484,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -116536,7 +116484,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116536 .call_frame = .{ .alignment = .@"16" },116484 .call_frame = .{ .alignment = .@"16" },
116537 .extra_temps = .{116485 .extra_temps = .{
116538 .{ .type = .u32, .kind = .{ .reg = .edi } },116486 .{ .type = .u32, .kind = .{ .reg = .edi } },
116539 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsitf" } } },116487 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsitf" } },
116540 .unused,116488 .unused,
116541 .unused,116489 .unused,
116542 .unused,116490 .unused,
...@@ -116564,7 +116512,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -116564,7 +116512,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116564 .call_frame = .{ .alignment = .@"16" },116512 .call_frame = .{ .alignment = .@"16" },
116565 .extra_temps = .{116513 .extra_temps = .{
116566 .{ .type = .i32, .kind = .{ .reg = .edi } },116514 .{ .type = .i32, .kind = .{ .reg = .edi } },
116567 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsitf" } } },116515 .{ .type = .usize, .kind = .{ .extern_func = "__floatsitf" } },
116568 .unused,116516 .unused,
116569 .unused,116517 .unused,
116570 .unused,116518 .unused,
...@@ -116592,7 +116540,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -116592,7 +116540,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116592 .call_frame = .{ .alignment = .@"16" },116540 .call_frame = .{ .alignment = .@"16" },
116593 .extra_temps = .{116541 .extra_temps = .{
116594 .{ .type = .u32, .kind = .{ .reg = .edi } },116542 .{ .type = .u32, .kind = .{ .reg = .edi } },
116595 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsitf" } } },116543 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsitf" } },
116596 .unused,116544 .unused,
116597 .unused,116545 .unused,
116598 .unused,116546 .unused,
...@@ -116618,7 +116566,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -116618,7 +116566,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116618 },116566 },
116619 .call_frame = .{ .alignment = .@"16" },116567 .call_frame = .{ .alignment = .@"16" },
116620 .extra_temps = .{116568 .extra_temps = .{
116621 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsitf" } } },116569 .{ .type = .usize, .kind = .{ .extern_func = "__floatsitf" } },
116622 .unused,116570 .unused,
116623 .unused,116571 .unused,
116624 .unused,116572 .unused,
...@@ -116644,7 +116592,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -116644,7 +116592,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116644 },116592 },
116645 .call_frame = .{ .alignment = .@"16" },116593 .call_frame = .{ .alignment = .@"16" },
116646 .extra_temps = .{116594 .extra_temps = .{
116647 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsitf" } } },116595 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsitf" } },
116648 .unused,116596 .unused,
116649 .unused,116597 .unused,
116650 .unused,116598 .unused,
...@@ -116670,7 +116618,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -116670,7 +116618,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116670 },116618 },
116671 .call_frame = .{ .alignment = .@"16" },116619 .call_frame = .{ .alignment = .@"16" },
116672 .extra_temps = .{116620 .extra_temps = .{
116673 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatditf" } } },116621 .{ .type = .usize, .kind = .{ .extern_func = "__floatditf" } },
116674 .unused,116622 .unused,
116675 .unused,116623 .unused,
116676 .unused,116624 .unused,
...@@ -116696,7 +116644,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -116696,7 +116644,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116696 },116644 },
116697 .call_frame = .{ .alignment = .@"16" },116645 .call_frame = .{ .alignment = .@"16" },
116698 .extra_temps = .{116646 .extra_temps = .{
116699 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunditf" } } },116647 .{ .type = .usize, .kind = .{ .extern_func = "__floatunditf" } },
116700 .unused,116648 .unused,
116701 .unused,116649 .unused,
116702 .unused,116650 .unused,
...@@ -116722,7 +116670,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -116722,7 +116670,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116722 },116670 },
116723 .call_frame = .{ .alignment = .@"16" },116671 .call_frame = .{ .alignment = .@"16" },
116724 .extra_temps = .{116672 .extra_temps = .{
116725 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floattitf" } } },116673 .{ .type = .usize, .kind = .{ .extern_func = "__floattitf" } },
116726 .unused,116674 .unused,
116727 .unused,116675 .unused,
116728 .unused,116676 .unused,
...@@ -116748,7 +116696,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -116748,7 +116696,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116748 },116696 },
116749 .call_frame = .{ .alignment = .@"16" },116697 .call_frame = .{ .alignment = .@"16" },
116750 .extra_temps = .{116698 .extra_temps = .{
116751 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuntitf" } } },116699 .{ .type = .usize, .kind = .{ .extern_func = "__floatuntitf" } },
116752 .unused,116700 .unused,
116753 .unused,116701 .unused,
116754 .unused,116702 .unused,
...@@ -116776,7 +116724,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -116776,7 +116724,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116776 .extra_temps = .{116724 .extra_temps = .{
116777 .{ .type = .usize, .kind = .{ .reg = .rdi } },116725 .{ .type = .usize, .kind = .{ .reg = .rdi } },
116778 .{ .type = .usize, .kind = .{ .reg = .rsi } },116726 .{ .type = .usize, .kind = .{ .reg = .rsi } },
116779 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floateitf" } } },116727 .{ .type = .usize, .kind = .{ .extern_func = "__floateitf" } },
116780 .unused,116728 .unused,
116781 .unused,116729 .unused,
116782 .unused,116730 .unused,
...@@ -116804,7 +116752,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -116804,7 +116752,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116804 .extra_temps = .{116752 .extra_temps = .{
116805 .{ .type = .usize, .kind = .{ .reg = .rdi } },116753 .{ .type = .usize, .kind = .{ .reg = .rdi } },
116806 .{ .type = .usize, .kind = .{ .reg = .rsi } },116754 .{ .type = .usize, .kind = .{ .reg = .rsi } },
116807 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuneitf" } } },116755 .{ .type = .usize, .kind = .{ .extern_func = "__floatuneitf" } },
116808 .unused,116756 .unused,
116809 .unused,116757 .unused,
116810 .unused,116758 .unused,
...@@ -116833,7 +116781,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -116833,7 +116781,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116833 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },116781 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
116834 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },116782 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
116835 .{ .type = .i32, .kind = .{ .reg = .edi } },116783 .{ .type = .i32, .kind = .{ .reg = .edi } },
116836 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsitf" } } },116784 .{ .type = .usize, .kind = .{ .extern_func = "__floatsitf" } },
116837 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },116785 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
116838 .unused,116786 .unused,
116839 .unused,116787 .unused,
...@@ -116866,7 +116814,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -116866,7 +116814,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116866 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },116814 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
116867 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },116815 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
116868 .{ .type = .i32, .kind = .{ .reg = .edi } },116816 .{ .type = .i32, .kind = .{ .reg = .edi } },
116869 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsitf" } } },116817 .{ .type = .usize, .kind = .{ .extern_func = "__floatsitf" } },
116870 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },116818 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
116871 .unused,116819 .unused,
116872 .unused,116820 .unused,
...@@ -116899,7 +116847,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -116899,7 +116847,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116899 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },116847 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
116900 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },116848 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
116901 .{ .type = .i32, .kind = .{ .reg = .edi } },116849 .{ .type = .i32, .kind = .{ .reg = .edi } },
116902 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsitf" } } },116850 .{ .type = .usize, .kind = .{ .extern_func = "__floatsitf" } },
116903 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },116851 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
116904 .unused,116852 .unused,
116905 .unused,116853 .unused,
...@@ -116932,7 +116880,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -116932,7 +116880,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116932 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },116880 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
116933 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },116881 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
116934 .{ .type = .i32, .kind = .{ .reg = .edi } },116882 .{ .type = .i32, .kind = .{ .reg = .edi } },
116935 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsitf" } } },116883 .{ .type = .usize, .kind = .{ .extern_func = "__floatsitf" } },
116936 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },116884 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
116937 .unused,116885 .unused,
116938 .unused,116886 .unused,
...@@ -116965,7 +116913,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -116965,7 +116913,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116965 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },116913 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
116966 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },116914 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
116967 .{ .type = .i32, .kind = .{ .reg = .edi } },116915 .{ .type = .i32, .kind = .{ .reg = .edi } },
116968 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsitf" } } },116916 .{ .type = .usize, .kind = .{ .extern_func = "__floatsitf" } },
116969 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },116917 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
116970 .unused,116918 .unused,
116971 .unused,116919 .unused,
...@@ -116998,7 +116946,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -116998,7 +116946,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116998 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },116946 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
116999 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },116947 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
117000 .{ .type = .i32, .kind = .{ .reg = .edi } },116948 .{ .type = .i32, .kind = .{ .reg = .edi } },
117001 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsitf" } } },116949 .{ .type = .usize, .kind = .{ .extern_func = "__floatsitf" } },
117002 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },116950 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
117003 .unused,116951 .unused,
117004 .unused,116952 .unused,
...@@ -117031,7 +116979,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -117031,7 +116979,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
117031 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },116979 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
117032 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },116980 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
117033 .{ .type = .u32, .kind = .{ .reg = .edi } },116981 .{ .type = .u32, .kind = .{ .reg = .edi } },
117034 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsitf" } } },116982 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsitf" } },
117035 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },116983 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
117036 .unused,116984 .unused,
117037 .unused,116985 .unused,
...@@ -117064,7 +117012,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -117064,7 +117012,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
117064 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },117012 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
117065 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },117013 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
117066 .{ .type = .u32, .kind = .{ .reg = .edi } },117014 .{ .type = .u32, .kind = .{ .reg = .edi } },
117067 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsitf" } } },117015 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsitf" } },
117068 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },117016 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
117069 .unused,117017 .unused,
117070 .unused,117018 .unused,
...@@ -117097,7 +117045,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -117097,7 +117045,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
117097 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },117045 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
117098 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },117046 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
117099 .{ .type = .u32, .kind = .{ .reg = .edi } },117047 .{ .type = .u32, .kind = .{ .reg = .edi } },
117100 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsitf" } } },117048 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsitf" } },
117101 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },117049 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
117102 .unused,117050 .unused,
117103 .unused,117051 .unused,
...@@ -117130,7 +117078,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -117130,7 +117078,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
117130 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },117078 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
117131 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },117079 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
117132 .{ .type = .u32, .kind = .{ .reg = .edi } },117080 .{ .type = .u32, .kind = .{ .reg = .edi } },
117133 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsitf" } } },117081 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsitf" } },
117134 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },117082 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
117135 .unused,117083 .unused,
117136 .unused,117084 .unused,
...@@ -117163,7 +117111,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -117163,7 +117111,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
117163 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },117111 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
117164 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },117112 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
117165 .{ .type = .u32, .kind = .{ .reg = .edi } },117113 .{ .type = .u32, .kind = .{ .reg = .edi } },
117166 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsitf" } } },117114 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsitf" } },
117167 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },117115 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
117168 .unused,117116 .unused,
117169 .unused,117117 .unused,
...@@ -117196,7 +117144,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -117196,7 +117144,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
117196 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },117144 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
117197 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },117145 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
117198 .{ .type = .u32, .kind = .{ .reg = .edi } },117146 .{ .type = .u32, .kind = .{ .reg = .edi } },
117199 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsitf" } } },117147 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsitf" } },
117200 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },117148 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
117201 .unused,117149 .unused,
117202 .unused,117150 .unused,
...@@ -117228,7 +117176,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -117228,7 +117176,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
117228 .extra_temps = .{117176 .extra_temps = .{
117229 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },117177 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
117230 .{ .type = .i32, .kind = .{ .reg = .edi } },117178 .{ .type = .i32, .kind = .{ .reg = .edi } },
117231 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsitf" } } },117179 .{ .type = .usize, .kind = .{ .extern_func = "__floatsitf" } },
117232 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },117180 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
117233 .unused,117181 .unused,
117234 .unused,117182 .unused,
...@@ -117259,7 +117207,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -117259,7 +117207,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
117259 .extra_temps = .{117207 .extra_temps = .{
117260 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },117208 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
117261 .{ .type = .i32, .kind = .{ .reg = .edi } },117209 .{ .type = .i32, .kind = .{ .reg = .edi } },
117262 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsitf" } } },117210 .{ .type = .usize, .kind = .{ .extern_func = "__floatsitf" } },
117263 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },117211 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
117264 .unused,117212 .unused,
117265 .unused,117213 .unused,
...@@ -117290,7 +117238,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -117290,7 +117238,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
117290 .extra_temps = .{117238 .extra_temps = .{
117291 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },117239 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
117292 .{ .type = .i32, .kind = .{ .reg = .edi } },117240 .{ .type = .i32, .kind = .{ .reg = .edi } },
117293 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsitf" } } },117241 .{ .type = .usize, .kind = .{ .extern_func = "__floatsitf" } },
117294 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },117242 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
117295 .unused,117243 .unused,
117296 .unused,117244 .unused,
...@@ -117321,7 +117269,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -117321,7 +117269,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
117321 .extra_temps = .{117269 .extra_temps = .{
117322 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },117270 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
117323 .{ .type = .u32, .kind = .{ .reg = .edi } },117271 .{ .type = .u32, .kind = .{ .reg = .edi } },
117324 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsitf" } } },117272 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsitf" } },
117325 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },117273 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
117326 .unused,117274 .unused,
117327 .unused,117275 .unused,
...@@ -117352,7 +117300,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -117352,7 +117300,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
117352 .extra_temps = .{117300 .extra_temps = .{
117353 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },117301 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
117354 .{ .type = .u32, .kind = .{ .reg = .edi } },117302 .{ .type = .u32, .kind = .{ .reg = .edi } },
117355 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsitf" } } },117303 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsitf" } },
117356 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },117304 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
117357 .unused,117305 .unused,
117358 .unused,117306 .unused,
...@@ -117383,7 +117331,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -117383,7 +117331,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
117383 .extra_temps = .{117331 .extra_temps = .{
117384 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },117332 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
117385 .{ .type = .u32, .kind = .{ .reg = .edi } },117333 .{ .type = .u32, .kind = .{ .reg = .edi } },
117386 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsitf" } } },117334 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsitf" } },
117387 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },117335 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
117388 .unused,117336 .unused,
117389 .unused,117337 .unused,
...@@ -117414,7 +117362,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -117414,7 +117362,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
117414 .extra_temps = .{117362 .extra_temps = .{
117415 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },117363 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
117416 .{ .type = .i32, .kind = .{ .reg = .edi } },117364 .{ .type = .i32, .kind = .{ .reg = .edi } },
117417 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsitf" } } },117365 .{ .type = .usize, .kind = .{ .extern_func = "__floatsitf" } },
117418 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },117366 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
117419 .unused,117367 .unused,
117420 .unused,117368 .unused,
...@@ -117445,7 +117393,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -117445,7 +117393,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
117445 .extra_temps = .{117393 .extra_temps = .{
117446 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },117394 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
117447 .{ .type = .i32, .kind = .{ .reg = .edi } },117395 .{ .type = .i32, .kind = .{ .reg = .edi } },
117448 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsitf" } } },117396 .{ .type = .usize, .kind = .{ .extern_func = "__floatsitf" } },
117449 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },117397 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
117450 .unused,117398 .unused,
117451 .unused,117399 .unused,
...@@ -117476,7 +117424,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -117476,7 +117424,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
117476 .extra_temps = .{117424 .extra_temps = .{
117477 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },117425 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
117478 .{ .type = .i32, .kind = .{ .reg = .edi } },117426 .{ .type = .i32, .kind = .{ .reg = .edi } },
117479 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsitf" } } },117427 .{ .type = .usize, .kind = .{ .extern_func = "__floatsitf" } },
117480 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },117428 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
117481 .unused,117429 .unused,
117482 .unused,117430 .unused,
...@@ -117507,7 +117455,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -117507,7 +117455,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
117507 .extra_temps = .{117455 .extra_temps = .{
117508 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },117456 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
117509 .{ .type = .u32, .kind = .{ .reg = .edi } },117457 .{ .type = .u32, .kind = .{ .reg = .edi } },
117510 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsitf" } } },117458 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsitf" } },
117511 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },117459 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
117512 .unused,117460 .unused,
117513 .unused,117461 .unused,
...@@ -117538,7 +117486,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -117538,7 +117486,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
117538 .extra_temps = .{117486 .extra_temps = .{
117539 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },117487 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
117540 .{ .type = .u32, .kind = .{ .reg = .edi } },117488 .{ .type = .u32, .kind = .{ .reg = .edi } },
117541 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsitf" } } },117489 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsitf" } },
117542 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },117490 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
117543 .unused,117491 .unused,
117544 .unused,117492 .unused,
...@@ -117569,7 +117517,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -117569,7 +117517,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
117569 .extra_temps = .{117517 .extra_temps = .{
117570 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },117518 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
117571 .{ .type = .u32, .kind = .{ .reg = .edi } },117519 .{ .type = .u32, .kind = .{ .reg = .edi } },
117572 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsitf" } } },117520 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsitf" } },
117573 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },117521 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
117574 .unused,117522 .unused,
117575 .unused,117523 .unused,
...@@ -117600,7 +117548,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -117600,7 +117548,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
117600 .extra_temps = .{117548 .extra_temps = .{
117601 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },117549 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
117602 .{ .type = .i64, .kind = .{ .reg = .rdi } },117550 .{ .type = .i64, .kind = .{ .reg = .rdi } },
117603 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatditf" } } },117551 .{ .type = .usize, .kind = .{ .extern_func = "__floatditf" } },
117604 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },117552 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
117605 .unused,117553 .unused,
117606 .unused,117554 .unused,
...@@ -117631,7 +117579,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -117631,7 +117579,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
117631 .extra_temps = .{117579 .extra_temps = .{
117632 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },117580 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
117633 .{ .type = .i64, .kind = .{ .reg = .rdi } },117581 .{ .type = .i64, .kind = .{ .reg = .rdi } },
117634 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatditf" } } },117582 .{ .type = .usize, .kind = .{ .extern_func = "__floatditf" } },
117635 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },117583 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
117636 .unused,117584 .unused,
117637 .unused,117585 .unused,
...@@ -117662,7 +117610,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -117662,7 +117610,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
117662 .extra_temps = .{117610 .extra_temps = .{
117663 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },117611 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
117664 .{ .type = .i64, .kind = .{ .reg = .rdi } },117612 .{ .type = .i64, .kind = .{ .reg = .rdi } },
117665 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatditf" } } },117613 .{ .type = .usize, .kind = .{ .extern_func = "__floatditf" } },
117666 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },117614 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
117667 .unused,117615 .unused,
117668 .unused,117616 .unused,
...@@ -117693,7 +117641,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -117693,7 +117641,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
117693 .extra_temps = .{117641 .extra_temps = .{
117694 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },117642 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
117695 .{ .type = .u64, .kind = .{ .reg = .rdi } },117643 .{ .type = .u64, .kind = .{ .reg = .rdi } },
117696 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunditf" } } },117644 .{ .type = .usize, .kind = .{ .extern_func = "__floatunditf" } },
117697 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },117645 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
117698 .unused,117646 .unused,
117699 .unused,117647 .unused,
...@@ -117724,7 +117672,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -117724,7 +117672,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
117724 .extra_temps = .{117672 .extra_temps = .{
117725 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },117673 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
117726 .{ .type = .u64, .kind = .{ .reg = .rdi } },117674 .{ .type = .u64, .kind = .{ .reg = .rdi } },
117727 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunditf" } } },117675 .{ .type = .usize, .kind = .{ .extern_func = "__floatunditf" } },
117728 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },117676 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
117729 .unused,117677 .unused,
117730 .unused,117678 .unused,
...@@ -117755,7 +117703,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -117755,7 +117703,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
117755 .extra_temps = .{117703 .extra_temps = .{
117756 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },117704 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
117757 .{ .type = .u64, .kind = .{ .reg = .rdi } },117705 .{ .type = .u64, .kind = .{ .reg = .rdi } },
117758 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunditf" } } },117706 .{ .type = .usize, .kind = .{ .extern_func = "__floatunditf" } },
117759 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },117707 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
117760 .unused,117708 .unused,
117761 .unused,117709 .unused,
...@@ -117787,7 +117735,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -117787,7 +117735,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
117787 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },117735 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
117788 .{ .type = .u64, .kind = .{ .reg = .rdi } },117736 .{ .type = .u64, .kind = .{ .reg = .rdi } },
117789 .{ .type = .i64, .kind = .{ .reg = .rsi } },117737 .{ .type = .i64, .kind = .{ .reg = .rsi } },
117790 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floattitf" } } },117738 .{ .type = .usize, .kind = .{ .extern_func = "__floattitf" } },
117791 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },117739 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
117792 .unused,117740 .unused,
117793 .unused,117741 .unused,
...@@ -117819,7 +117767,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -117819,7 +117767,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
117819 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },117767 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
117820 .{ .type = .u64, .kind = .{ .reg = .rdi } },117768 .{ .type = .u64, .kind = .{ .reg = .rdi } },
117821 .{ .type = .i64, .kind = .{ .reg = .rsi } },117769 .{ .type = .i64, .kind = .{ .reg = .rsi } },
117822 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floattitf" } } },117770 .{ .type = .usize, .kind = .{ .extern_func = "__floattitf" } },
117823 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },117771 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
117824 .unused,117772 .unused,
117825 .unused,117773 .unused,
...@@ -117851,7 +117799,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -117851,7 +117799,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
117851 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },117799 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
117852 .{ .type = .u64, .kind = .{ .reg = .rdi } },117800 .{ .type = .u64, .kind = .{ .reg = .rdi } },
117853 .{ .type = .i64, .kind = .{ .reg = .rsi } },117801 .{ .type = .i64, .kind = .{ .reg = .rsi } },
117854 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floattitf" } } },117802 .{ .type = .usize, .kind = .{ .extern_func = "__floattitf" } },
117855 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },117803 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
117856 .unused,117804 .unused,
117857 .unused,117805 .unused,
...@@ -117883,7 +117831,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -117883,7 +117831,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
117883 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },117831 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
117884 .{ .type = .u64, .kind = .{ .reg = .rdi } },117832 .{ .type = .u64, .kind = .{ .reg = .rdi } },
117885 .{ .type = .u64, .kind = .{ .reg = .rsi } },117833 .{ .type = .u64, .kind = .{ .reg = .rsi } },
117886 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuntitf" } } },117834 .{ .type = .usize, .kind = .{ .extern_func = "__floatuntitf" } },
117887 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },117835 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
117888 .unused,117836 .unused,
117889 .unused,117837 .unused,
...@@ -117915,7 +117863,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -117915,7 +117863,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
117915 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },117863 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
117916 .{ .type = .u64, .kind = .{ .reg = .rdi } },117864 .{ .type = .u64, .kind = .{ .reg = .rdi } },
117917 .{ .type = .u64, .kind = .{ .reg = .rsi } },117865 .{ .type = .u64, .kind = .{ .reg = .rsi } },
117918 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuntitf" } } },117866 .{ .type = .usize, .kind = .{ .extern_func = "__floatuntitf" } },
117919 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },117867 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
117920 .unused,117868 .unused,
117921 .unused,117869 .unused,
...@@ -117947,7 +117895,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -117947,7 +117895,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
117947 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },117895 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
117948 .{ .type = .u64, .kind = .{ .reg = .rdi } },117896 .{ .type = .u64, .kind = .{ .reg = .rdi } },
117949 .{ .type = .u64, .kind = .{ .reg = .rsi } },117897 .{ .type = .u64, .kind = .{ .reg = .rsi } },
117950 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuntitf" } } },117898 .{ .type = .usize, .kind = .{ .extern_func = "__floatuntitf" } },
117951 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },117899 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
117952 .unused,117900 .unused,
117953 .unused,117901 .unused,
...@@ -117980,7 +117928,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -117980,7 +117928,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
117980 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },117928 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
117981 .{ .type = .usize, .kind = .{ .reg = .rdi } },117929 .{ .type = .usize, .kind = .{ .reg = .rdi } },
117982 .{ .type = .usize, .kind = .{ .reg = .rsi } },117930 .{ .type = .usize, .kind = .{ .reg = .rsi } },
117983 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floateitf" } } },117931 .{ .type = .usize, .kind = .{ .extern_func = "__floateitf" } },
117984 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },117932 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
117985 .unused,117933 .unused,
117986 .unused,117934 .unused,
...@@ -118014,7 +117962,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -118014,7 +117962,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
118014 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },117962 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
118015 .{ .type = .usize, .kind = .{ .reg = .rdi } },117963 .{ .type = .usize, .kind = .{ .reg = .rdi } },
118016 .{ .type = .usize, .kind = .{ .reg = .rsi } },117964 .{ .type = .usize, .kind = .{ .reg = .rsi } },
118017 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floateitf" } } },117965 .{ .type = .usize, .kind = .{ .extern_func = "__floateitf" } },
118018 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },117966 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
118019 .unused,117967 .unused,
118020 .unused,117968 .unused,
...@@ -118048,7 +117996,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -118048,7 +117996,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
118048 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },117996 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
118049 .{ .type = .usize, .kind = .{ .reg = .rdi } },117997 .{ .type = .usize, .kind = .{ .reg = .rdi } },
118050 .{ .type = .usize, .kind = .{ .reg = .rsi } },117998 .{ .type = .usize, .kind = .{ .reg = .rsi } },
118051 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floateitf" } } },117999 .{ .type = .usize, .kind = .{ .extern_func = "__floateitf" } },
118052 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },118000 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
118053 .unused,118001 .unused,
118054 .unused,118002 .unused,
...@@ -118082,7 +118030,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -118082,7 +118030,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
118082 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },118030 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
118083 .{ .type = .usize, .kind = .{ .reg = .rdi } },118031 .{ .type = .usize, .kind = .{ .reg = .rdi } },
118084 .{ .type = .usize, .kind = .{ .reg = .rsi } },118032 .{ .type = .usize, .kind = .{ .reg = .rsi } },
118085 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuneitf" } } },118033 .{ .type = .usize, .kind = .{ .extern_func = "__floatuneitf" } },
118086 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },118034 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
118087 .unused,118035 .unused,
118088 .unused,118036 .unused,
...@@ -118116,7 +118064,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -118116,7 +118064,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
118116 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },118064 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
118117 .{ .type = .usize, .kind = .{ .reg = .rdi } },118065 .{ .type = .usize, .kind = .{ .reg = .rdi } },
118118 .{ .type = .usize, .kind = .{ .reg = .rsi } },118066 .{ .type = .usize, .kind = .{ .reg = .rsi } },
118119 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuneitf" } } },118067 .{ .type = .usize, .kind = .{ .extern_func = "__floatuneitf" } },
118120 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },118068 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
118121 .unused,118069 .unused,
118122 .unused,118070 .unused,
...@@ -118150,7 +118098,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -118150,7 +118098,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
118150 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },118098 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
118151 .{ .type = .usize, .kind = .{ .reg = .rdi } },118099 .{ .type = .usize, .kind = .{ .reg = .rdi } },
118152 .{ .type = .usize, .kind = .{ .reg = .rsi } },118100 .{ .type = .usize, .kind = .{ .reg = .rsi } },
118153 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuneitf" } } },118101 .{ .type = .usize, .kind = .{ .extern_func = "__floatuneitf" } },
118154 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },118102 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
118155 .unused,118103 .unused,
118156 .unused,118104 .unused,
...@@ -131865,7 +131813,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -131865,7 +131813,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
131865 .extra_temps = .{131813 .extra_temps = .{
131866 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },131814 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
131867 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },131815 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
131868 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fminh" } } },131816 .{ .type = .usize, .kind = .{ .extern_func = "__fminh" } },
131869 .unused,131817 .unused,
131870 .unused,131818 .unused,
131871 .unused,131819 .unused,
...@@ -131898,7 +131846,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -131898,7 +131846,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
131898 .extra_temps = .{131846 .extra_temps = .{
131899 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },131847 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
131900 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },131848 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
131901 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fminh" } } },131849 .{ .type = .usize, .kind = .{ .extern_func = "__fminh" } },
131902 .unused,131850 .unused,
131903 .unused,131851 .unused,
131904 .unused,131852 .unused,
...@@ -131933,7 +131881,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -131933,7 +131881,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
131933 .{ .type = .f16, .kind = .{ .reg = .ax } },131881 .{ .type = .f16, .kind = .{ .reg = .ax } },
131934 .{ .type = .f32, .kind = .mem },131882 .{ .type = .f32, .kind = .mem },
131935 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },131883 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
131936 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fminh" } } },131884 .{ .type = .usize, .kind = .{ .extern_func = "__fminh" } },
131937 .unused,131885 .unused,
131938 .unused,131886 .unused,
131939 .unused,131887 .unused,
...@@ -133533,7 +133481,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -133533,7 +133481,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
133533 .extra_temps = .{133481 .extra_temps = .{
133534 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },133482 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
133535 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },133483 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
133536 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fminq" } } },133484 .{ .type = .usize, .kind = .{ .extern_func = "fminq" } },
133537 .unused,133485 .unused,
133538 .unused,133486 .unused,
133539 .unused,133487 .unused,
...@@ -133564,7 +133512,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -133564,7 +133512,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
133564 .extra_temps = .{133512 .extra_temps = .{
133565 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },133513 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
133566 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },133514 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
133567 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fminq" } } },133515 .{ .type = .usize, .kind = .{ .extern_func = "fminq" } },
133568 .unused,133516 .unused,
133569 .unused,133517 .unused,
133570 .unused,133518 .unused,
...@@ -133595,7 +133543,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -133595,7 +133543,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
133595 .extra_temps = .{133543 .extra_temps = .{
133596 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },133544 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
133597 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },133545 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
133598 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fminq" } } },133546 .{ .type = .usize, .kind = .{ .extern_func = "fminq" } },
133599 .unused,133547 .unused,
133600 .unused,133548 .unused,
133601 .unused,133549 .unused,
...@@ -141985,7 +141933,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -141985,7 +141933,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
141985 .extra_temps = .{141933 .extra_temps = .{
141986 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },141934 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
141987 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },141935 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
141988 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmaxh" } } },141936 .{ .type = .usize, .kind = .{ .extern_func = "__fmaxh" } },
141989 .unused,141937 .unused,
141990 .unused,141938 .unused,
141991 .unused,141939 .unused,
...@@ -142018,7 +141966,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -142018,7 +141966,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
142018 .extra_temps = .{141966 .extra_temps = .{
142019 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },141967 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
142020 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },141968 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
142021 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmaxh" } } },141969 .{ .type = .usize, .kind = .{ .extern_func = "__fmaxh" } },
142022 .unused,141970 .unused,
142023 .unused,141971 .unused,
142024 .unused,141972 .unused,
...@@ -142053,7 +142001,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -142053,7 +142001,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
142053 .{ .type = .f16, .kind = .{ .reg = .ax } },142001 .{ .type = .f16, .kind = .{ .reg = .ax } },
142054 .{ .type = .f32, .kind = .mem },142002 .{ .type = .f32, .kind = .mem },
142055 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },142003 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
142056 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmaxh" } } },142004 .{ .type = .usize, .kind = .{ .extern_func = "__fmaxh" } },
142057 .unused,142005 .unused,
142058 .unused,142006 .unused,
142059 .unused,142007 .unused,
...@@ -143661,7 +143609,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -143661,7 +143609,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
143661 .extra_temps = .{143609 .extra_temps = .{
143662 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },143610 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
143663 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },143611 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
143664 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmaxq" } } },143612 .{ .type = .usize, .kind = .{ .extern_func = "fmaxq" } },
143665 .unused,143613 .unused,
143666 .unused,143614 .unused,
143667 .unused,143615 .unused,
...@@ -143692,7 +143640,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -143692,7 +143640,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
143692 .extra_temps = .{143640 .extra_temps = .{
143693 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },143641 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
143694 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },143642 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
143695 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmaxq" } } },143643 .{ .type = .usize, .kind = .{ .extern_func = "fmaxq" } },
143696 .unused,143644 .unused,
143697 .unused,143645 .unused,
143698 .unused,143646 .unused,
...@@ -143723,7 +143671,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -143723,7 +143671,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
143723 .extra_temps = .{143671 .extra_temps = .{
143724 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },143672 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
143725 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },143673 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
143726 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmaxq" } } },143674 .{ .type = .usize, .kind = .{ .extern_func = "fmaxq" } },
143727 .unused,143675 .unused,
143728 .unused,143676 .unused,
143729 .unused,143677 .unused,
...@@ -147656,7 +147604,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -147656,7 +147604,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
147656 .extra_temps = .{147604 .extra_temps = .{
147657 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },147605 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
147658 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },147606 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
147659 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addhf3" } } },147607 .{ .type = .usize, .kind = .{ .extern_func = "__addhf3" } },
147660 .unused,147608 .unused,
147661 .unused,147609 .unused,
147662 .unused,147610 .unused,
...@@ -147689,7 +147637,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -147689,7 +147637,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
147689 .extra_temps = .{147637 .extra_temps = .{
147690 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },147638 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
147691 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },147639 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
147692 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addhf3" } } },147640 .{ .type = .usize, .kind = .{ .extern_func = "__addhf3" } },
147693 .unused,147641 .unused,
147694 .unused,147642 .unused,
147695 .unused,147643 .unused,
...@@ -147724,7 +147672,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -147724,7 +147672,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
147724 .{ .type = .f16, .kind = .{ .reg = .ax } },147672 .{ .type = .f16, .kind = .{ .reg = .ax } },
147725 .{ .type = .f32, .kind = .mem },147673 .{ .type = .f32, .kind = .mem },
147726 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },147674 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
147727 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addhf3" } } },147675 .{ .type = .usize, .kind = .{ .extern_func = "__addhf3" } },
147728 .unused,147676 .unused,
147729 .unused,147677 .unused,
147730 .unused,147678 .unused,
...@@ -148241,7 +148189,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -148241,7 +148189,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
148241 .extra_temps = .{148189 .extra_temps = .{
148242 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },148190 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
148243 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },148191 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
148244 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addtf3" } } },148192 .{ .type = .usize, .kind = .{ .extern_func = "__addtf3" } },
148245 .unused,148193 .unused,
148246 .unused,148194 .unused,
148247 .unused,148195 .unused,
...@@ -148272,7 +148220,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -148272,7 +148220,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
148272 .extra_temps = .{148220 .extra_temps = .{
148273 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },148221 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
148274 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },148222 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
148275 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addtf3" } } },148223 .{ .type = .usize, .kind = .{ .extern_func = "__addtf3" } },
148276 .unused,148224 .unused,
148277 .unused,148225 .unused,
148278 .unused,148226 .unused,
...@@ -148303,7 +148251,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -148303,7 +148251,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
148303 .extra_temps = .{148251 .extra_temps = .{
148304 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },148252 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
148305 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },148253 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
148306 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addtf3" } } },148254 .{ .type = .usize, .kind = .{ .extern_func = "__addtf3" } },
148307 .unused,148255 .unused,
148308 .unused,148256 .unused,
148309 .unused,148257 .unused,
...@@ -151315,7 +151263,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -151315,7 +151263,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
151315 .extra_temps = .{151263 .extra_temps = .{
151316 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },151264 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
151317 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },151265 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
151318 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__mulhf3" } } },151266 .{ .type = .usize, .kind = .{ .extern_func = "__mulhf3" } },
151319 .unused,151267 .unused,
151320 .unused,151268 .unused,
151321 .unused,151269 .unused,
...@@ -151348,7 +151296,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -151348,7 +151296,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
151348 .extra_temps = .{151296 .extra_temps = .{
151349 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },151297 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
151350 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },151298 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
151351 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__mulhf3" } } },151299 .{ .type = .usize, .kind = .{ .extern_func = "__mulhf3" } },
151352 .unused,151300 .unused,
151353 .unused,151301 .unused,
151354 .unused,151302 .unused,
...@@ -151383,7 +151331,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -151383,7 +151331,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
151383 .{ .type = .f16, .kind = .{ .reg = .ax } },151331 .{ .type = .f16, .kind = .{ .reg = .ax } },
151384 .{ .type = .f32, .kind = .mem },151332 .{ .type = .f32, .kind = .mem },
151385 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },151333 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
151386 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__mulhf3" } } },151334 .{ .type = .usize, .kind = .{ .extern_func = "__mulhf3" } },
151387 .unused,151335 .unused,
151388 .unused,151336 .unused,
151389 .unused,151337 .unused,
...@@ -151780,7 +151728,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -151780,7 +151728,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
151780 .extra_temps = .{151728 .extra_temps = .{
151781 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },151729 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
151782 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },151730 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
151783 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__multf3" } } },151731 .{ .type = .usize, .kind = .{ .extern_func = "__multf3" } },
151784 .unused,151732 .unused,
151785 .unused,151733 .unused,
151786 .unused,151734 .unused,
...@@ -151811,7 +151759,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -151811,7 +151759,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
151811 .extra_temps = .{151759 .extra_temps = .{
151812 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },151760 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
151813 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },151761 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
151814 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__multf3" } } },151762 .{ .type = .usize, .kind = .{ .extern_func = "__multf3" } },
151815 .unused,151763 .unused,
151816 .unused,151764 .unused,
151817 .unused,151765 .unused,
...@@ -151842,7 +151790,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -151842,7 +151790,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
151842 .extra_temps = .{151790 .extra_temps = .{
151843 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },151791 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
151844 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },151792 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
151845 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__multf3" } } },151793 .{ .type = .usize, .kind = .{ .extern_func = "__multf3" } },
151846 .unused,151794 .unused,
151847 .unused,151795 .unused,
151848 .unused,151796 .unused,
...@@ -152354,7 +152302,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -152354,7 +152302,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
152354 .extra_temps = .{152302 .extra_temps = .{
152355 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },152303 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
152356 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },152304 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
152357 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fminh" } } },152305 .{ .type = .usize, .kind = .{ .extern_func = "__fminh" } },
152358 .unused,152306 .unused,
152359 .unused,152307 .unused,
152360 .unused,152308 .unused,
...@@ -152387,7 +152335,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -152387,7 +152335,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
152387 .extra_temps = .{152335 .extra_temps = .{
152388 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },152336 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
152389 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },152337 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
152390 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fminh" } } },152338 .{ .type = .usize, .kind = .{ .extern_func = "__fminh" } },
152391 .unused,152339 .unused,
152392 .unused,152340 .unused,
152393 .unused,152341 .unused,
...@@ -152422,7 +152370,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -152422,7 +152370,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
152422 .{ .type = .f16, .kind = .{ .reg = .ax } },152370 .{ .type = .f16, .kind = .{ .reg = .ax } },
152423 .{ .type = .f32, .kind = .mem },152371 .{ .type = .f32, .kind = .mem },
152424 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },152372 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
152425 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fminh" } } },152373 .{ .type = .usize, .kind = .{ .extern_func = "__fminh" } },
152426 .unused,152374 .unused,
152427 .unused,152375 .unused,
152428 .unused,152376 .unused,
...@@ -153502,7 +153450,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -153502,7 +153450,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
153502 .extra_temps = .{153450 .extra_temps = .{
153503 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },153451 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
153504 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },153452 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
153505 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fminq" } } },153453 .{ .type = .usize, .kind = .{ .extern_func = "fminq" } },
153506 .unused,153454 .unused,
153507 .unused,153455 .unused,
153508 .unused,153456 .unused,
...@@ -153533,7 +153481,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -153533,7 +153481,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
153533 .extra_temps = .{153481 .extra_temps = .{
153534 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },153482 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
153535 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },153483 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
153536 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fminq" } } },153484 .{ .type = .usize, .kind = .{ .extern_func = "fminq" } },
153537 .unused,153485 .unused,
153538 .unused,153486 .unused,
153539 .unused,153487 .unused,
...@@ -153564,7 +153512,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -153564,7 +153512,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
153564 .extra_temps = .{153512 .extra_temps = .{
153565 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },153513 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
153566 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },153514 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
153567 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fminq" } } },153515 .{ .type = .usize, .kind = .{ .extern_func = "fminq" } },
153568 .unused,153516 .unused,
153569 .unused,153517 .unused,
153570 .unused,153518 .unused,
...@@ -154046,7 +153994,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -154046,7 +153994,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
154046 .extra_temps = .{153994 .extra_temps = .{
154047 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },153995 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
154048 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },153996 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
154049 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmaxh" } } },153997 .{ .type = .usize, .kind = .{ .extern_func = "__fmaxh" } },
154050 .unused,153998 .unused,
154051 .unused,153999 .unused,
154052 .unused,154000 .unused,
...@@ -154079,7 +154027,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -154079,7 +154027,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
154079 .extra_temps = .{154027 .extra_temps = .{
154080 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },154028 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
154081 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },154029 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
154082 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmaxh" } } },154030 .{ .type = .usize, .kind = .{ .extern_func = "__fmaxh" } },
154083 .unused,154031 .unused,
154084 .unused,154032 .unused,
154085 .unused,154033 .unused,
...@@ -154114,7 +154062,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -154114,7 +154062,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
154114 .{ .type = .f16, .kind = .{ .reg = .ax } },154062 .{ .type = .f16, .kind = .{ .reg = .ax } },
154115 .{ .type = .f32, .kind = .mem },154063 .{ .type = .f32, .kind = .mem },
154116 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },154064 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
154117 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmaxh" } } },154065 .{ .type = .usize, .kind = .{ .extern_func = "__fmaxh" } },
154118 .unused,154066 .unused,
154119 .unused,154067 .unused,
154120 .unused,154068 .unused,
...@@ -155194,7 +155142,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -155194,7 +155142,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
155194 .extra_temps = .{155142 .extra_temps = .{
155195 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },155143 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
155196 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },155144 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
155197 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmaxq" } } },155145 .{ .type = .usize, .kind = .{ .extern_func = "fmaxq" } },
155198 .unused,155146 .unused,
155199 .unused,155147 .unused,
155200 .unused,155148 .unused,
...@@ -155225,7 +155173,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -155225,7 +155173,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
155225 .extra_temps = .{155173 .extra_temps = .{
155226 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },155174 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
155227 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },155175 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
155228 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmaxq" } } },155176 .{ .type = .usize, .kind = .{ .extern_func = "fmaxq" } },
155229 .unused,155177 .unused,
155230 .unused,155178 .unused,
155231 .unused,155179 .unused,
...@@ -155256,7 +155204,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -155256,7 +155204,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
155256 .extra_temps = .{155204 .extra_temps = .{
155257 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },155205 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
155258 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },155206 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
155259 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmaxq" } } },155207 .{ .type = .usize, .kind = .{ .extern_func = "fmaxq" } },
155260 .unused,155208 .unused,
155261 .unused,155209 .unused,
155262 .unused,155210 .unused,
...@@ -155987,7 +155935,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -155987,7 +155935,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
155987 .extra_temps = .{155935 .extra_temps = .{
155988 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },155936 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
155989 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },155937 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
155990 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addhf3" } } },155938 .{ .type = .usize, .kind = .{ .extern_func = "__addhf3" } },
155991 .unused,155939 .unused,
155992 .unused,155940 .unused,
155993 .unused,155941 .unused,
...@@ -156020,7 +155968,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -156020,7 +155968,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
156020 .extra_temps = .{155968 .extra_temps = .{
156021 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },155969 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
156022 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },155970 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
156023 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addhf3" } } },155971 .{ .type = .usize, .kind = .{ .extern_func = "__addhf3" } },
156024 .unused,155972 .unused,
156025 .unused,155973 .unused,
156026 .unused,155974 .unused,
...@@ -156055,7 +156003,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -156055,7 +156003,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
156055 .{ .type = .f16, .kind = .{ .reg = .ax } },156003 .{ .type = .f16, .kind = .{ .reg = .ax } },
156056 .{ .type = .f32, .kind = .mem },156004 .{ .type = .f32, .kind = .mem },
156057 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },156005 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
156058 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addhf3" } } },156006 .{ .type = .usize, .kind = .{ .extern_func = "__addhf3" } },
156059 .unused,156007 .unused,
156060 .unused,156008 .unused,
156061 .unused,156009 .unused,
...@@ -157453,7 +157401,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -157453,7 +157401,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
157453 .extra_temps = .{157401 .extra_temps = .{
157454 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },157402 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
157455 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },157403 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
157456 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addtf3" } } },157404 .{ .type = .usize, .kind = .{ .extern_func = "__addtf3" } },
157457 .unused,157405 .unused,
157458 .unused,157406 .unused,
157459 .unused,157407 .unused,
...@@ -157484,7 +157432,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -157484,7 +157432,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
157484 .extra_temps = .{157432 .extra_temps = .{
157485 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },157433 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
157486 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },157434 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
157487 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addtf3" } } },157435 .{ .type = .usize, .kind = .{ .extern_func = "__addtf3" } },
157488 .unused,157436 .unused,
157489 .unused,157437 .unused,
157490 .unused,157438 .unused,
...@@ -157515,7 +157463,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -157515,7 +157463,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
157515 .extra_temps = .{157463 .extra_temps = .{
157516 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },157464 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
157517 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },157465 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
157518 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addtf3" } } },157466 .{ .type = .usize, .kind = .{ .extern_func = "__addtf3" } },
157519 .unused,157467 .unused,
157520 .unused,157468 .unused,
157521 .unused,157469 .unused,
...@@ -157997,7 +157945,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -157997,7 +157945,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
157997 .extra_temps = .{157945 .extra_temps = .{
157998 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },157946 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
157999 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },157947 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
158000 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__mulhf3" } } },157948 .{ .type = .usize, .kind = .{ .extern_func = "__mulhf3" } },
158001 .unused,157949 .unused,
158002 .unused,157950 .unused,
158003 .unused,157951 .unused,
...@@ -158030,7 +157978,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -158030,7 +157978,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
158030 .extra_temps = .{157978 .extra_temps = .{
158031 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },157979 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
158032 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },157980 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
158033 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__mulhf3" } } },157981 .{ .type = .usize, .kind = .{ .extern_func = "__mulhf3" } },
158034 .unused,157982 .unused,
158035 .unused,157983 .unused,
158036 .unused,157984 .unused,
...@@ -158065,7 +158013,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -158065,7 +158013,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
158065 .{ .type = .f16, .kind = .{ .reg = .ax } },158013 .{ .type = .f16, .kind = .{ .reg = .ax } },
158066 .{ .type = .f32, .kind = .mem },158014 .{ .type = .f32, .kind = .mem },
158067 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },158015 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
158068 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__mulhf3" } } },158016 .{ .type = .usize, .kind = .{ .extern_func = "__mulhf3" } },
158069 .unused,158017 .unused,
158070 .unused,158018 .unused,
158071 .unused,158019 .unused,
...@@ -158996,7 +158944,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -158996,7 +158944,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
158996 .extra_temps = .{158944 .extra_temps = .{
158997 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },158945 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
158998 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },158946 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
158999 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__multf3" } } },158947 .{ .type = .usize, .kind = .{ .extern_func = "__multf3" } },
159000 .unused,158948 .unused,
159001 .unused,158949 .unused,
159002 .unused,158950 .unused,
...@@ -159027,7 +158975,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -159027,7 +158975,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
159027 .extra_temps = .{158975 .extra_temps = .{
159028 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },158976 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
159029 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },158977 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
159030 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__multf3" } } },158978 .{ .type = .usize, .kind = .{ .extern_func = "__multf3" } },
159031 .unused,158979 .unused,
159032 .unused,158980 .unused,
159033 .unused,158981 .unused,
...@@ -159058,7 +159006,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -159058,7 +159006,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
159058 .extra_temps = .{159006 .extra_temps = .{
159059 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },159007 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
159060 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },159008 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
159061 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__multf3" } } },159009 .{ .type = .usize, .kind = .{ .extern_func = "__multf3" } },
159062 .unused,159010 .unused,
159063 .unused,159011 .unused,
159064 .unused,159012 .unused,
...@@ -160939,7 +160887,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -160939,7 +160887,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
160939 },160887 },
160940 .call_frame = .{ .alignment = .@"16" },160888 .call_frame = .{ .alignment = .@"16" },
160941 .extra_temps = .{160889 .extra_temps = .{
160942 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = @tagName(symbol) } } },160890 .{ .type = .usize, .kind = .{ .extern_func = @tagName(symbol) } },
160943 .unused,160891 .unused,
160944 .unused,160892 .unused,
160945 .unused,160893 .unused,
...@@ -160988,7 +160936,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -160988,7 +160936,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
160988 },160936 },
160989 .call_frame = .{ .alignment = .@"32" },160937 .call_frame = .{ .alignment = .@"32" },
160990 .extra_temps = .{160938 .extra_temps = .{
160991 .{ .type = .usize, .kind = .{ .lazy_symbol = .{ .kind = .code, .ref = .src0 } } },160939 .{ .type = .usize, .kind = .{ .lazy_sym = .{ .kind = .code, .ref = .src0 } } },
160992 .unused,160940 .unused,
160993 .unused,160941 .unused,
160994 .unused,160942 .unused,
...@@ -161014,7 +160962,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -161014,7 +160962,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
161014 },160962 },
161015 .call_frame = .{ .alignment = .@"16" },160963 .call_frame = .{ .alignment = .@"16" },
161016 .extra_temps = .{160964 .extra_temps = .{
161017 .{ .type = .usize, .kind = .{ .lazy_symbol = .{ .kind = .code, .ref = .src0 } } },160965 .{ .type = .usize, .kind = .{ .lazy_sym = .{ .kind = .code, .ref = .src0 } } },
161018 .unused,160966 .unused,
161019 .unused,160967 .unused,
161020 .unused,160968 .unused,
...@@ -161039,7 +160987,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -161039,7 +160987,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
161039 },160987 },
161040 .call_frame = .{ .alignment = .@"8" },160988 .call_frame = .{ .alignment = .@"8" },
161041 .extra_temps = .{160989 .extra_temps = .{
161042 .{ .type = .usize, .kind = .{ .lazy_symbol = .{ .kind = .code, .ref = .src0 } } },160990 .{ .type = .usize, .kind = .{ .lazy_sym = .{ .kind = .code, .ref = .src0 } } },
161043 .unused,160991 .unused,
161044 .unused,160992 .unused,
161045 .unused,160993 .unused,
...@@ -161079,7 +161027,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -161079,7 +161027,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
161079 },161027 },
161080 .call_frame = .{ .alignment = .@"32" },161028 .call_frame = .{ .alignment = .@"32" },
161081 .extra_temps = .{161029 .extra_temps = .{
161082 .{ .type = .usize, .kind = .{ .lazy_symbol = .{ .kind = .code, .ref = .src0 } } },161030 .{ .type = .usize, .kind = .{ .lazy_sym = .{ .kind = .code, .ref = .src0 } } },
161083 .unused,161031 .unused,
161084 .unused,161032 .unused,
161085 .unused,161033 .unused,
...@@ -161104,7 +161052,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -161104,7 +161052,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
161104 },161052 },
161105 .call_frame = .{ .alignment = .@"16" },161053 .call_frame = .{ .alignment = .@"16" },
161106 .extra_temps = .{161054 .extra_temps = .{
161107 .{ .type = .usize, .kind = .{ .lazy_symbol = .{ .kind = .code, .ref = .src0 } } },161055 .{ .type = .usize, .kind = .{ .lazy_sym = .{ .kind = .code, .ref = .src0 } } },
161108 .unused,161056 .unused,
161109 .unused,161057 .unused,
161110 .unused,161058 .unused,
...@@ -161128,7 +161076,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -161128,7 +161076,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
161128 },161076 },
161129 .call_frame = .{ .alignment = .@"8" },161077 .call_frame = .{ .alignment = .@"8" },
161130 .extra_temps = .{161078 .extra_temps = .{
161131 .{ .type = .usize, .kind = .{ .lazy_symbol = .{ .kind = .code, .ref = .src0 } } },161079 .{ .type = .usize, .kind = .{ .lazy_sym = .{ .kind = .code, .ref = .src0 } } },
161132 .unused,161080 .unused,
161133 .unused,161081 .unused,
161134 .unused,161082 .unused,
...@@ -161167,7 +161115,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -161167,7 +161115,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
161167 .{ .src = .{ .to_gpr, .none, .none } },161115 .{ .src = .{ .to_gpr, .none, .none } },
161168 },161116 },
161169 .extra_temps = .{161117 .extra_temps = .{
161170 .{ .type = .anyerror, .kind = .{ .lazy_symbol = .{ .kind = .const_data } } },161118 .{ .type = .anyerror, .kind = .{ .lazy_sym = .{ .kind = .const_data } } },
161171 .{ .type = .u32, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } } },161119 .{ .type = .u32, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } } },
161172 .unused,161120 .unused,
161173 .unused,161121 .unused,
...@@ -161196,7 +161144,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -161196,7 +161144,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
161196 .{ .src = .{ .to_gpr, .none, .none } },161144 .{ .src = .{ .to_gpr, .none, .none } },
161197 },161145 },
161198 .extra_temps = .{161146 .extra_temps = .{
161199 .{ .type = .anyerror, .kind = .{ .lazy_symbol = .{ .kind = .const_data } } },161147 .{ .type = .anyerror, .kind = .{ .lazy_sym = .{ .kind = .const_data } } },
161200 .{ .type = .u32, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } } },161148 .{ .type = .u32, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } } },
161201 .unused,161149 .unused,
161202 .unused,161150 .unused,
...@@ -161225,7 +161173,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -161225,7 +161173,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
161225 .{ .src = .{ .to_gpr, .none, .none } },161173 .{ .src = .{ .to_gpr, .none, .none } },
161226 },161174 },
161227 .extra_temps = .{161175 .extra_temps = .{
161228 .{ .type = .anyerror, .kind = .{ .lazy_symbol = .{ .kind = .const_data } } },161176 .{ .type = .anyerror, .kind = .{ .lazy_sym = .{ .kind = .const_data } } },
161229 .{ .type = .u32, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } } },161177 .{ .type = .u32, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } } },
161230 .unused,161178 .unused,
161231 .unused,161179 .unused,
...@@ -161276,7 +161224,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -161276,7 +161224,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
161276 },161224 },
161277 .call_frame = .{ .alignment = .@"32" },161225 .call_frame = .{ .alignment = .@"32" },
161278 .extra_temps = .{161226 .extra_temps = .{
161279 .{ .type = .usize, .kind = .{ .lazy_symbol = .{ .kind = .code, .ref = .src1 } } },161227 .{ .type = .usize, .kind = .{ .lazy_sym = .{ .kind = .code, .ref = .src1 } } },
161280 .unused,161228 .unused,
161281 .unused,161229 .unused,
161282 .unused,161230 .unused,
...@@ -161302,7 +161250,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -161302,7 +161250,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
161302 },161250 },
161303 .call_frame = .{ .alignment = .@"16" },161251 .call_frame = .{ .alignment = .@"16" },
161304 .extra_temps = .{161252 .extra_temps = .{
161305 .{ .type = .usize, .kind = .{ .lazy_symbol = .{ .kind = .code, .ref = .src1 } } },161253 .{ .type = .usize, .kind = .{ .lazy_sym = .{ .kind = .code, .ref = .src1 } } },
161306 .unused,161254 .unused,
161307 .unused,161255 .unused,
161308 .unused,161256 .unused,
...@@ -161327,7 +161275,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -161327,7 +161275,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
161327 },161275 },
161328 .call_frame = .{ .alignment = .@"8" },161276 .call_frame = .{ .alignment = .@"8" },
161329 .extra_temps = .{161277 .extra_temps = .{
161330 .{ .type = .usize, .kind = .{ .lazy_symbol = .{ .kind = .code, .ref = .src1 } } },161278 .{ .type = .usize, .kind = .{ .lazy_sym = .{ .kind = .code, .ref = .src1 } } },
161331 .unused,161279 .unused,
161332 .unused,161280 .unused,
161333 .unused,161281 .unused,
...@@ -161523,7 +161471,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -161523,7 +161471,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
161523 },161471 },
161524 .call_frame = .{ .alignment = .@"16" },161472 .call_frame = .{ .alignment = .@"16" },
161525 .extra_temps = .{161473 .extra_temps = .{
161526 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmah" } } },161474 .{ .type = .usize, .kind = .{ .extern_func = "__fmah" } },
161527 .unused,161475 .unused,
161528 .unused,161476 .unused,
161529 .unused,161477 .unused,
...@@ -161666,7 +161614,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -161666,7 +161614,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
161666 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },161614 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
161667 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },161615 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
161668 .{ .type = .f16, .kind = .{ .reg = .xmm2 } },161616 .{ .type = .f16, .kind = .{ .reg = .xmm2 } },
161669 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmah" } } },161617 .{ .type = .usize, .kind = .{ .extern_func = "__fmah" } },
161670 .unused,161618 .unused,
161671 .unused,161619 .unused,
161672 .unused,161620 .unused,
...@@ -161703,7 +161651,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -161703,7 +161651,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
161703 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },161651 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
161704 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },161652 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
161705 .{ .type = .f16, .kind = .{ .reg = .xmm2 } },161653 .{ .type = .f16, .kind = .{ .reg = .xmm2 } },
161706 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmah" } } },161654 .{ .type = .usize, .kind = .{ .extern_func = "__fmah" } },
161707 .unused,161655 .unused,
161708 .unused,161656 .unused,
161709 .unused,161657 .unused,
...@@ -161742,7 +161690,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -161742,7 +161690,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
161742 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },161690 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
161743 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },161691 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
161744 .{ .type = .f16, .kind = .{ .reg = .xmm2 } },161692 .{ .type = .f16, .kind = .{ .reg = .xmm2 } },
161745 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmah" } } },161693 .{ .type = .usize, .kind = .{ .extern_func = "__fmah" } },
161746 .{ .type = .f16, .kind = .{ .reg = .ax } },161694 .{ .type = .f16, .kind = .{ .reg = .ax } },
161747 .unused,161695 .unused,
161748 .unused,161696 .unused,
...@@ -161784,7 +161732,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -161784,7 +161732,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
161784 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },161732 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
161785 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },161733 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
161786 .{ .type = .f16, .kind = .{ .reg = .xmm2 } },161734 .{ .type = .f16, .kind = .{ .reg = .xmm2 } },
161787 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmah" } } },161735 .{ .type = .usize, .kind = .{ .extern_func = "__fmah" } },
161788 .unused,161736 .unused,
161789 .unused,161737 .unused,
161790 .unused,161738 .unused,
...@@ -161872,7 +161820,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -161872,7 +161820,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
161872 },161820 },
161873 .call_frame = .{ .alignment = .@"16" },161821 .call_frame = .{ .alignment = .@"16" },
161874 .extra_temps = .{161822 .extra_temps = .{
161875 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmaf" } } },161823 .{ .type = .usize, .kind = .{ .extern_func = "fmaf" } },
161876 .unused,161824 .unused,
161877 .unused,161825 .unused,
161878 .unused,161826 .unused,
...@@ -162038,7 +161986,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -162038,7 +161986,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
162038 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },161986 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
162039 .{ .type = .f32, .kind = .{ .reg = .xmm1 } },161987 .{ .type = .f32, .kind = .{ .reg = .xmm1 } },
162040 .{ .type = .f32, .kind = .{ .reg = .xmm2 } },161988 .{ .type = .f32, .kind = .{ .reg = .xmm2 } },
162041 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmaf" } } },161989 .{ .type = .usize, .kind = .{ .extern_func = "fmaf" } },
162042 .unused,161990 .unused,
162043 .unused,161991 .unused,
162044 .unused,161992 .unused,
...@@ -162074,7 +162022,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -162074,7 +162022,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
162074 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },162022 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
162075 .{ .type = .f32, .kind = .{ .reg = .xmm1 } },162023 .{ .type = .f32, .kind = .{ .reg = .xmm1 } },
162076 .{ .type = .f32, .kind = .{ .reg = .xmm2 } },162024 .{ .type = .f32, .kind = .{ .reg = .xmm2 } },
162077 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmaf" } } },162025 .{ .type = .usize, .kind = .{ .extern_func = "fmaf" } },
162078 .unused,162026 .unused,
162079 .unused,162027 .unused,
162080 .unused,162028 .unused,
...@@ -162156,7 +162104,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -162156,7 +162104,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
162156 },162104 },
162157 .call_frame = .{ .alignment = .@"16" },162105 .call_frame = .{ .alignment = .@"16" },
162158 .extra_temps = .{162106 .extra_temps = .{
162159 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fma" } } },162107 .{ .type = .usize, .kind = .{ .extern_func = "fma" } },
162160 .unused,162108 .unused,
162161 .unused,162109 .unused,
162162 .unused,162110 .unused,
...@@ -162322,7 +162270,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -162322,7 +162270,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
162322 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },162270 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
162323 .{ .type = .f64, .kind = .{ .reg = .xmm1 } },162271 .{ .type = .f64, .kind = .{ .reg = .xmm1 } },
162324 .{ .type = .f64, .kind = .{ .reg = .xmm2 } },162272 .{ .type = .f64, .kind = .{ .reg = .xmm2 } },
162325 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fma" } } },162273 .{ .type = .usize, .kind = .{ .extern_func = "fma" } },
162326 .unused,162274 .unused,
162327 .unused,162275 .unused,
162328 .unused,162276 .unused,
...@@ -162358,7 +162306,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -162358,7 +162306,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
162358 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },162306 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
162359 .{ .type = .f64, .kind = .{ .reg = .xmm1 } },162307 .{ .type = .f64, .kind = .{ .reg = .xmm1 } },
162360 .{ .type = .f64, .kind = .{ .reg = .xmm2 } },162308 .{ .type = .f64, .kind = .{ .reg = .xmm2 } },
162361 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fma" } } },162309 .{ .type = .usize, .kind = .{ .extern_func = "fma" } },
162362 .unused,162310 .unused,
162363 .unused,162311 .unused,
162364 .unused,162312 .unused,
...@@ -162394,7 +162342,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -162394,7 +162342,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
162394 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },162342 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
162395 .{ .type = .f64, .kind = .{ .reg = .xmm1 } },162343 .{ .type = .f64, .kind = .{ .reg = .xmm1 } },
162396 .{ .type = .f64, .kind = .{ .reg = .xmm2 } },162344 .{ .type = .f64, .kind = .{ .reg = .xmm2 } },
162397 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fma" } } },162345 .{ .type = .usize, .kind = .{ .extern_func = "fma" } },
162398 .unused,162346 .unused,
162399 .unused,162347 .unused,
162400 .unused,162348 .unused,
...@@ -162431,7 +162379,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -162431,7 +162379,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
162431 .extra_temps = .{162379 .extra_temps = .{
162432 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },162380 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
162433 .{ .type = .f80, .kind = .{ .frame = .call_frame } },162381 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
162434 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmax" } } },162382 .{ .type = .usize, .kind = .{ .extern_func = "__fmax" } },
162435 .unused,162383 .unused,
162436 .unused,162384 .unused,
162437 .unused,162385 .unused,
...@@ -162467,7 +162415,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -162467,7 +162415,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
162467 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },162415 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
162468 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },162416 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
162469 .{ .type = .f80, .kind = .{ .frame = .call_frame } },162417 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
162470 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmax" } } },162418 .{ .type = .usize, .kind = .{ .extern_func = "__fmax" } },
162471 .unused,162419 .unused,
162472 .unused,162420 .unused,
162473 .unused,162421 .unused,
...@@ -162504,7 +162452,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -162504,7 +162452,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
162504 },162452 },
162505 .call_frame = .{ .alignment = .@"16" },162453 .call_frame = .{ .alignment = .@"16" },
162506 .extra_temps = .{162454 .extra_temps = .{
162507 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmaq" } } },162455 .{ .type = .usize, .kind = .{ .extern_func = "fmaq" } },
162508 .unused,162456 .unused,
162509 .unused,162457 .unused,
162510 .unused,162458 .unused,
...@@ -162537,7 +162485,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -162537,7 +162485,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
162537 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },162485 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
162538 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },162486 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
162539 .{ .type = .f128, .kind = .{ .reg = .xmm2 } },162487 .{ .type = .f128, .kind = .{ .reg = .xmm2 } },
162540 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmaq" } } },162488 .{ .type = .usize, .kind = .{ .extern_func = "fmaq" } },
162541 .unused,162489 .unused,
162542 .unused,162490 .unused,
162543 .unused,162491 .unused,
...@@ -162573,7 +162521,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -162573,7 +162521,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
162573 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },162521 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
162574 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },162522 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
162575 .{ .type = .f128, .kind = .{ .reg = .xmm2 } },162523 .{ .type = .f128, .kind = .{ .reg = .xmm2 } },
162576 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmaq" } } },162524 .{ .type = .usize, .kind = .{ .extern_func = "fmaq" } },
162577 .unused,162525 .unused,
162578 .unused,162526 .unused,
162579 .unused,162527 .unused,
...@@ -162609,7 +162557,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -162609,7 +162557,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
162609 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },162557 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
162610 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },162558 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
162611 .{ .type = .f128, .kind = .{ .reg = .xmm2 } },162559 .{ .type = .f128, .kind = .{ .reg = .xmm2 } },
162612 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmaq" } } },162560 .{ .type = .usize, .kind = .{ .extern_func = "fmaq" } },
162613 .unused,162561 .unused,
162614 .unused,162562 .unused,
162615 .unused,162563 .unused,
...@@ -162663,7 +162611,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -162663,7 +162611,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
162663 .{ .src = .{ .to_gpr, .none, .none } },162611 .{ .src = .{ .to_gpr, .none, .none } },
162664 },162612 },
162665 .extra_temps = .{162613 .extra_temps = .{
162666 .{ .type = .anyerror, .kind = .{ .lazy_symbol = .{ .kind = .const_data } } },162614 .{ .type = .anyerror, .kind = .{ .lazy_sym = .{ .kind = .const_data } } },
162667 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },162615 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
162668 .unused,162616 .unused,
162669 .unused,162617 .unused,
...@@ -162687,7 +162635,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -162687,7 +162635,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
162687 .{ .src = .{ .to_gpr, .none, .none } },162635 .{ .src = .{ .to_gpr, .none, .none } },
162688 },162636 },
162689 .extra_temps = .{162637 .extra_temps = .{
162690 .{ .type = .anyerror, .kind = .{ .lazy_symbol = .{ .kind = .const_data } } },162638 .{ .type = .anyerror, .kind = .{ .lazy_sym = .{ .kind = .const_data } } },
162691 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },162639 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
162692 .unused,162640 .unused,
162693 .unused,162641 .unused,
...@@ -162711,7 +162659,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -162711,7 +162659,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
162711 .{ .src = .{ .to_gpr, .none, .none } },162659 .{ .src = .{ .to_gpr, .none, .none } },
162712 },162660 },
162713 .extra_temps = .{162661 .extra_temps = .{
162714 .{ .type = .anyerror, .kind = .{ .lazy_symbol = .{ .kind = .const_data } } },162662 .{ .type = .anyerror, .kind = .{ .lazy_sym = .{ .kind = .const_data } } },
162715 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },162663 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
162716 .unused,162664 .unused,
162717 .unused,162665 .unused,
...@@ -163402,65 +163350,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -163402,65 +163350,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
163402 };163350 };
163403 for (ops) |op| try op.die(cg);163351 for (ops) |op| try op.die(cg);
163404 },163352 },
163405 .runtime_nav_ptr => switch (cg.bin_file.tag) {163353 .runtime_nav_ptr => {
163406 .elf, .macho => {163354 const ty_nav = air_datas[@intFromEnum(inst)].ty_nav;
163407 const ty_nav = air_datas[@intFromEnum(inst)].ty_nav;163355 const is_threadlocal = ip.getNav(ty_nav.nav).isThreadlocal(ip);
163408163356 if (is_threadlocal) if (cg.mod.pic) {
163409 const nav = ip.getNav(ty_nav.nav);163357 try cg.spillRegisters(&.{ .rdi, .rax });
163410 const sym_index, const relocation = sym: {163358 } else {
163411 if (cg.bin_file.cast(.elf)) |elf_file| {163359 try cg.spillRegisters(&.{.rax});
163412 const zo = elf_file.zigObjectPtr().?;163360 };
163413 if (nav.getExtern(ip)) |e| {163361 var res = try cg.tempInit(.fromInterned(ty_nav.ty), .{ .lea_nav = ty_nav.nav });
163414 const sym = try elf_file.getGlobalSymbol(nav.name.toSlice(ip), e.lib_name.toSlice(ip));163362 if (is_threadlocal) while (try res.toRegClass(true, .general_purpose, cg)) {};
163415 linkage: switch (e.linkage) {163363 try res.finish(inst, &.{}, &.{}, cg);
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}),
163464 },163364 },
163465 .c_va_arg => try cg.airVaArg(inst),163365 .c_va_arg => try cg.airVaArg(inst),
163466 .c_va_copy => try cg.airVaCopy(inst),163366 .c_va_copy => try cg.airVaCopy(inst),
...@@ -164116,11 +164016,11 @@ fn airFptrunc(self: *CodeGen, inst: Air.Inst.Index) !void {...@@ -164116,11 +164016,11 @@ fn airFptrunc(self: *CodeGen, inst: Air.Inst.Index) !void {
164116 },164016 },
164117 else => unreachable,164017 else => unreachable,
164118 }) {164018 }) {
164119 var callee_buf: ["__trunc?f?f2".len]u8 = undefined;164019 var sym_buf: ["__trunc?f?f2".len]u8 = undefined;
164120 break :result try self.genCall(.{ .lib = .{164020 break :result try self.genCall(.{ .extern_func = .{
164121 .return_type = self.floatCompilerRtAbiType(dst_ty, src_ty).toIntern(),164021 .return_type = self.floatCompilerRtAbiType(dst_ty, src_ty).toIntern(),
164122 .param_types = &.{self.floatCompilerRtAbiType(src_ty, dst_ty).toIntern()},164022 .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", .{
164124 floatCompilerRtAbiName(src_bits),164024 floatCompilerRtAbiName(src_bits),
164125 floatCompilerRtAbiName(dst_bits),164025 floatCompilerRtAbiName(dst_bits),
164126 }) catch unreachable,164026 }) catch unreachable,
...@@ -164220,11 +164120,11 @@ fn airFpext(self: *CodeGen, inst: Air.Inst.Index) !void {...@@ -164220,11 +164120,11 @@ fn airFpext(self: *CodeGen, inst: Air.Inst.Index) !void {
164220 else => unreachable,164120 else => unreachable,
164221 }) {164121 }) {
164222 if (dst_ty.isVector(zcu)) break :result null;164122 if (dst_ty.isVector(zcu)) break :result null;
164223 var callee_buf: ["__extend?f?f2".len]u8 = undefined;164123 var sym_buf: ["__extend?f?f2".len]u8 = undefined;
164224 break :result try self.genCall(.{ .lib = .{164124 break :result try self.genCall(.{ .extern_func = .{
164225 .return_type = self.floatCompilerRtAbiType(dst_scalar_ty, src_scalar_ty).toIntern(),164125 .return_type = self.floatCompilerRtAbiType(dst_scalar_ty, src_scalar_ty).toIntern(),
164226 .param_types = &.{self.floatCompilerRtAbiType(src_scalar_ty, dst_scalar_ty).toIntern()},164126 .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", .{
164228 floatCompilerRtAbiName(src_bits),164128 floatCompilerRtAbiName(src_bits),
164229 floatCompilerRtAbiName(dst_bits),164129 floatCompilerRtAbiName(dst_bits),
164230 }) catch unreachable,164130 }) catch unreachable,
...@@ -164661,7 +164561,7 @@ fn airTrunc(self: *CodeGen, inst: Air.Inst.Index) !void {...@@ -164661,7 +164561,7 @@ fn airTrunc(self: *CodeGen, inst: Air.Inst.Index) !void {
164661 .storage = .{ .repeated_elem = mask_val.ip_index },164561 .storage = .{ .repeated_elem = mask_val.ip_index },
164662 } });164562 } });
164663164563
164664 const splat_mcv = try self.genTypedValue(.fromInterned(splat_val));164564 const splat_mcv = try self.lowerValue(.fromInterned(splat_val));
164665 const splat_addr_mcv: MCValue = switch (splat_mcv) {164565 const splat_addr_mcv: MCValue = switch (splat_mcv) {
164666 .memory, .indirect, .load_frame => splat_mcv.address(),164566 .memory, .indirect, .load_frame => splat_mcv.address(),
164667 else => .{ .register = try self.copyToTmpRegister(.usize, splat_mcv.address()) },164567 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...@@ -164860,7 +164760,7 @@ fn airMulDivBinOp(self: *CodeGen, inst: Air.Inst.Index, tag: Air.Inst.Tag) !void
164860 .mul, .mul_wrap => {},164760 .mul, .mul_wrap => {},
164861 .div_trunc, .div_floor, .div_exact, .rem, .mod => {164761 .div_trunc, .div_floor, .div_exact, .rem, .mod => {
164862 const signed = dst_ty.isSignedInt(zcu);164762 const signed = dst_ty.isSignedInt(zcu);
164863 var callee_buf: ["__udiv?i3".len]u8 = undefined;164763 var sym_buf: ["__udiv?i3".len]u8 = undefined;
164864 const signed_div_floor_state: struct {164764 const signed_div_floor_state: struct {
164865 frame_index: FrameIndex,164765 frame_index: FrameIndex,
164866 state: State,164766 state: State,
...@@ -164879,7 +164779,7 @@ fn airMulDivBinOp(self: *CodeGen, inst: Air.Inst.Index, tag: Air.Inst.Tag) !void...@@ -164879,7 +164779,7 @@ fn airMulDivBinOp(self: *CodeGen, inst: Air.Inst.Index, tag: Air.Inst.Tag) !void
164879164779
164880 const lhs_mcv = try self.resolveInst(bin_op.lhs);164780 const lhs_mcv = try self.resolveInst(bin_op.lhs);
164881 const mat_lhs_mcv = switch (lhs_mcv) {164781 const mat_lhs_mcv = switch (lhs_mcv) {
164882 .load_symbol => mat_lhs_mcv: {164782 .load_nav, .load_uav, .load_lazy_sym => mat_lhs_mcv: {
164883 // TODO clean this up!164783 // TODO clean this up!
164884 const addr_reg = try self.copyToTmpRegister(.usize, lhs_mcv.address());164784 const addr_reg = try self.copyToTmpRegister(.usize, lhs_mcv.address());
164885 break :mat_lhs_mcv MCValue{ .indirect = .{ .reg = addr_reg } };164785 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...@@ -164903,7 +164803,7 @@ fn airMulDivBinOp(self: *CodeGen, inst: Air.Inst.Index, tag: Air.Inst.Tag) !void
164903164803
164904 const rhs_mcv = try self.resolveInst(bin_op.rhs);164804 const rhs_mcv = try self.resolveInst(bin_op.rhs);
164905 const mat_rhs_mcv = switch (rhs_mcv) {164805 const mat_rhs_mcv = switch (rhs_mcv) {
164906 .load_symbol => mat_rhs_mcv: {164806 .load_nav, .load_uav, .load_lazy_sym => mat_rhs_mcv: {
164907 // TODO clean this up!164807 // TODO clean this up!
164908 const addr_reg = try self.copyToTmpRegister(.usize, rhs_mcv.address());164808 const addr_reg = try self.copyToTmpRegister(.usize, rhs_mcv.address());
164909 break :mat_rhs_mcv MCValue{ .indirect = .{ .reg = addr_reg } };164809 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...@@ -164930,10 +164830,10 @@ fn airMulDivBinOp(self: *CodeGen, inst: Air.Inst.Index, tag: Air.Inst.Tag) !void
164930 break :state .{ .frame_index = frame_index, .state = state, .reloc = reloc };164830 break :state .{ .frame_index = frame_index, .state = state, .reloc = reloc };
164931 } else undefined;164831 } else undefined;
164932 const call_mcv = try self.genCall(164832 const call_mcv = try self.genCall(
164933 .{ .lib = .{164833 .{ .extern_func = .{
164934 .return_type = dst_ty.toIntern(),164834 .return_type = dst_ty.toIntern(),
164935 .param_types = &.{ src_ty.toIntern(), src_ty.toIntern() },164835 .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", .{
164937 if (signed) "" else "u",164837 if (signed) "" else "u",
164938 switch (tag) {164838 switch (tag) {
164939 .div_trunc, .div_exact => "div",164839 .div_trunc, .div_exact => "div",
...@@ -164967,10 +164867,10 @@ fn airMulDivBinOp(self: *CodeGen, inst: Air.Inst.Index, tag: Air.Inst.Tag) !void...@@ -164967,10 +164867,10 @@ fn airMulDivBinOp(self: *CodeGen, inst: Air.Inst.Index, tag: Air.Inst.Tag) !void
164967 });164867 });
164968 self.performReloc(signed_div_floor_state.reloc);164868 self.performReloc(signed_div_floor_state.reloc);
164969 const dst_mcv = try self.genCall(164869 const dst_mcv = try self.genCall(
164970 .{ .lib = .{164870 .{ .extern_func = .{
164971 .return_type = dst_ty.toIntern(),164871 .return_type = dst_ty.toIntern(),
164972 .param_types = &.{ src_ty.toIntern(), src_ty.toIntern() },164872 .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", .{
164974 intCompilerRtAbiName(@intCast(dst_ty.bitSize(zcu))),164874 intCompilerRtAbiName(@intCast(dst_ty.bitSize(zcu))),
164975 }) catch unreachable,164875 }) catch unreachable,
164976 } },164876 } },
...@@ -165004,7 +164904,7 @@ fn airMulDivBinOp(self: *CodeGen, inst: Air.Inst.Index, tag: Air.Inst.Tag) !void...@@ -165004,7 +164904,7 @@ fn airMulDivBinOp(self: *CodeGen, inst: Air.Inst.Index, tag: Air.Inst.Tag) !void
165004164904
165005 const rhs_mcv = try self.resolveInst(bin_op.rhs);164905 const rhs_mcv = try self.resolveInst(bin_op.rhs);
165006 const mat_rhs_mcv = switch (rhs_mcv) {164906 const mat_rhs_mcv = switch (rhs_mcv) {
165007 .load_symbol => mat_rhs_mcv: {164907 .load_nav, .load_uav, .load_lazy_sym => mat_rhs_mcv: {
165008 // TODO clean this up!164908 // TODO clean this up!
165009 const addr_reg = try self.copyToTmpRegister(.usize, rhs_mcv.address());164909 const addr_reg = try self.copyToTmpRegister(.usize, rhs_mcv.address());
165010 break :mat_rhs_mcv MCValue{ .indirect = .{ .reg = addr_reg } };164910 break :mat_rhs_mcv MCValue{ .indirect = .{ .reg = addr_reg } };
...@@ -165218,10 +165118,10 @@ fn airMulSat(self: *CodeGen, inst: Air.Inst.Index) !void {...@@ -165218,10 +165118,10 @@ fn airMulSat(self: *CodeGen, inst: Air.Inst.Index) !void {
165218 const ptr_c_int = try pt.singleMutPtrType(.c_int);165118 const ptr_c_int = try pt.singleMutPtrType(.c_int);
165219 const overflow = try self.allocTempRegOrMem(.c_int, false);165119 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 = .{
165222 .return_type = .i128_type,165122 .return_type = .i128_type,
165223 .param_types = &.{ .i128_type, .i128_type, ptr_c_int.toIntern() },165123 .param_types = &.{ .i128_type, .i128_type, ptr_c_int.toIntern() },
165224 .callee = "__muloti4",165124 .sym = "__muloti4",
165225 } }, &.{ .i128, .i128, ptr_c_int }, &.{165125 } }, &.{ .i128, .i128, ptr_c_int }, &.{
165226 .{ .air_ref = bin_op.lhs },165126 .{ .air_ref = bin_op.lhs },
165227 .{ .air_ref = bin_op.rhs },165127 .{ .air_ref = bin_op.rhs },
...@@ -165236,7 +165136,7 @@ fn airMulSat(self: *CodeGen, inst: Air.Inst.Index) !void {...@@ -165236,7 +165136,7 @@ fn airMulSat(self: *CodeGen, inst: Air.Inst.Index) !void {
165236165136
165237 const lhs_mcv = try self.resolveInst(bin_op.lhs);165137 const lhs_mcv = try self.resolveInst(bin_op.lhs);
165238 const mat_lhs_mcv = switch (lhs_mcv) {165138 const mat_lhs_mcv = switch (lhs_mcv) {
165239 .load_symbol => mat_lhs_mcv: {165139 .load_nav, .load_uav, .load_lazy_sym => mat_lhs_mcv: {
165240 // TODO clean this up!165140 // TODO clean this up!
165241 const addr_reg = try self.copyToTmpRegister(.usize, lhs_mcv.address());165141 const addr_reg = try self.copyToTmpRegister(.usize, lhs_mcv.address());
165242 break :mat_lhs_mcv MCValue{ .indirect = .{ .reg = addr_reg } };165142 break :mat_lhs_mcv MCValue{ .indirect = .{ .reg = addr_reg } };
...@@ -165260,7 +165160,7 @@ fn airMulSat(self: *CodeGen, inst: Air.Inst.Index) !void {...@@ -165260,7 +165160,7 @@ fn airMulSat(self: *CodeGen, inst: Air.Inst.Index) !void {
165260165160
165261 const rhs_mcv = try self.resolveInst(bin_op.rhs);165161 const rhs_mcv = try self.resolveInst(bin_op.rhs);
165262 const mat_rhs_mcv = switch (rhs_mcv) {165162 const mat_rhs_mcv = switch (rhs_mcv) {
165263 .load_symbol => mat_rhs_mcv: {165163 .load_nav, .load_uav, .load_lazy_sym => mat_rhs_mcv: {
165264 // TODO clean this up!165164 // TODO clean this up!
165265 const addr_reg = try self.copyToTmpRegister(.usize, rhs_mcv.address());165165 const addr_reg = try self.copyToTmpRegister(.usize, rhs_mcv.address());
165266 break :mat_rhs_mcv MCValue{ .indirect = .{ .reg = addr_reg } };165166 break :mat_rhs_mcv MCValue{ .indirect = .{ .reg = addr_reg } };
...@@ -165734,10 +165634,10 @@ fn airMulWithOverflow(self: *CodeGen, inst: Air.Inst.Index) !void {...@@ -165734,10 +165634,10 @@ fn airMulWithOverflow(self: *CodeGen, inst: Air.Inst.Index) !void {
165734 .signed => {165634 .signed => {
165735 const ptr_c_int = try pt.singleMutPtrType(.c_int);165635 const ptr_c_int = try pt.singleMutPtrType(.c_int);
165736 const overflow = try self.allocTempRegOrMem(.c_int, false);165636 const overflow = try self.allocTempRegOrMem(.c_int, false);
165737 const result = try self.genCall(.{ .lib = .{165637 const result = try self.genCall(.{ .extern_func = .{
165738 .return_type = .i128_type,165638 .return_type = .i128_type,
165739 .param_types = &.{ .i128_type, .i128_type, ptr_c_int.toIntern() },165639 .param_types = &.{ .i128_type, .i128_type, ptr_c_int.toIntern() },
165740 .callee = "__muloti4",165640 .sym = "__muloti4",
165741 } }, &.{ .i128, .i128, ptr_c_int }, &.{165641 } }, &.{ .i128, .i128, ptr_c_int }, &.{
165742 .{ .air_ref = bin_op.lhs },165642 .{ .air_ref = bin_op.lhs },
165743 .{ .air_ref = bin_op.rhs },165643 .{ .air_ref = bin_op.rhs },
...@@ -165791,7 +165691,7 @@ fn airMulWithOverflow(self: *CodeGen, inst: Air.Inst.Index) !void {...@@ -165791,7 +165691,7 @@ fn airMulWithOverflow(self: *CodeGen, inst: Air.Inst.Index) !void {
165791 break :mat_lhs_mcv mat_lhs_mcv;165691 break :mat_lhs_mcv mat_lhs_mcv;
165792 },165692 },
165793 },165693 },
165794 .load_symbol => {165694 .load_nav, .load_uav, .load_lazy_sym => {
165795 // TODO clean this up!165695 // TODO clean this up!
165796 const addr_reg = try self.copyToTmpRegister(.usize, lhs_mcv.address());165696 const addr_reg = try self.copyToTmpRegister(.usize, lhs_mcv.address());
165797 break :mat_lhs_mcv MCValue{ .indirect = .{ .reg = addr_reg } };165697 break :mat_lhs_mcv MCValue{ .indirect = .{ .reg = addr_reg } };
...@@ -165815,7 +165715,7 @@ fn airMulWithOverflow(self: *CodeGen, inst: Air.Inst.Index) !void {...@@ -165815,7 +165715,7 @@ fn airMulWithOverflow(self: *CodeGen, inst: Air.Inst.Index) !void {
165815 break :mat_rhs_mcv mat_rhs_mcv;165715 break :mat_rhs_mcv mat_rhs_mcv;
165816 },165716 },
165817 },165717 },
165818 .load_symbol => {165718 .load_nav, .load_uav, .load_lazy_sym => {
165819 // TODO clean this up!165719 // TODO clean this up!
165820 const addr_reg = try self.copyToTmpRegister(.usize, rhs_mcv.address());165720 const addr_reg = try self.copyToTmpRegister(.usize, rhs_mcv.address());
165821 break :mat_rhs_mcv MCValue{ .indirect = .{ .reg = addr_reg } };165721 break :mat_rhs_mcv MCValue{ .indirect = .{ .reg = addr_reg } };
...@@ -166291,7 +166191,7 @@ fn airShlShrBinOp(self: *CodeGen, inst: Air.Inst.Index) !void {...@@ -166291,7 +166191,7 @@ fn airShlShrBinOp(self: *CodeGen, inst: Air.Inst.Index) !void {
166291 defer self.register_manager.unlockReg(shift_lock);166191 defer self.register_manager.unlockReg(shift_lock);
166292166192
166293 const mask_ty = try pt.vectorType(.{ .len = 16, .child = .u8_type });166193 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 = .{
166295 .ty = mask_ty.toIntern(),166195 .ty = mask_ty.toIntern(),
166296 .storage = .{ .elems = &([1]InternPool.Index{166196 .storage = .{ .elems = &([1]InternPool.Index{
166297 (try rhs_ty.childType(zcu).maxIntScalar(pt, .u8)).toIntern(),166197 (try rhs_ty.childType(zcu).maxIntScalar(pt, .u8)).toIntern(),
...@@ -166432,7 +166332,7 @@ fn airShlSat(self: *CodeGen, inst: Air.Inst.Index) !void {...@@ -166432,7 +166332,7 @@ fn airShlSat(self: *CodeGen, inst: Air.Inst.Index) !void {
166432 // if lhs is negative, it is min166332 // if lhs is negative, it is min
166433 switch (lhs_ty.intInfo(zcu).signedness) {166333 switch (lhs_ty.intInfo(zcu).signedness) {
166434 .unsigned => {166334 .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));
166436 try self.genCopy(lhs_ty, dst_mcv, bound_mcv, .{});166336 try self.genCopy(lhs_ty, dst_mcv, bound_mcv, .{});
166437 },166337 },
166438 .signed => {166338 .signed => {
...@@ -166441,7 +166341,7 @@ fn airShlSat(self: *CodeGen, inst: Air.Inst.Index) !void {...@@ -166441,7 +166341,7 @@ fn airShlSat(self: *CodeGen, inst: Air.Inst.Index) !void {
166441 // we only need the highest bit so shifting the highest part of lhs_mcv166341 // we only need the highest bit so shifting the highest part of lhs_mcv
166442 // is enough to check the signedness. other parts can be skipped here.166342 // is enough to check the signedness. other parts can be skipped here.
166443 var lhs_temp2 = try self.tempInit(lhs_ty, lhs_mcv);166343 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)));
166445 const sign_cc_temp = lhs_temp2.cmpInts(.lt, &zero_temp, self) catch |err| switch (err) {166345 const sign_cc_temp = lhs_temp2.cmpInts(.lt, &zero_temp, self) catch |err| switch (err) {
166446 error.SelectFailed => unreachable,166346 error.SelectFailed => unreachable,
166447 else => |e| return e,166347 else => |e| return e,
...@@ -166452,13 +166352,13 @@ fn airShlSat(self: *CodeGen, inst: Air.Inst.Index) !void {...@@ -166452,13 +166352,13 @@ fn airShlSat(self: *CodeGen, inst: Air.Inst.Index) !void {
166452 try sign_cc_temp.die(self);166352 try sign_cc_temp.die(self);
166453166353
166454 // if it is negative166354 // 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));
166456 try self.genCopy(lhs_ty, dst_mcv, min_mcv, .{});166356 try self.genCopy(lhs_ty, dst_mcv, min_mcv, .{});
166457 const sign_reloc_br = try self.asmJmpReloc(undefined);166357 const sign_reloc_br = try self.asmJmpReloc(undefined);
166458 self.performReloc(sign_reloc_condbr);166358 self.performReloc(sign_reloc_condbr);
166459166359
166460 // if it is positive166360 // 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));
166462 try self.genCopy(lhs_ty, dst_mcv, max_mcv, .{});166362 try self.genCopy(lhs_ty, dst_mcv, max_mcv, .{});
166463 self.performReloc(sign_reloc_br);166363 self.performReloc(sign_reloc_br);
166464 },166364 },
...@@ -167179,7 +167079,12 @@ fn airArrayElemVal(self: *CodeGen, inst: Air.Inst.Index) !void {...@@ -167179,7 +167079,12 @@ fn airArrayElemVal(self: *CodeGen, inst: Air.Inst.Index) !void {
167179 }.to64(),167079 }.to64(),
167180 ),167080 ),
167181 },167081 },
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) {
167183 .immediate => |index_imm| try self.asmMemoryImmediate(167088 .immediate => |index_imm| try self.asmMemoryImmediate(
167184 .{ ._, .bt },167089 .{ ._, .bt },
167185 .{167090 .{
...@@ -167241,11 +167146,15 @@ fn airArrayElemVal(self: *CodeGen, inst: Air.Inst.Index) !void {...@@ -167241,11 +167146,15 @@ fn airArrayElemVal(self: *CodeGen, inst: Air.Inst.Index) !void {
167241 },167146 },
167242 ),167147 ),
167243 .memory,167148 .memory,
167244 .load_symbol,167149 .load_nav,
167245 .load_direct,167150 .lea_nav,
167246 .load_got,167151 .load_uav,
167152 .lea_uav,
167153 .load_lazy_sym,
167154 .lea_lazy_sym,
167155 .load_extern_func,
167156 .lea_extern_func,
167247 => try self.genSetReg(addr_reg, .usize, array_mcv.address(), .{}),167157 => try self.genSetReg(addr_reg, .usize, array_mcv.address(), .{}),
167248 .lea_symbol, .lea_direct => unreachable,
167249 else => return self.fail("TODO airArrayElemVal_val for {s} of {}", .{167158 else => return self.fail("TODO airArrayElemVal_val for {s} of {}", .{
167250 @tagName(array_mcv), array_ty.fmt(pt),167159 @tagName(array_mcv), array_ty.fmt(pt),
167251 }),167160 }),
...@@ -168346,7 +168255,7 @@ fn floatSign(self: *CodeGen, inst: Air.Inst.Index, tag: Air.Inst.Tag, operand: A...@@ -168346,7 +168255,7 @@ fn floatSign(self: *CodeGen, inst: Air.Inst.Index, tag: Air.Inst.Tag, operand: A
168346 .child = (try pt.intType(.signed, scalar_bits)).ip_index,168255 .child = (try pt.intType(.signed, scalar_bits)).ip_index,
168347 });168256 });
168348168257
168349 const sign_mcv = try self.genTypedValue(switch (tag) {168258 const sign_mcv = try self.lowerValue(switch (tag) {
168350 .neg => try vec_ty.minInt(pt, vec_ty),168259 .neg => try vec_ty.minInt(pt, vec_ty),
168351 .abs => try vec_ty.maxInt(pt, vec_ty),168260 .abs => try vec_ty.maxInt(pt, vec_ty),
168352 else => unreachable,168261 else => unreachable,
...@@ -168488,11 +168397,11 @@ fn genRoundLibcall(self: *CodeGen, ty: Type, src_mcv: MCValue, mode: bits.RoundM...@@ -168488,11 +168397,11 @@ fn genRoundLibcall(self: *CodeGen, ty: Type, src_mcv: MCValue, mode: bits.RoundM
168488 if (ty.zigTypeTag(zcu) != .float)168397 if (ty.zigTypeTag(zcu) != .float)
168489 return self.fail("TODO implement genRound for {}", .{ty.fmt(pt)});168398 return self.fail("TODO implement genRound for {}", .{ty.fmt(pt)});
168490168399
168491 var callee_buf: ["__trunc?".len]u8 = undefined;168400 var sym_buf: ["__trunc?".len]u8 = undefined;
168492 return try self.genCall(.{ .lib = .{168401 return try self.genCall(.{ .extern_func = .{
168493 .return_type = ty.toIntern(),168402 .return_type = ty.toIntern(),
168494 .param_types = &.{ty.toIntern()},168403 .param_types = &.{ty.toIntern()},
168495 .callee = std.fmt.bufPrint(&callee_buf, "{s}{s}{s}", .{168404 .sym = std.fmt.bufPrint(&sym_buf, "{s}{s}{s}", .{
168496 floatLibcAbiPrefix(ty),168405 floatLibcAbiPrefix(ty),
168497 switch (mode.direction) {168406 switch (mode.direction) {
168498 .down => "floor",168407 .down => "floor",
...@@ -168765,11 +168674,11 @@ fn airSqrt(self: *CodeGen, inst: Air.Inst.Index) !void {...@@ -168765,11 +168674,11 @@ fn airSqrt(self: *CodeGen, inst: Air.Inst.Index) !void {
168765 80, 128 => true,168674 80, 128 => true,
168766 else => unreachable,168675 else => unreachable,
168767 }) {168676 }) {
168768 var callee_buf: ["__sqrt?".len]u8 = undefined;168677 var sym_buf: ["__sqrt?".len]u8 = undefined;
168769 break :result try self.genCall(.{ .lib = .{168678 break :result try self.genCall(.{ .extern_func = .{
168770 .return_type = ty.toIntern(),168679 .return_type = ty.toIntern(),
168771 .param_types = &.{ty.toIntern()},168680 .param_types = &.{ty.toIntern()},
168772 .callee = std.fmt.bufPrint(&callee_buf, "{s}sqrt{s}", .{168681 .sym = std.fmt.bufPrint(&sym_buf, "{s}sqrt{s}", .{
168773 floatLibcAbiPrefix(ty),168682 floatLibcAbiPrefix(ty),
168774 floatLibcAbiSuffix(ty),168683 floatLibcAbiSuffix(ty),
168775 }) catch unreachable,168684 }) catch unreachable,
...@@ -168918,11 +168827,11 @@ fn airSqrt(self: *CodeGen, inst: Air.Inst.Index) !void {...@@ -168918,11 +168827,11 @@ fn airSqrt(self: *CodeGen, inst: Air.Inst.Index) !void {
168918fn airUnaryMath(self: *CodeGen, inst: Air.Inst.Index, tag: Air.Inst.Tag) !void {168827fn airUnaryMath(self: *CodeGen, inst: Air.Inst.Index, tag: Air.Inst.Tag) !void {
168919 const un_op = self.air.instructions.items(.data)[@intFromEnum(inst)].un_op;168828 const un_op = self.air.instructions.items(.data)[@intFromEnum(inst)].un_op;
168920 const ty = self.typeOf(un_op);168829 const ty = self.typeOf(un_op);
168921 var callee_buf: ["__round?".len]u8 = undefined;168830 var sym_buf: ["__round?".len]u8 = undefined;
168922 const result = try self.genCall(.{ .lib = .{168831 const result = try self.genCall(.{ .extern_func = .{
168923 .return_type = ty.toIntern(),168832 .return_type = ty.toIntern(),
168924 .param_types = &.{ty.toIntern()},168833 .param_types = &.{ty.toIntern()},
168925 .callee = std.fmt.bufPrint(&callee_buf, "{s}{s}{s}", .{168834 .sym = std.fmt.bufPrint(&sym_buf, "{s}{s}{s}", .{
168926 floatLibcAbiPrefix(ty),168835 floatLibcAbiPrefix(ty),
168927 switch (tag) {168836 switch (tag) {
168928 .sin,168837 .sin,
...@@ -169122,19 +169031,19 @@ fn load(self: *CodeGen, dst_mcv: MCValue, ptr_ty: Type, ptr_mcv: MCValue) InnerE...@@ -169122,19 +169031,19 @@ fn load(self: *CodeGen, dst_mcv: MCValue, ptr_ty: Type, ptr_mcv: MCValue) InnerE
169122 .immediate,169031 .immediate,
169123 .register,169032 .register,
169124 .register_offset,169033 .register_offset,
169125 .lea_symbol,
169126 .lea_pcrel,
169127 .lea_direct,
169128 .lea_got,
169129 .lea_frame,169034 .lea_frame,
169035 .lea_nav,
169036 .lea_uav,
169037 .lea_lazy_sym,
169038 .lea_extern_func,
169130 => try self.genCopy(dst_ty, dst_mcv, ptr_mcv.deref(), .{}),169039 => try self.genCopy(dst_ty, dst_mcv, ptr_mcv.deref(), .{}),
169131 .memory,169040 .memory,
169132 .indirect,169041 .indirect,
169133 .load_symbol,
169134 .load_pcrel,
169135 .load_direct,
169136 .load_got,
169137 .load_frame,169042 .load_frame,
169043 .load_nav,
169044 .load_uav,
169045 .load_lazy_sym,
169046 .load_extern_func,
169138 => {169047 => {
169139 const addr_reg = try self.copyToTmpRegister(ptr_ty, ptr_mcv);169048 const addr_reg = try self.copyToTmpRegister(ptr_ty, ptr_mcv);
169140 const addr_lock = self.register_manager.lockRegAssumeUnused(addr_reg);169049 const addr_lock = self.register_manager.lockRegAssumeUnused(addr_reg);
...@@ -169342,19 +169251,19 @@ fn store(...@@ -169342,19 +169251,19 @@ fn store(
169342 .immediate,169251 .immediate,
169343 .register,169252 .register,
169344 .register_offset,169253 .register_offset,
169345 .lea_symbol,
169346 .lea_pcrel,
169347 .lea_direct,
169348 .lea_got,
169349 .lea_frame,169254 .lea_frame,
169255 .lea_nav,
169256 .lea_uav,
169257 .lea_lazy_sym,
169258 .lea_extern_func,
169350 => try self.genCopy(src_ty, ptr_mcv.deref(), src_mcv, opts),169259 => try self.genCopy(src_ty, ptr_mcv.deref(), src_mcv, opts),
169351 .memory,169260 .memory,
169352 .indirect,169261 .indirect,
169353 .load_symbol,
169354 .load_pcrel,
169355 .load_direct,
169356 .load_got,
169357 .load_frame,169262 .load_frame,
169263 .load_nav,
169264 .load_uav,
169265 .load_lazy_sym,
169266 .load_extern_func,
169358 => {169267 => {
169359 const addr_reg = try self.copyToTmpRegister(ptr_ty, ptr_mcv);169268 const addr_reg = try self.copyToTmpRegister(ptr_ty, ptr_mcv);
169360 const addr_lock = self.register_manager.lockRegAssumeUnused(addr_reg);169269 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:...@@ -169820,18 +169729,18 @@ fn genUnOpMir(self: *CodeGen, mir_tag: Mir.Inst.FixedTag, dst_ty: Type, dst_mcv:
169820 .eflags,169729 .eflags,
169821 .register_overflow,169730 .register_overflow,
169822 .register_mask,169731 .register_mask,
169823 .lea_symbol,
169824 .lea_pcrel,
169825 .lea_direct,
169826 .lea_got,
169827 .lea_frame,169732 .lea_frame,
169733 .lea_nav,
169734 .lea_uav,
169735 .lea_lazy_sym,
169736 .lea_extern_func,
169828 .elementwise_args,169737 .elementwise_args,
169829 .reserved_frame,169738 .reserved_frame,
169830 .air_ref,169739 .air_ref,
169831 => unreachable, // unmodifiable destination169740 => unreachable, // unmodifiable destination
169832 .register => |dst_reg| try self.asmRegister(mir_tag, registerAlias(dst_reg, abi_size)),169741 .register => |dst_reg| try self.asmRegister(mir_tag, registerAlias(dst_reg, abi_size)),
169833 .register_pair, .register_triple, .register_quadruple => unreachable, // unimplemented169742 .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 => {
169835 const addr_reg = try self.register_manager.allocReg(null, abi.RegisterClass.gp);169744 const addr_reg = try self.register_manager.allocReg(null, abi.RegisterClass.gp);
169836 const addr_reg_lock = self.register_manager.lockRegAssumeUnused(addr_reg);169745 const addr_reg_lock = self.register_manager.lockRegAssumeUnused(addr_reg);
169837 defer self.register_manager.unlockReg(addr_reg_lock);169746 defer self.register_manager.unlockReg(addr_reg_lock);
...@@ -170591,7 +170500,7 @@ fn genMulDivBinOp(...@@ -170591,7 +170500,7 @@ fn genMulDivBinOp(
170591 defer for (reg_locks) |reg_lock| if (reg_lock) |lock| self.register_manager.unlockReg(lock);170500 defer for (reg_locks) |reg_lock| if (reg_lock) |lock| self.register_manager.unlockReg(lock);
170592170501
170593 const mat_lhs_mcv = switch (lhs_mcv) {170502 const mat_lhs_mcv = switch (lhs_mcv) {
170594 .load_symbol => mat_lhs_mcv: {170503 .load_nav, .load_uav, .load_lazy_sym => mat_lhs_mcv: {
170595 // TODO clean this up!170504 // TODO clean this up!
170596 const addr_reg = try self.copyToTmpRegister(.usize, lhs_mcv.address());170505 const addr_reg = try self.copyToTmpRegister(.usize, lhs_mcv.address());
170597 break :mat_lhs_mcv MCValue{ .indirect = .{ .reg = addr_reg } };170506 break :mat_lhs_mcv MCValue{ .indirect = .{ .reg = addr_reg } };
...@@ -170604,7 +170513,7 @@ fn genMulDivBinOp(...@@ -170604,7 +170513,7 @@ fn genMulDivBinOp(
170604 };170513 };
170605 defer if (mat_lhs_lock) |lock| self.register_manager.unlockReg(lock);170514 defer if (mat_lhs_lock) |lock| self.register_manager.unlockReg(lock);
170606 const mat_rhs_mcv = switch (rhs_mcv) {170515 const mat_rhs_mcv = switch (rhs_mcv) {
170607 .load_symbol => mat_rhs_mcv: {170516 .load_nav, .load_uav, .load_lazy_sym => mat_rhs_mcv: {
170608 // TODO clean this up!170517 // TODO clean this up!
170609 const addr_reg = try self.copyToTmpRegister(.usize, rhs_mcv.address());170518 const addr_reg = try self.copyToTmpRegister(.usize, rhs_mcv.address());
170610 break :mat_rhs_mcv MCValue{ .indirect = .{ .reg = addr_reg } };170519 break :mat_rhs_mcv MCValue{ .indirect = .{ .reg = addr_reg } };
...@@ -170772,7 +170681,7 @@ fn genMulDivBinOp(...@@ -170772,7 +170681,7 @@ fn genMulDivBinOp(
170772 .is_const = true,170681 .is_const = true,
170773 },170682 },
170774 });170683 });
170775 _ = try self.genCall(.{ .lib = .{170684 _ = try self.genCall(.{ .extern_func = .{
170776 .return_type = .void_type,170685 .return_type = .void_type,
170777 .param_types = &.{170686 .param_types = &.{
170778 manyptr_u32_ty.toIntern(),170687 manyptr_u32_ty.toIntern(),
...@@ -170780,7 +170689,7 @@ fn genMulDivBinOp(...@@ -170780,7 +170689,7 @@ fn genMulDivBinOp(
170780 manyptr_const_u32_ty.toIntern(),170689 manyptr_const_u32_ty.toIntern(),
170781 .usize_type,170690 .usize_type,
170782 },170691 },
170783 .callee = switch (tag) {170692 .sym = switch (tag) {
170784 .div_trunc,170693 .div_trunc,
170785 .div_floor,170694 .div_floor,
170786 .div_exact,170695 .div_exact,
...@@ -171003,8 +170912,8 @@ fn genBinOp(...@@ -171003,8 +170912,8 @@ fn genBinOp(
171003 .rem, .mod => {},170912 .rem, .mod => {},
171004 else => if (!type_needs_libcall) break :libcall,170913 else => if (!type_needs_libcall) break :libcall,
171005 }170914 }
171006 var callee_buf: ["__mod?f3".len]u8 = undefined;170915 var sym_buf: ["__mod?f3".len]u8 = undefined;
171007 const callee = switch (air_tag) {170916 const sym = switch (air_tag) {
171008 .add,170917 .add,
171009 .sub,170918 .sub,
171010 .mul,170919 .mul,
...@@ -171012,11 +170921,11 @@ fn genBinOp(...@@ -171012,11 +170921,11 @@ fn genBinOp(
171012 .div_trunc,170921 .div_trunc,
171013 .div_floor,170922 .div_floor,
171014 .div_exact,170923 .div_exact,
171015 => std.fmt.bufPrint(&callee_buf, "__{s}{c}f3", .{170924 => std.fmt.bufPrint(&sym_buf, "__{s}{c}f3", .{
171016 @tagName(air_tag)[0..3],170925 @tagName(air_tag)[0..3],
171017 floatCompilerRtAbiName(float_bits),170926 floatCompilerRtAbiName(float_bits),
171018 }),170927 }),
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}", .{
171020 floatLibcAbiPrefix(lhs_ty),170929 floatLibcAbiPrefix(lhs_ty),
171021 switch (air_tag) {170930 switch (air_tag) {
171022 .rem, .mod => "mod",170931 .rem, .mod => "mod",
...@@ -171030,22 +170939,22 @@ fn genBinOp(...@@ -171030,22 +170939,22 @@ fn genBinOp(
171030 @tagName(air_tag), lhs_ty.fmt(pt),170939 @tagName(air_tag), lhs_ty.fmt(pt),
171031 }),170940 }),
171032 } catch unreachable;170941 } catch unreachable;
171033 const result = try self.genCall(.{ .lib = .{170942 const result = try self.genCall(.{ .extern_func = .{
171034 .return_type = lhs_ty.toIntern(),170943 .return_type = lhs_ty.toIntern(),
171035 .param_types = &.{ lhs_ty.toIntern(), rhs_ty.toIntern() },170944 .param_types = &.{ lhs_ty.toIntern(), rhs_ty.toIntern() },
171036 .callee = callee,170945 .sym = sym,
171037 } }, &.{ lhs_ty, rhs_ty }, &.{ .{ .air_ref = lhs_air }, .{ .air_ref = rhs_air } }, .{});170946 } }, &.{ lhs_ty, rhs_ty }, &.{ .{ .air_ref = lhs_air }, .{ .air_ref = rhs_air } }, .{});
171038 return switch (air_tag) {170947 return switch (air_tag) {
171039 .mod => result: {170948 .mod => result: {
171040 const adjusted: MCValue = if (type_needs_libcall) adjusted: {170949 const adjusted: MCValue = if (type_needs_libcall) adjusted: {
171041 var add_callee_buf: ["__add?f3".len]u8 = undefined;170950 var add_sym_buf: ["__add?f3".len]u8 = undefined;
171042 break :adjusted try self.genCall(.{ .lib = .{170951 break :adjusted try self.genCall(.{ .extern_func = .{
171043 .return_type = lhs_ty.toIntern(),170952 .return_type = lhs_ty.toIntern(),
171044 .param_types = &.{170953 .param_types = &.{
171045 lhs_ty.toIntern(),170954 lhs_ty.toIntern(),
171046 rhs_ty.toIntern(),170955 rhs_ty.toIntern(),
171047 },170956 },
171048 .callee = std.fmt.bufPrint(&add_callee_buf, "__add{c}f3", .{170957 .sym = std.fmt.bufPrint(&add_sym_buf, "__add{c}f3", .{
171049 floatCompilerRtAbiName(float_bits),170958 floatCompilerRtAbiName(float_bits),
171050 }) catch unreachable,170959 }) catch unreachable,
171051 } }, &.{ lhs_ty, rhs_ty }, &.{ result, .{ .air_ref = rhs_air } }, .{});170960 } }, &.{ lhs_ty, rhs_ty }, &.{ result, .{ .air_ref = rhs_air } }, .{});
...@@ -171144,10 +171053,10 @@ fn genBinOp(...@@ -171144,10 +171053,10 @@ fn genBinOp(
171144 }),171053 }),
171145 else => unreachable,171054 else => unreachable,
171146 };171055 };
171147 break :result try self.genCall(.{ .lib = .{171056 break :result try self.genCall(.{ .extern_func = .{
171148 .return_type = lhs_ty.toIntern(),171057 .return_type = lhs_ty.toIntern(),
171149 .param_types = &.{ lhs_ty.toIntern(), rhs_ty.toIntern() },171058 .param_types = &.{ lhs_ty.toIntern(), rhs_ty.toIntern() },
171150 .callee = callee,171059 .sym = sym,
171151 } }, &.{ lhs_ty, rhs_ty }, &.{ adjusted, .{ .air_ref = rhs_air } }, .{});171060 } }, &.{ lhs_ty, rhs_ty }, &.{ adjusted, .{ .air_ref = rhs_air } }, .{});
171152 },171061 },
171153 .div_trunc, .div_floor => try self.genRoundLibcall(lhs_ty, result, .{171062 .div_trunc, .div_floor => try self.genRoundLibcall(lhs_ty, result, .{
...@@ -171430,13 +171339,15 @@ fn genBinOp(...@@ -171430,13 +171339,15 @@ fn genBinOp(
171430 .immediate,171339 .immediate,
171431 .eflags,171340 .eflags,
171432 .register_offset,171341 .register_offset,
171433 .load_symbol,
171434 .lea_symbol,
171435 .load_direct,
171436 .lea_direct,
171437 .load_got,
171438 .lea_got,
171439 .lea_frame,171342 .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,
171440 => true,171351 => true,
171441 .memory => |addr| std.math.cast(i32, @as(i64, @bitCast(addr))) == null,171352 .memory => |addr| std.math.cast(i32, @as(i64, @bitCast(addr))) == null,
171442 else => false,171353 else => false,
...@@ -171489,15 +171400,15 @@ fn genBinOp(...@@ -171489,15 +171400,15 @@ fn genBinOp(
171489 .register_offset,171400 .register_offset,
171490 .register_overflow,171401 .register_overflow,
171491 .register_mask,171402 .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,
171500 .lea_frame,171403 .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,
171501 .elementwise_args,171412 .elementwise_args,
171502 .reserved_frame,171413 .reserved_frame,
171503 .air_ref,171414 .air_ref,
...@@ -172595,7 +172506,7 @@ fn genBinOp(...@@ -172595,7 +172506,7 @@ fn genBinOp(
172595 .cmp_neq,172506 .cmp_neq,
172596 => {172507 => {
172597 const unsigned_ty = try lhs_ty.toUnsigned(pt);172508 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));
172599 const not_mem: Memory = if (not_mcv.isBase())172510 const not_mem: Memory = if (not_mcv.isBase())
172600 try not_mcv.mem(self, .{ .size = .fromSize(abi_size) })172511 try not_mcv.mem(self, .{ .size = .fromSize(abi_size) })
172601 else172512 else
...@@ -172677,11 +172588,11 @@ fn genBinOpMir(...@@ -172677,11 +172588,11 @@ fn genBinOpMir(
172677 .eflags,172588 .eflags,
172678 .register_overflow,172589 .register_overflow,
172679 .register_mask,172590 .register_mask,
172680 .lea_direct,
172681 .lea_got,
172682 .lea_frame,172591 .lea_frame,
172683 .lea_symbol,172592 .lea_nav,
172684 .lea_pcrel,172593 .lea_uav,
172594 .lea_lazy_sym,
172595 .lea_extern_func,
172685 .elementwise_args,172596 .elementwise_args,
172686 .reserved_frame,172597 .reserved_frame,
172687 .air_ref,172598 .air_ref,
...@@ -172771,16 +172682,16 @@ fn genBinOpMir(...@@ -172771,16 +172682,16 @@ fn genBinOpMir(
172771 .register_offset,172682 .register_offset,
172772 .memory,172683 .memory,
172773 .indirect,172684 .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,
172782 .load_frame,172685 .load_frame,
172783 .lea_frame,172686 .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,
172784 => {172695 => {
172785 direct: {172696 direct: {
172786 try self.asmRegisterMemory(mir_limb_tag, dst_alias, switch (src_mcv) {172697 try self.asmRegisterMemory(mir_limb_tag, dst_alias, switch (src_mcv) {
...@@ -172813,10 +172724,11 @@ fn genBinOpMir(...@@ -172813,10 +172724,11 @@ fn genBinOpMir(
172813 switch (src_mcv) {172724 switch (src_mcv) {
172814 .eflags,172725 .eflags,
172815 .register_offset,172726 .register_offset,
172816 .lea_symbol,
172817 .lea_direct,
172818 .lea_got,
172819 .lea_frame,172727 .lea_frame,
172728 .lea_nav,
172729 .lea_uav,
172730 .lea_lazy_sym,
172731 .lea_extern_func,
172820 => {172732 => {
172821 assert(off == 0);172733 assert(off == 0);
172822 const reg = try self.copyToTmpRegister(ty, src_mcv);172734 const reg = try self.copyToTmpRegister(ty, src_mcv);
...@@ -172828,9 +172740,10 @@ fn genBinOpMir(...@@ -172828,9 +172740,10 @@ fn genBinOpMir(
172828 );172740 );
172829 },172741 },
172830 .memory,172742 .memory,
172831 .load_symbol,172743 .load_nav,
172832 .load_direct,172744 .load_uav,
172833 .load_got,172745 .load_lazy_sym,
172746 .load_extern_func,
172834 => {172747 => {
172835 const ptr_ty = try pt.singleConstPtrType(ty);172748 const ptr_ty = try pt.singleConstPtrType(ty);
172836 const addr_reg = try self.copyToTmpRegister(ptr_ty, src_mcv.address());172749 const addr_reg = try self.copyToTmpRegister(ptr_ty, src_mcv.address());
...@@ -172850,13 +172763,20 @@ fn genBinOpMir(...@@ -172850,13 +172763,20 @@ fn genBinOpMir(
172850 }172763 }
172851 }172764 }
172852 },172765 },
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 => {
172854 const OpInfo = ?struct { addr_reg: Register, addr_lock: RegisterLock };172774 const OpInfo = ?struct { addr_reg: Register, addr_lock: RegisterLock };
172855 const limb_abi_size: u32 = @min(abi_size, 8);172775 const limb_abi_size: u32 = @min(abi_size, 8);
172856172776
172857 const dst_info: OpInfo = switch (dst_mcv) {172777 const dst_info: OpInfo = switch (dst_mcv) {
172858 else => unreachable,172778 else => unreachable,
172859 .memory, .load_symbol, .load_got, .load_direct => dst: {172779 .memory, .load_nav, .load_uav, .load_lazy_sym, .load_extern_func => dst: {
172860 const dst_addr_reg =172780 const dst_addr_reg =
172861 (try self.register_manager.allocReg(null, abi.RegisterClass.gp)).to64();172781 (try self.register_manager.allocReg(null, abi.RegisterClass.gp)).to64();
172862 const dst_addr_lock = self.register_manager.lockRegAssumeUnused(dst_addr_reg);172782 const dst_addr_lock = self.register_manager.lockRegAssumeUnused(dst_addr_reg);
...@@ -172892,19 +172812,24 @@ fn genBinOpMir(...@@ -172892,19 +172812,24 @@ fn genBinOpMir(
172892 .register_quadruple,172812 .register_quadruple,
172893 .register_offset,172813 .register_offset,
172894 .indirect,172814 .indirect,
172895 .lea_direct,
172896 .lea_got,
172897 .load_frame,172815 .load_frame,
172898 .lea_frame,172816 .lea_frame,
172899 .lea_symbol,172817 .lea_nav,
172900 .lea_pcrel,172818 .lea_uav,
172819 .lea_lazy_sym,
172820 .lea_extern_func,
172901 => null,172821 => 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: {
172903 switch (resolved_src_mcv) {172828 switch (resolved_src_mcv) {
172904 .memory => |addr| if (std.math.cast(i32, @as(i64, @bitCast(addr))) != null and172829 .memory => |addr| if (std.math.cast(i32, @as(i64, @bitCast(addr))) != null and
172905 std.math.cast(i32, @as(i64, @bitCast(addr)) + abi_size - limb_abi_size) != null)172830 std.math.cast(i32, @as(i64, @bitCast(addr)) + abi_size - limb_abi_size) != null)
172906 break :src null,172831 break :src null,
172907 .load_symbol, .load_got, .load_direct => {},172832 .load_nav, .load_uav, .load_lazy_sym, .load_extern_func => {},
172908 else => unreachable,172833 else => unreachable,
172909 }172834 }
172910172835
...@@ -172944,9 +172869,10 @@ fn genBinOpMir(...@@ -172944,9 +172869,10 @@ fn genBinOpMir(
172944 };172869 };
172945 const dst_limb_mem: Memory = switch (dst_mcv) {172870 const dst_limb_mem: Memory = switch (dst_mcv) {
172946 .memory,172871 .memory,
172947 .load_symbol,172872 .load_nav,
172948 .load_got,172873 .load_uav,
172949 .load_direct,172874 .load_lazy_sym,
172875 .load_extern_func,
172950 => .{172876 => .{
172951 .base = .{ .reg = dst_info.?.addr_reg },172877 .base = .{ .reg = dst_info.?.addr_reg },
172952 .mod = .{ .rm = .{172878 .mod = .{ .rm = .{
...@@ -173036,16 +172962,16 @@ fn genBinOpMir(...@@ -173036,16 +172962,16 @@ fn genBinOpMir(
173036 .eflags,172962 .eflags,
173037 .memory,172963 .memory,
173038 .indirect,172964 .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,
173047 .load_frame,172965 .load_frame,
173048 .lea_frame,172966 .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,
173049 => {172975 => {
173050 const src_limb_mcv: MCValue = if (src_info) |info| .{172976 const src_limb_mcv: MCValue = if (src_info) |info| .{
173051 .indirect = .{ .reg = info.addr_reg, .off = off },172977 .indirect = .{ .reg = info.addr_reg, .off = off },
...@@ -173055,10 +172981,11 @@ fn genBinOpMir(...@@ -173055,10 +172981,11 @@ fn genBinOpMir(
173055 },172981 },
173056 .eflags,172982 .eflags,
173057 .register_offset,172983 .register_offset,
173058 .lea_symbol,
173059 .lea_direct,
173060 .lea_got,
173061 .lea_frame,172984 .lea_frame,
172985 .lea_nav,
172986 .lea_uav,
172987 .lea_lazy_sym,
172988 .lea_extern_func,
173062 => switch (limb_i) {172989 => switch (limb_i) {
173063 0 => resolved_src_mcv,172990 0 => resolved_src_mcv,
173064 else => .{ .immediate = 0 },172991 else => .{ .immediate = 0 },
...@@ -173106,11 +173033,11 @@ fn genIntMulComplexOpMir(self: *CodeGen, dst_ty: Type, dst_mcv: MCValue, src_mcv...@@ -173106,11 +173033,11 @@ fn genIntMulComplexOpMir(self: *CodeGen, dst_ty: Type, dst_mcv: MCValue, src_mcv
173106 .register_offset,173033 .register_offset,
173107 .register_overflow,173034 .register_overflow,
173108 .register_mask,173035 .register_mask,
173109 .lea_symbol,
173110 .lea_pcrel,
173111 .lea_direct,
173112 .lea_got,
173113 .lea_frame,173036 .lea_frame,
173037 .lea_nav,
173038 .lea_uav,
173039 .lea_lazy_sym,
173040 .lea_extern_func,
173114 .elementwise_args,173041 .elementwise_args,
173115 .reserved_frame,173042 .reserved_frame,
173116 .air_ref,173043 .air_ref,
...@@ -173168,15 +173095,15 @@ fn genIntMulComplexOpMir(self: *CodeGen, dst_ty: Type, dst_mcv: MCValue, src_mcv...@@ -173168,15 +173095,15 @@ fn genIntMulComplexOpMir(self: *CodeGen, dst_ty: Type, dst_mcv: MCValue, src_mcv
173168 },173095 },
173169 .register_offset,173096 .register_offset,
173170 .eflags,173097 .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,
173179 .lea_frame,173098 .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,
173180 => {173107 => {
173181 const src_reg = try self.copyToTmpRegister(dst_ty, resolved_src_mcv);173108 const src_reg = try self.copyToTmpRegister(dst_ty, resolved_src_mcv);
173182 switch (abi_size) {173109 switch (abi_size) {
...@@ -173231,7 +173158,14 @@ fn genIntMulComplexOpMir(self: *CodeGen, dst_ty: Type, dst_mcv: MCValue, src_mcv...@@ -173231,7 +173158,14 @@ fn genIntMulComplexOpMir(self: *CodeGen, dst_ty: Type, dst_mcv: MCValue, src_mcv
173231 }173158 }
173232 },173159 },
173233 .register_pair, .register_triple, .register_quadruple => unreachable, // unimplemented173160 .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 => {
173235 const tmp_reg = try self.copyToTmpRegister(dst_ty, dst_mcv);173169 const tmp_reg = try self.copyToTmpRegister(dst_ty, dst_mcv);
173236 const tmp_mcv = MCValue{ .register = tmp_reg };173170 const tmp_mcv = MCValue{ .register = tmp_reg };
173237 const tmp_lock = self.register_manager.lockRegAssumeUnused(tmp_reg);173171 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...@@ -173382,15 +173316,6 @@ fn genLocalDebugInfo(cg: *CodeGen, air_tag: Air.Inst.Tag, ty: Type, mcv: MCValue
173382 },173316 },
173383 .data = .{ .fa = frame_addr },173317 .data = .{ .fa = frame_addr },
173384 }),173318 }),
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 }),
173394 else => {173319 else => {
173395 const frame_index = try cg.allocFrameIndex(.initSpill(ty, cg.pt.zcu));173320 const frame_index = try cg.allocFrameIndex(.initSpill(ty, cg.pt.zcu));
173396 try cg.genSetMem(.{ .frame = frame_index }, 0, ty, mcv, .{});173321 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...@@ -173426,26 +173351,42 @@ fn genLocalDebugInfo(cg: *CodeGen, air_tag: Air.Inst.Tag, ty: Type, mcv: MCValue
173426 })),173351 })),
173427 } },173352 } },
173428 }),173353 }),
173429 // debug info should explicitly ignore pcrel requirements173354 .lea_nav => |nav| try cg.addInst(.{
173430 .lea_symbol, .lea_pcrel => |sym_off| try cg.addInst(.{
173431 .tag = .pseudo,173355 .tag = .pseudo,
173432 .ops = .pseudo_dbg_var_m,173356 .ops = .pseudo_dbg_var_m,
173433 .data = .{ .x = .{173357 .data = .{ .x = .{
173434 .payload = try cg.addExtra(Mir.Memory.encode(.{173358 .payload = try cg.addExtra(Mir.Memory.encode(.{
173435 .base = .{ .reloc = sym_off.sym_index },173359 .base = .{ .nav = nav },
173436 .mod = .{ .rm = .{173360 .mod = .{ .rm = .{ .size = .qword } },
173437 .size = .qword,
173438 .disp = sym_off.off,
173439 } },
173440 })),173361 })),
173441 } },173362 } },
173442 }),173363 }),
173443 .lea_direct, .lea_got => |sym_index| try cg.addInst(.{173364 .lea_uav => |uav| try cg.addInst(.{
173444 .tag = .pseudo,173365 .tag = .pseudo,
173445 .ops = .pseudo_dbg_var_m,173366 .ops = .pseudo_dbg_var_m,
173446 .data = .{ .x = .{173367 .data = .{ .x = .{
173447 .payload = try cg.addExtra(Mir.Memory.encode(.{173368 .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 },
173449 .mod = .{ .rm = .{ .size = .qword } },173390 .mod = .{ .rm = .{ .size = .qword } },
173450 })),173391 })),
173451 } },173392 } },
...@@ -173502,11 +173443,10 @@ fn airCall(self: *CodeGen, inst: Air.Inst.Index, modifier: std.builtin.CallModif...@@ -173502,11 +173443,10 @@ fn airCall(self: *CodeGen, inst: Air.Inst.Index, modifier: std.builtin.CallModif
173502173443
173503fn genCall(self: *CodeGen, info: union(enum) {173444fn genCall(self: *CodeGen, info: union(enum) {
173504 air: Air.Inst.Ref,173445 air: Air.Inst.Ref,
173505 lib: struct {173446 extern_func: struct {
173506 return_type: InternPool.Index,173447 return_type: InternPool.Index,
173507 param_types: []const InternPool.Index,173448 param_types: []const InternPool.Index,
173508 lib: ?[]const u8 = null,173449 sym: []const u8,
173509 callee: []const u8,
173510 },173450 },
173511}, arg_types: []const Type, args: []const MCValue, opts: CopyOptions) !MCValue {173451}, arg_types: []const Type, args: []const MCValue, opts: CopyOptions) !MCValue {
173512 const pt = self.pt;173452 const pt = self.pt;
...@@ -173522,9 +173462,9 @@ fn genCall(self: *CodeGen, info: union(enum) {...@@ -173522,9 +173462,9 @@ fn genCall(self: *CodeGen, info: union(enum) {
173522 else => unreachable,173462 else => unreachable,
173523 };173463 };
173524 },173464 },
173525 .lib => |lib| try pt.funcType(.{173465 .extern_func => |extern_func| try pt.funcType(.{
173526 .param_types = lib.param_types,173466 .param_types = extern_func.param_types,
173527 .return_type = lib.return_type,173467 .return_type = extern_func.return_type,
173528 .cc = self.target.cCallingConvention().?,173468 .cc = self.target.cCallingConvention().?,
173529 }),173469 }),
173530 };173470 };
...@@ -173753,52 +173693,9 @@ fn genCall(self: *CodeGen, info: union(enum) {...@@ -173753,52 +173693,9 @@ fn genCall(self: *CodeGen, info: union(enum) {
173753 else => func_key,173693 else => func_key,
173754 } else func_key,173694 } else func_key,
173755 }) {173695 }) {
173756 .func => |func| {173696 else => unreachable,
173757 if (self.bin_file.cast(.elf)) |elf_file| {173697 .func => |func| try self.asmImmediate(.{ ._, .call }, .{ .nav = .{ .index = func.owner_nav } }),
173758 const zo = elf_file.zigObjectPtr().?;173698 .@"extern" => |@"extern"| try self.asmImmediate(.{ ._, .call }, .{ .nav = .{ .index = @"extern".owner_nav } }),
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", .{}),
173802 }173699 }
173803 } else {173700 } else {
173804 assert(self.typeOf(callee).zigTypeTag(zcu) == .pointer);173701 assert(self.typeOf(callee).zigTypeTag(zcu) == .pointer);
...@@ -173806,13 +173703,7 @@ fn genCall(self: *CodeGen, info: union(enum) {...@@ -173806,13 +173703,7 @@ fn genCall(self: *CodeGen, info: union(enum) {
173806 try self.genSetReg(scratch_reg, .usize, .{ .air_ref = callee }, .{});173703 try self.genSetReg(scratch_reg, .usize, .{ .air_ref = callee }, .{});
173807 try self.asmRegister(.{ ._, .call }, scratch_reg);173704 try self.asmRegister(.{ ._, .call }, scratch_reg);
173808 },173705 },
173809 .lib => |lib| if (self.bin_file.cast(.elf)) |elf_file| {173706 .extern_func => |extern_func| try self.asmImmediate(.{ ._, .call }, .{ .extern_func = try self.addString(extern_func.sym) }),
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),
173816 }173707 }
173817 return call_info.return_value.short;173708 return call_info.return_value.short;
173818}173709}
...@@ -173946,11 +173837,11 @@ fn airCmp(self: *CodeGen, inst: Air.Inst.Index, op: std.math.CompareOperator) !v...@@ -173946,11 +173837,11 @@ fn airCmp(self: *CodeGen, inst: Air.Inst.Index, op: std.math.CompareOperator) !v
173946 80, 128 => false,173837 80, 128 => false,
173947 else => unreachable,173838 else => unreachable,
173948 }) {173839 }) {
173949 var callee_buf: ["__???f2".len]u8 = undefined;173840 var sym_buf: ["__???f2".len]u8 = undefined;
173950 const ret = try self.genCall(.{ .lib = .{173841 const ret = try self.genCall(.{ .extern_func = .{
173951 .return_type = .i32_type,173842 .return_type = .i32_type,
173952 .param_types = &.{ ty.toIntern(), ty.toIntern() },173843 .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", .{
173954 switch (op) {173845 switch (op) {
173955 .eq => "eq",173846 .eq => "eq",
173956 .neq => "ne",173847 .neq => "ne",
...@@ -174093,17 +173984,27 @@ fn airCmp(self: *CodeGen, inst: Air.Inst.Index, op: std.math.CompareOperator) !v...@@ -174093,17 +173984,27 @@ fn airCmp(self: *CodeGen, inst: Air.Inst.Index, op: std.math.CompareOperator) !v
174093 .register_overflow,173984 .register_overflow,
174094 .register_mask,173985 .register_mask,
174095 .indirect,173986 .indirect,
174096 .lea_direct,
174097 .lea_got,
174098 .lea_frame,173987 .lea_frame,
174099 .lea_symbol,173988 .lea_nav,
174100 .lea_pcrel,173989 .lea_uav,
173990 .lea_lazy_sym,
173991 .lea_extern_func,
174101 .elementwise_args,173992 .elementwise_args,
174102 .reserved_frame,173993 .reserved_frame,
174103 .air_ref,173994 .air_ref,
174104 => unreachable,173995 => unreachable,
174105 .register, .register_pair, .register_triple, .register_quadruple, .load_frame => null,173996 .register,
174106 .memory, .load_symbol, .load_pcrel, .load_got, .load_direct => dst: {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: {
174107 switch (resolved_dst_mcv) {174008 switch (resolved_dst_mcv) {
174108 .memory => |addr| if (std.math.cast(174009 .memory => |addr| if (std.math.cast(
174109 i32,174010 i32,
...@@ -174112,7 +174013,7 @@ fn airCmp(self: *CodeGen, inst: Air.Inst.Index, op: std.math.CompareOperator) !v...@@ -174112,7 +174013,7 @@ fn airCmp(self: *CodeGen, inst: Air.Inst.Index, op: std.math.CompareOperator) !v
174112 i32,174013 i32,
174113 @as(i64, @bitCast(addr)) + abi_size - 8,174014 @as(i64, @bitCast(addr)) + abi_size - 8,
174114 ) != null) break :dst null,174015 ) != null) break :dst null,
174115 .load_symbol, .load_pcrel, .load_got, .load_direct => {},174016 .load_nav, .load_uav, .load_lazy_sym, .load_extern_func => {},
174116 else => unreachable,174017 else => unreachable,
174117 }174018 }
174118174019
...@@ -174149,17 +174050,26 @@ fn airCmp(self: *CodeGen, inst: Air.Inst.Index, op: std.math.CompareOperator) !v...@@ -174149,17 +174050,26 @@ fn airCmp(self: *CodeGen, inst: Air.Inst.Index, op: std.math.CompareOperator) !v
174149 .register_overflow,174050 .register_overflow,
174150 .register_mask,174051 .register_mask,
174151 .indirect,174052 .indirect,
174152 .lea_symbol,
174153 .lea_pcrel,
174154 .lea_direct,
174155 .lea_got,
174156 .lea_frame,174053 .lea_frame,
174054 .lea_nav,
174055 .lea_uav,
174056 .lea_lazy_sym,
174057 .lea_extern_func,
174157 .elementwise_args,174058 .elementwise_args,
174158 .reserved_frame,174059 .reserved_frame,
174159 .air_ref,174060 .air_ref,
174160 => unreachable,174061 => unreachable,
174161 .register_pair, .register_triple, .register_quadruple, .load_frame => null,174062 .register_pair,
174162 .memory, .load_symbol, .load_pcrel, .load_got, .load_direct => src: {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: {
174163 switch (resolved_src_mcv) {174073 switch (resolved_src_mcv) {
174164 .memory => |addr| if (std.math.cast(174074 .memory => |addr| if (std.math.cast(
174165 i32,174075 i32,
...@@ -174168,7 +174078,7 @@ fn airCmp(self: *CodeGen, inst: Air.Inst.Index, op: std.math.CompareOperator) !v...@@ -174168,7 +174078,7 @@ fn airCmp(self: *CodeGen, inst: Air.Inst.Index, op: std.math.CompareOperator) !v
174168 i32,174078 i32,
174169 @as(i64, @bitCast(addr)) + abi_size - 8,174079 @as(i64, @bitCast(addr)) + abi_size - 8,
174170 ) != null) break :src null,174080 ) != null) break :src null,
174171 .load_symbol, .load_pcrel, .load_got, .load_direct => {},174081 .load_nav, .load_uav, .load_lazy_sym, .load_extern_func => {},
174172 else => unreachable,174082 else => unreachable,
174173 }174083 }
174174174084
...@@ -174453,14 +174363,19 @@ fn airDbgVar(cg: *CodeGen, inst: Air.Inst.Index) !void {...@@ -174453,14 +174363,19 @@ fn airDbgVar(cg: *CodeGen, inst: Air.Inst.Index) !void {
174453 if (cg.mod.strip) return;174363 if (cg.mod.strip) return;
174454 const air_tag = cg.air.instructions.items(.tag)[@intFromEnum(inst)];174364 const air_tag = cg.air.instructions.items(.tag)[@intFromEnum(inst)];
174455 const pl_op = cg.air.instructions.items(.data)[@intFromEnum(inst)].pl_op;174365 const pl_op = cg.air.instructions.items(.data)[@intFromEnum(inst)].pl_op;
174456174366 const air_name: Air.NullTerminatedString = @enumFromInt(pl_op.payload);
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
174462 const ty = cg.typeOf(pl_op.operand);174367 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
174465 try cg.genLocalDebugInfo(air_tag, ty, try cg.resolveInst(pl_op.operand));174380 try cg.genLocalDebugInfo(air_tag, ty, try cg.resolveInst(pl_op.operand));
174466 return cg.finishAir(inst, .unreach, .{ pl_op.operand, .none, .none });174381 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)...@@ -174567,10 +174482,10 @@ fn isNull(self: *CodeGen, inst: Air.Inst.Index, opt_ty: Type, opt_mcv: MCValue)
174567 .register_offset,174482 .register_offset,
174568 .register_overflow,174483 .register_overflow,
174569 .register_mask,174484 .register_mask,
174570 .lea_direct,174485 .lea_nav,
174571 .lea_got,174486 .lea_uav,
174572 .lea_symbol,174487 .lea_lazy_sym,
174573 .lea_pcrel,174488 .lea_extern_func,
174574 .elementwise_args,174489 .elementwise_args,
174575 .reserved_frame,174490 .reserved_frame,
174576 .air_ref,174491 .air_ref,
...@@ -174618,10 +174533,10 @@ fn isNull(self: *CodeGen, inst: Air.Inst.Index, opt_ty: Type, opt_mcv: MCValue)...@@ -174618,10 +174533,10 @@ fn isNull(self: *CodeGen, inst: Air.Inst.Index, opt_ty: Type, opt_mcv: MCValue)
174618 },174533 },
174619174534
174620 .memory,174535 .memory,
174621 .load_symbol,174536 .load_nav,
174622 .load_pcrel,174537 .load_uav,
174623 .load_got,174538 .load_lazy_sym,
174624 .load_direct,174539 .load_extern_func,
174625 => {174540 => {
174626 const addr_reg = (try self.register_manager.allocReg(null, abi.RegisterClass.gp)).to64();174541 const addr_reg = (try self.register_manager.allocReg(null, abi.RegisterClass.gp)).to64();
174627 const addr_reg_lock = self.register_manager.lockRegAssumeUnused(addr_reg);174542 const addr_reg_lock = self.register_manager.lockRegAssumeUnused(addr_reg);
...@@ -175655,7 +175570,7 @@ fn airAsm(self: *CodeGen, inst: Air.Inst.Index) !void {...@@ -175655,7 +175570,7 @@ fn airAsm(self: *CodeGen, inst: Air.Inst.Index) !void {
175655 .memory => |addr| if (std.math.cast(i32, @as(i64, @bitCast(addr)))) |_|175570 .memory => |addr| if (std.math.cast(i32, @as(i64, @bitCast(addr)))) |_|
175656 break :arg input_mcv,175571 break :arg input_mcv,
175657 .indirect, .load_frame => break :arg input_mcv,175572 .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 => {},
175659 else => {175574 else => {
175660 const temp_mcv = try self.allocTempRegOrMem(ty, false);175575 const temp_mcv = try self.allocTempRegOrMem(ty, false);
175661 try self.genCopy(ty, temp_mcv, input_mcv, .{});175576 try self.genCopy(ty, temp_mcv, input_mcv, .{});
...@@ -175934,12 +175849,20 @@ fn airAsm(self: *CodeGen, inst: Air.Inst.Index) !void {...@@ -175934,12 +175849,20 @@ fn airAsm(self: *CodeGen, inst: Air.Inst.Index) !void {
175934 } }175849 } }
175935 else175850 else
175936 return self.fail("invalid modifier: '{s}'", .{modifier}),175851 return self.fail("invalid modifier: '{s}'", .{modifier}),
175937 .lea_got => |sym_index| if (std.mem.eql(u8, modifier, "P"))175852 .lea_nav => |nav| if (std.mem.eql(u8, modifier, "P"))
175938 .{ .reg = try self.copyToTmpRegister(.usize, .{ .lea_got = sym_index }) }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 }) }
175939 else175862 else
175940 return self.fail("invalid modifier: '{s}'", .{modifier}),175863 return self.fail("invalid modifier: '{s}'", .{modifier}),
175941 .lea_symbol => |sym_off| if (std.mem.eql(u8, modifier, "P"))175864 .lea_extern_func => |extern_func| if (std.mem.eql(u8, modifier, "P"))
175942 .{ .reg = try self.copyToTmpRegister(.usize, .{ .lea_symbol = sym_off }) }175865 .{ .reg = try self.copyToTmpRegister(.usize, .{ .lea_extern_func = extern_func }) }
175943 else175866 else
175944 return self.fail("invalid modifier: '{s}'", .{modifier}),175867 return self.fail("invalid modifier: '{s}'", .{modifier}),
175945 else => return self.fail("invalid constraint: '{s}'", .{op_str}),175868 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...@@ -176623,11 +176546,11 @@ fn genCopy(self: *CodeGen, ty: Type, dst_mcv: MCValue, src_mcv: MCValue, opts: C
176623 .eflags,176546 .eflags,
176624 .register_overflow,176547 .register_overflow,
176625 .register_mask,176548 .register_mask,
176626 .lea_direct,
176627 .lea_got,
176628 .lea_frame,176549 .lea_frame,
176629 .lea_symbol,176550 .lea_nav,
176630 .lea_pcrel,176551 .lea_uav,
176552 .lea_lazy_sym,
176553 .lea_extern_func,
176631 .elementwise_args,176554 .elementwise_args,
176632 .reserved_frame,176555 .reserved_frame,
176633 .air_ref,176556 .air_ref,
...@@ -176722,7 +176645,7 @@ fn genCopy(self: *CodeGen, ty: Type, dst_mcv: MCValue, src_mcv: MCValue, opts: C...@@ -176722,7 +176645,7 @@ fn genCopy(self: *CodeGen, ty: Type, dst_mcv: MCValue, src_mcv: MCValue, opts: C
176722 }176645 }
176723 return;176646 return;
176724 },176647 },
176725 .load_symbol, .load_pcrel, .load_direct, .load_got => {176648 .load_nav, .load_uav, .load_lazy_sym, .load_extern_func => {
176726 const src_addr_reg =176649 const src_addr_reg =
176727 (try self.register_manager.allocReg(null, abi.RegisterClass.gp)).to64();176650 (try self.register_manager.allocReg(null, abi.RegisterClass.gp)).to64();
176728 const src_addr_lock = self.register_manager.lockRegAssumeUnused(src_addr_reg);176651 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...@@ -176755,7 +176678,11 @@ fn genCopy(self: *CodeGen, ty: Type, dst_mcv: MCValue, src_mcv: MCValue, opts: C
176755 .undef => if (opts.safety and part_i > 0) .{ .register = dst_regs[0] } else .undef,176678 .undef => if (opts.safety and part_i > 0) .{ .register = dst_regs[0] } else .undef,
176756 dst_tag => |src_regs| .{ .register = src_regs[part_i] },176679 dst_tag => |src_regs| .{ .register = src_regs[part_i] },
176757 .memory, .indirect, .load_frame => src_mcv.address().offset(part_disp).deref(),176680 .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 = .{
176759 .reg = src_info.?.addr_reg,176686 .reg = src_info.?.addr_reg,
176760 .off = part_disp,176687 .off = part_disp,
176761 } },176688 } },
...@@ -176776,11 +176703,11 @@ fn genCopy(self: *CodeGen, ty: Type, dst_mcv: MCValue, src_mcv: MCValue, opts: C...@@ -176776,11 +176703,11 @@ fn genCopy(self: *CodeGen, ty: Type, dst_mcv: MCValue, src_mcv: MCValue, opts: C
176776 src_mcv,176703 src_mcv,
176777 opts,176704 opts,
176778 ),176705 ),
176779 .memory, .load_symbol, .load_pcrel, .load_direct, .load_got => {176706 .memory => {
176780 switch (dst_mcv) {176707 switch (dst_mcv) {
176781 .memory => |addr| if (std.math.cast(i32, @as(i64, @bitCast(addr)))) |small_addr|176708 .memory => |addr| if (std.math.cast(i32, @as(i64, @bitCast(addr)))) |small_addr|
176782 return self.genSetMem(.{ .reg = .ds }, small_addr, ty, src_mcv, opts),176709 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 => {},
176784 else => unreachable,176711 else => unreachable,
176785 }176712 }
176786176713
...@@ -176797,6 +176724,10 @@ fn genCopy(self: *CodeGen, ty: Type, dst_mcv: MCValue, src_mcv: MCValue, opts: C...@@ -176797,6 +176724,10 @@ fn genCopy(self: *CodeGen, ty: Type, dst_mcv: MCValue, src_mcv: MCValue, opts: C
176797 src_mcv,176724 src_mcv,
176798 opts,176725 opts,
176799 ),176726 ),
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),
176800 }176731 }
176801}176732}
176802176733
...@@ -176841,14 +176772,14 @@ fn genSetReg(...@@ -176841,14 +176772,14 @@ fn genSetReg(
176841 .len = self.vectorSize(.float),176772 .len = self.vectorSize(.float),
176842 .child = .u8_type,176773 .child = .u8_type,
176843 });176774 });
176844 try self.genSetReg(dst_reg, full_ty, try self.genTypedValue(176775 try self.genSetReg(dst_reg, full_ty, try self.lowerValue(
176845 .fromInterned(try pt.intern(.{ .aggregate = .{176776 .fromInterned(try pt.intern(.{ .aggregate = .{
176846 .ty = full_ty.toIntern(),176777 .ty = full_ty.toIntern(),
176847 .storage = .{ .repeated_elem = (try pt.intValue(.u8, 0xaa)).toIntern() },176778 .storage = .{ .repeated_elem = (try pt.intValue(.u8, 0xaa)).toIntern() },
176848 } })),176779 } })),
176849 ), opts);176780 ), opts);
176850 },176781 },
176851 .x87 => try self.genSetReg(dst_reg, .f80, try self.genTypedValue(176782 .x87 => try self.genSetReg(dst_reg, .f80, try self.lowerValue(
176852 try pt.floatValue(.f80, @as(f80, @bitCast(@as(u80, 0xaaaaaaaaaaaaaaaaaaaa)))),176783 try pt.floatValue(.f80, @as(f80, @bitCast(@as(u80, 0xaaaaaaaaaaaaaaaaaaaa)))),
176853 ), opts),176784 ), opts),
176854 .ip, .cr, .dr => unreachable,176785 .ip, .cr, .dr => unreachable,
...@@ -176878,12 +176809,24 @@ fn genSetReg(...@@ -176878,12 +176809,24 @@ fn genSetReg(
176878 }176809 }
176879 },176810 },
176880 .register => |src_reg| if (dst_reg.id() != src_reg.id()) switch (dst_reg.class()) {176811 .register => |src_reg| if (dst_reg.id() != src_reg.id()) switch (dst_reg.class()) {
176881 .general_purpose, .gphi => switch (src_reg.class()) {176812 .general_purpose => switch (src_reg.class()) {
176882 .general_purpose, .gphi => try self.asmRegisterRegister(176813 .general_purpose => try self.asmRegisterRegister(
176883 .{ ._, .mov },176814 .{ ._, .mov },
176884 dst_alias,176815 dst_alias,
176885 registerAlias(src_reg, abi_size),176816 registerAlias(src_reg, abi_size),
176886 ),176817 ),
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 },
176887 .segment => try self.asmRegisterRegister(176830 .segment => try self.asmRegisterRegister(
176888 .{ ._, .mov },176831 .{ ._, .mov },
176889 dst_alias,176832 dst_alias,
...@@ -176919,6 +176862,26 @@ fn genSetReg(...@@ -176919,6 +176862,26 @@ fn genSetReg(
176919 });176862 });
176920 },176863 },
176921 },176864 },
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 },
176922 .segment => try self.asmRegisterRegister(176885 .segment => try self.asmRegisterRegister(
176923 .{ ._, .mov },176886 .{ ._, .mov },
176924 dst_reg,176887 dst_reg,
...@@ -177237,7 +177200,7 @@ fn genSetReg(...@@ -177237,7 +177200,7 @@ fn genSetReg(
177237 if (src_reg_mask.info.inverted) try self.asmRegister(.{ ._, .not }, registerAlias(bits_reg, abi_size));177200 if (src_reg_mask.info.inverted) try self.asmRegister(.{ ._, .not }, registerAlias(bits_reg, abi_size));
177238 try self.genSetReg(dst_reg, ty, .{ .register = bits_reg }, .{});177201 try self.genSetReg(dst_reg, ty, .{ .register = bits_reg }, .{});
177239 },177202 },
177240 .memory, .load_symbol, .load_pcrel, .load_direct, .load_got => {177203 .memory, .load_nav, .load_uav, .load_lazy_sym, .load_extern_func => {
177241 switch (src_mcv) {177204 switch (src_mcv) {
177242 .memory => |addr| if (std.math.cast(i32, @as(i64, @bitCast(addr)))) |small_addr|177205 .memory => |addr| if (std.math.cast(i32, @as(i64, @bitCast(addr)))) |small_addr|
177243 return (try self.moveStrategy(177206 return (try self.moveStrategy(
...@@ -177251,52 +177214,50 @@ fn genSetReg(...@@ -177251,52 +177214,50 @@ fn genSetReg(
177251 .disp = small_addr,177214 .disp = small_addr,
177252 } },177215 } },
177253 }),177216 }),
177254 .load_symbol => |sym_off| switch (dst_reg.class()) {177217 .load_nav => |nav| switch (dst_reg.class()) {
177255 .general_purpose, .gphi => {177218 .general_purpose, .gphi => {
177256 assert(sym_off.off == 0);
177257 try self.asmRegisterMemory(.{ ._, .mov }, dst_alias, .{177219 try self.asmRegisterMemory(.{ ._, .mov }, dst_alias, .{
177258 .base = .{ .reloc = sym_off.sym_index },177220 .base = .{ .nav = nav },
177259 .mod = .{ .rm = .{177221 .mod = .{ .rm = .{ .size = self.memSize(ty) } },
177260 .size = self.memSize(ty),
177261 .disp = sym_off.off,
177262 } },
177263 });177222 });
177264 return;177223 return;
177265 },177224 },
177266 .segment, .mmx, .ip, .cr, .dr => unreachable,177225 .segment, .mmx, .ip, .cr, .dr => unreachable,
177267 .x87, .sse => {},177226 .x87, .sse => {},
177268 },177227 },
177269 .load_pcrel => |sym_off| switch (dst_reg.class()) {177228 .load_uav => |uav| switch (dst_reg.class()) {
177270 .general_purpose, .gphi => {177229 .general_purpose, .gphi => {
177271 assert(sym_off.off == 0);
177272 try self.asmRegisterMemory(.{ ._, .mov }, dst_alias, .{177230 try self.asmRegisterMemory(.{ ._, .mov }, dst_alias, .{
177273 .base = .{ .pcrel = sym_off.sym_index },177231 .base = .{ .uav = uav },
177274 .mod = .{ .rm = .{177232 .mod = .{ .rm = .{ .size = self.memSize(ty) } },
177275 .size = self.memSize(ty),
177276 .disp = sym_off.off,
177277 } },
177278 });177233 });
177279 return;177234 return;
177280 },177235 },
177281 .segment, .mmx, .ip, .cr, .dr => unreachable,177236 .segment, .mmx, .ip, .cr, .dr => unreachable,
177282 .x87, .sse => {},177237 .x87, .sse => {},
177283 },177238 },
177284 .load_direct => |sym_index| switch (dst_reg.class()) {177239 .load_lazy_sym => |lazy_sym| switch (dst_reg.class()) {
177285 .general_purpose, .gphi => {177240 .general_purpose, .gphi => {
177286 _ = try self.addInst(.{177241 try self.asmRegisterMemory(.{ ._, .mov }, dst_alias, .{
177287 .tag = .mov,177242 .base = .{ .lazy_sym = lazy_sym },
177288 .ops = .direct_reloc,177243 .mod = .{ .rm = .{ .size = self.memSize(ty) } },
177289 .data = .{ .rx = .{177244 });
177290 .r1 = dst_alias,177245 return;
177291 .payload = try self.addExtra(bits.SymbolOffset{ .sym_index = sym_index }),177246 },
177292 } },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) } },
177293 });177255 });
177294 return;177256 return;
177295 },177257 },
177296 .segment, .mmx, .ip, .cr, .dr => unreachable,177258 .segment, .mmx, .ip, .cr, .dr => unreachable,
177297 .x87, .sse => {},177259 .x87, .sse => {},
177298 },177260 },
177299 .load_got => {},
177300 else => unreachable,177261 else => unreachable,
177301 }177262 }
177302177263
...@@ -177309,65 +177270,17 @@ fn genSetReg(...@@ -177309,65 +177270,17 @@ fn genSetReg(
177309 .mod = .{ .rm = .{ .size = self.memSize(ty) } },177270 .mod = .{ .rm = .{ .size = self.memSize(ty) } },
177310 });177271 });
177311 },177272 },
177312 .lea_symbol => |sym_off| switch (self.bin_file.tag) {177273 .lea_nav => |nav| try self.asmRegisterMemory(.{ ._, .lea }, dst_reg.to64(), .{
177313 .elf, .macho => {177274 .base = .{ .nav = nav },
177314 try self.asmRegisterMemory(177275 }),
177315 .{ ._, .lea },177276 .lea_uav => |uav| try self.asmRegisterMemory(.{ ._, .lea }, dst_reg.to64(), .{
177316 dst_reg.to64(),177277 .base = .{ .uav = uav },
177317 .{177278 }),
177318 .base = .{ .reloc = sym_off.sym_index },177279 .lea_lazy_sym => |lazy_sym| try self.asmRegisterMemory(.{ ._, .lea }, dst_reg.to64(), .{
177319 },177280 .base = .{ .lazy_sym = lazy_sym },
177320 );177281 }),
177321 if (sym_off.off != 0) try self.asmRegisterMemory(177282 .lea_extern_func => |lazy_sym| try self.asmRegisterMemory(.{ ._, .lea }, dst_reg.to64(), .{
177322 .{ ._, .lea },177283 .base = .{ .extern_func = lazy_sym },
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 } },
177371 }),177284 }),
177372 .air_ref => |src_ref| try self.genSetReg(dst_reg, ty, try self.resolveInst(src_ref), opts),177285 .air_ref => |src_ref| try self.genSetReg(dst_reg, ty, try self.resolveInst(src_ref), opts),
177373 }177286 }
...@@ -177388,9 +177301,10 @@ fn genSetMem(...@@ -177388,9 +177301,10 @@ fn genSetMem(
177388 .none => .{ .immediate = @bitCast(@as(i64, disp)) },177301 .none => .{ .immediate = @bitCast(@as(i64, disp)) },
177389 .reg => |base_reg| .{ .register_offset = .{ .reg = base_reg, .off = disp } },177302 .reg => |base_reg| .{ .register_offset = .{ .reg = base_reg, .off = disp } },
177390 .frame => |base_frame_index| .{ .lea_frame = .{ .index = base_frame_index, .off = disp } },177303 .frame => |base_frame_index| .{ .lea_frame = .{ .index = base_frame_index, .off = disp } },
177391 .table, .rip_inst => unreachable,177304 .table, .rip_inst, .lazy_sym => unreachable,
177392 .reloc => |sym_index| .{ .lea_symbol = .{ .sym_index = sym_index, .off = disp } },177305 .nav => |nav| .{ .lea_nav = nav },
177393 .pcrel => |sym_index| .{ .lea_pcrel = .{ .sym_index = sym_index, .off = disp } },177306 .uav => |uav| .{ .lea_uav = uav },
177307 .extern_func => |extern_func| .{ .lea_extern_func = extern_func },
177394 };177308 };
177395 switch (src_mcv) {177309 switch (src_mcv) {
177396 .none,177310 .none,
...@@ -177453,6 +177367,7 @@ fn genSetMem(...@@ -177453,6 +177367,7 @@ fn genSetMem(
177453 .rm = .{ .size = .byte, .disp = disp },177367 .rm = .{ .size = .byte, .disp = disp },
177454 } }),177368 } }),
177455 .register => |src_reg| {177369 .register => |src_reg| {
177370 const ip = &zcu.intern_pool;
177456 const mem_size = switch (base) {177371 const mem_size = switch (base) {
177457 .frame => |base_fi| mem_size: {177372 .frame => |base_fi| mem_size: {
177458 assert(disp >= 0);177373 assert(disp >= 0);
...@@ -177506,8 +177421,9 @@ fn genSetMem(...@@ -177506,8 +177421,9 @@ fn genSetMem(
177506 .index = frame_index,177421 .index = frame_index,
177507 .off = disp,177422 .off = disp,
177508 }).compare(.gte, src_align),177423 }).compare(.gte, src_align),
177509 .table, .rip_inst => unreachable,177424 .table, .rip_inst, .lazy_sym, .extern_func => unreachable,
177510 .reloc, .pcrel => false,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),
177511 })).write(177427 })).write(
177512 self,177428 self,
177513 .{ .base = base, .mod = .{ .rm = .{177429 .{ .base = base, .mod = .{ .rm = .{
...@@ -177590,16 +177506,16 @@ fn genSetMem(...@@ -177590,16 +177506,16 @@ fn genSetMem(
177590 },177506 },
177591 .memory,177507 .memory,
177592 .indirect,177508 .indirect,
177593 .load_direct,
177594 .lea_direct,
177595 .load_got,
177596 .lea_got,
177597 .load_frame,177509 .load_frame,
177598 .lea_frame,177510 .lea_frame,
177599 .load_symbol,177511 .load_nav,
177600 .lea_symbol,177512 .lea_nav,
177601 .load_pcrel,177513 .load_uav,
177602 .lea_pcrel,177514 .lea_uav,
177515 .load_lazy_sym,
177516 .lea_lazy_sym,
177517 .load_extern_func,
177518 .lea_extern_func,
177603 => switch (abi_size) {177519 => switch (abi_size) {
177604 0 => {},177520 0 => {},
177605 1, 2, 4, 8 => {177521 1, 2, 4, 8 => {
...@@ -177693,119 +177609,19 @@ fn genInlineMemset(...@@ -177693,119 +177609,19 @@ fn genInlineMemset(
177693 try self.asmOpOnly(.{ .@"rep _sb", .sto });177609 try self.asmOpOnly(.{ .@"rep _sb", .sto });
177694}177610}
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
177723fn genLazySymbolRef(177612fn genLazySymbolRef(
177724 self: *CodeGen,177613 self: *CodeGen,
177725 comptime tag: Mir.Inst.Tag,177614 comptime tag: Mir.Inst.Tag,
177726 reg: Register,177615 reg: Register,
177727 lazy_sym: link.File.LazySymbol,177616 lazy_sym: link.File.LazySymbol,
177728) InnerError!void {177617) InnerError!void {
177729 const pt = self.pt;177618 if (self.mod.pic) {
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];
177803 switch (tag) {177619 switch (tag) {
177804 .lea, .call => try self.genSetReg(reg, .usize, .{177620 .lea, .call => try self.genSetReg(reg, .usize, .{
177805 .lea_symbol = .{ .sym_index = sym.nlist_idx },177621 .lea_lazy_sym = lazy_sym,
177806 }, .{}),177622 }, .{}),
177807 .mov => try self.genSetReg(reg, .usize, .{177623 .mov => try self.genSetReg(reg, .usize, .{
177808 .load_symbol = .{ .sym_index = sym.nlist_idx },177624 .lea_lazy_sym = lazy_sym,
177809 }, .{}),177625 }, .{}),
177810 else => unreachable,177626 else => unreachable,
177811 }177627 }
...@@ -177814,8 +177630,13 @@ fn genLazySymbolRef(...@@ -177814,8 +177630,13 @@ fn genLazySymbolRef(
177814 .call => try self.asmRegister(.{ ._, .call }, reg),177630 .call => try self.asmRegister(.{ ._, .call }, reg),
177815 else => unreachable,177631 else => unreachable,
177816 }177632 }
177817 } else {177633 } else switch (tag) {
177818 return self.fail("TODO implement genLazySymbol for x86_64 {s}", .{@tagName(self.bin_file.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,
177819 }177640 }
177820}177641}
177821177642
...@@ -177968,11 +177789,11 @@ fn airFloatFromInt(self: *CodeGen, inst: Air.Inst.Index) !void {...@@ -177968,11 +177789,11 @@ fn airFloatFromInt(self: *CodeGen, inst: Air.Inst.Index) !void {
177968 src_ty.fmt(pt), dst_ty.fmt(pt),177789 src_ty.fmt(pt), dst_ty.fmt(pt),
177969 });177790 });
177970177791
177971 var callee_buf: ["__floatun?i?f".len]u8 = undefined;177792 var sym_buf: ["__floatun?i?f".len]u8 = undefined;
177972 break :result try self.genCall(.{ .lib = .{177793 break :result try self.genCall(.{ .extern_func = .{
177973 .return_type = dst_ty.toIntern(),177794 .return_type = dst_ty.toIntern(),
177974 .param_types = &.{src_ty.toIntern()},177795 .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", .{
177976 switch (src_signedness) {177797 switch (src_signedness) {
177977 .signed => "",177798 .signed => "",
177978 .unsigned => "un",177799 .unsigned => "un",
...@@ -178048,11 +177869,11 @@ fn airIntFromFloat(self: *CodeGen, inst: Air.Inst.Index) !void {...@@ -178048,11 +177869,11 @@ fn airIntFromFloat(self: *CodeGen, inst: Air.Inst.Index) !void {
178048 src_ty.fmt(pt), dst_ty.fmt(pt),177869 src_ty.fmt(pt), dst_ty.fmt(pt),
178049 });177870 });
178050177871
178051 var callee_buf: ["__fixuns?f?i".len]u8 = undefined;177872 var sym_buf: ["__fixuns?f?i".len]u8 = undefined;
178052 break :result try self.genCall(.{ .lib = .{177873 break :result try self.genCall(.{ .extern_func = .{
178053 .return_type = dst_ty.toIntern(),177874 .return_type = dst_ty.toIntern(),
178054 .param_types = &.{src_ty.toIntern()},177875 .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", .{
178056 switch (dst_signedness) {177877 switch (dst_signedness) {
178057 .signed => "",177878 .signed => "",
178058 .unsigned => "uns",177879 .unsigned => "uns",
...@@ -178153,9 +177974,9 @@ fn airCmpxchg(self: *CodeGen, inst: Air.Inst.Index) !void {...@@ -178153,9 +177974,9 @@ fn airCmpxchg(self: *CodeGen, inst: Air.Inst.Index) !void {
178153 .off => return self.fail("TODO airCmpxchg with {s}", .{@tagName(ptr_mcv)}),177974 .off => return self.fail("TODO airCmpxchg with {s}", .{@tagName(ptr_mcv)}),
178154 }177975 }
178155 const ptr_lock = switch (ptr_mem.base) {177976 const ptr_lock = switch (ptr_mem.base) {
178156 .none, .frame, .reloc, .pcrel => null,177977 .none, .frame, .nav, .uav => null,
178157 .reg => |reg| self.register_manager.lockReg(reg),177978 .reg => |reg| self.register_manager.lockReg(reg),
178158 .table, .rip_inst => unreachable,177979 .table, .rip_inst, .lazy_sym, .extern_func => unreachable,
178159 };177980 };
178160 defer if (ptr_lock) |lock| self.register_manager.unlockReg(lock);177981 defer if (ptr_lock) |lock| self.register_manager.unlockReg(lock);
178161177982
...@@ -178236,9 +178057,9 @@ fn atomicOp(...@@ -178236,9 +178057,9 @@ fn atomicOp(
178236 .off => return self.fail("TODO airCmpxchg with {s}", .{@tagName(ptr_mcv)}),178057 .off => return self.fail("TODO airCmpxchg with {s}", .{@tagName(ptr_mcv)}),
178237 }178058 }
178238 const mem_lock = switch (ptr_mem.base) {178059 const mem_lock = switch (ptr_mem.base) {
178239 .none, .frame, .reloc, .pcrel => null,178060 .none, .frame, .nav, .uav => null,
178240 .reg => |reg| self.register_manager.lockReg(reg),178061 .reg => |reg| self.register_manager.lockReg(reg),
178241 .table, .rip_inst => unreachable,178062 .table, .rip_inst, .lazy_sym, .extern_func => unreachable,
178242 };178063 };
178243 defer if (mem_lock) |lock| self.register_manager.unlockReg(lock);178064 defer if (mem_lock) |lock| self.register_manager.unlockReg(lock);
178244178065
...@@ -179627,7 +179448,7 @@ fn airSelect(self: *CodeGen, inst: Air.Inst.Index) !void {...@@ -179627,7 +179448,7 @@ fn airSelect(self: *CodeGen, inst: Air.Inst.Index) !void {
179627 var mask_elems_buf: [32]u8 = undefined;179448 var mask_elems_buf: [32]u8 = undefined;
179628 const mask_elems = mask_elems_buf[0..mask_len];179449 const mask_elems = mask_elems_buf[0..mask_len];
179629 for (mask_elems, 0..) |*elem, bit| elem.* = @intCast(bit / elem_bits);179450 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 = .{
179631 .ty = mask_ty.toIntern(),179452 .ty = mask_ty.toIntern(),
179632 .storage = .{ .bytes = try zcu.intern_pool.getOrPutString(zcu.gpa, pt.tid, mask_elems, .maybe_embedded_nulls) },179453 .storage = .{ .bytes = try zcu.intern_pool.getOrPutString(zcu.gpa, pt.tid, mask_elems, .maybe_embedded_nulls) },
179633 } })));179454 } })));
...@@ -179655,7 +179476,7 @@ fn airSelect(self: *CodeGen, inst: Air.Inst.Index) !void {...@@ -179655,7 +179476,7 @@ fn airSelect(self: *CodeGen, inst: Air.Inst.Index) !void {
179655 mask_elem_ty,179476 mask_elem_ty,
179656 @as(u8, 1) << @truncate(bit),179477 @as(u8, 1) << @truncate(bit),
179657 )).toIntern();179478 )).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 = .{
179659 .ty = mask_ty.toIntern(),179480 .ty = mask_ty.toIntern(),
179660 .storage = .{ .elems = mask_elems },179481 .storage = .{ .elems = mask_elems },
179661 } })));179482 } })));
...@@ -180386,7 +180207,7 @@ fn airShuffle(self: *CodeGen, inst: Air.Inst.Index) !void {...@@ -180386,7 +180207,7 @@ fn airShuffle(self: *CodeGen, inst: Air.Inst.Index) !void {
180386 else180207 else
180387 try select_mask_elem_ty.minIntScalar(pt, select_mask_elem_ty)).toIntern();180208 try select_mask_elem_ty.minIntScalar(pt, select_mask_elem_ty)).toIntern();
180388 }180209 }
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 = .{
180390 .ty = select_mask_ty.toIntern(),180211 .ty = select_mask_ty.toIntern(),
180391 .storage = .{ .elems = select_mask_elems[0..mask_elems.len] },180212 .storage = .{ .elems = select_mask_elems[0..mask_elems.len] },
180392 } })));180213 } })));
...@@ -180531,7 +180352,7 @@ fn airShuffle(self: *CodeGen, inst: Air.Inst.Index) !void {...@@ -180531,7 +180352,7 @@ fn airShuffle(self: *CodeGen, inst: Air.Inst.Index) !void {
180531 })).toIntern();180352 })).toIntern();
180532 }180353 }
180533 const lhs_mask_ty = try pt.vectorType(.{ .len = max_abi_size, .child = .u8_type });180354 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 = .{
180535 .ty = lhs_mask_ty.toIntern(),180356 .ty = lhs_mask_ty.toIntern(),
180536 .storage = .{ .elems = lhs_mask_elems[0..max_abi_size] },180357 .storage = .{ .elems = lhs_mask_elems[0..max_abi_size] },
180537 } })));180358 } })));
...@@ -180562,7 +180383,7 @@ fn airShuffle(self: *CodeGen, inst: Air.Inst.Index) !void {...@@ -180562,7 +180383,7 @@ fn airShuffle(self: *CodeGen, inst: Air.Inst.Index) !void {
180562 })).toIntern();180383 })).toIntern();
180563 }180384 }
180564 const rhs_mask_ty = try pt.vectorType(.{ .len = max_abi_size, .child = .u8_type });180385 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 = .{
180566 .ty = rhs_mask_ty.toIntern(),180387 .ty = rhs_mask_ty.toIntern(),
180567 .storage = .{ .elems = rhs_mask_elems[0..max_abi_size] },180388 .storage = .{ .elems = rhs_mask_elems[0..max_abi_size] },
180568 } })));180389 } })));
...@@ -180896,7 +180717,7 @@ fn airAggregateInit(self: *CodeGen, inst: Air.Inst.Index) !void {...@@ -180896,7 +180717,7 @@ fn airAggregateInit(self: *CodeGen, inst: Air.Inst.Index) !void {
180896 .{ .frame = frame_index },180717 .{ .frame = frame_index },
180897 @intCast(elem_size * elements.len),180718 @intCast(elem_size * elements.len),
180898 elem_ty,180719 elem_ty,
180899 try self.genTypedValue(sentinel),180720 try self.lowerValue(sentinel),
180900 .{},180721 .{},
180901 );180722 );
180902 break :result .{ .load_frame = .{ .index = frame_index } };180723 break :result .{ .load_frame = .{ .index = frame_index } };
...@@ -180980,11 +180801,11 @@ fn airMulAdd(self: *CodeGen, inst: Air.Inst.Index) !void {...@@ -180980,11 +180801,11 @@ fn airMulAdd(self: *CodeGen, inst: Air.Inst.Index) !void {
180980 ty.fmt(pt),180801 ty.fmt(pt),
180981 });180802 });
180982180803
180983 var callee_buf: ["__fma?".len]u8 = undefined;180804 var sym_buf: ["__fma?".len]u8 = undefined;
180984 break :result try self.genCall(.{ .lib = .{180805 break :result try self.genCall(.{ .extern_func = .{
180985 .return_type = ty.toIntern(),180806 .return_type = ty.toIntern(),
180986 .param_types = &.{ ty.toIntern(), ty.toIntern(), ty.toIntern() },180807 .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}", .{
180988 floatLibcAbiPrefix(ty),180809 floatLibcAbiPrefix(ty),
180989 floatLibcAbiSuffix(ty),180810 floatLibcAbiSuffix(ty),
180990 }) catch unreachable,180811 }) catch unreachable,
...@@ -181384,7 +181205,7 @@ fn resolveInst(self: *CodeGen, ref: Air.Inst.Ref) InnerError!MCValue {...@@ -181384,7 +181205,7 @@ fn resolveInst(self: *CodeGen, ref: Air.Inst.Ref) InnerError!MCValue {
181384 const mcv: MCValue = if (ref.toIndex()) |inst| mcv: {181205 const mcv: MCValue = if (ref.toIndex()) |inst| mcv: {
181385 break :mcv self.inst_tracking.getPtr(inst).?.short;181206 break :mcv self.inst_tracking.getPtr(inst).?.short;
181386 } else mcv: {181207 } else mcv: {
181387 break :mcv try self.genTypedValue(.fromInterned(ref.toInterned().?));181208 break :mcv try self.lowerValue(.fromInterned(ref.toInterned().?));
181388 };181209 };
181389181210
181390 switch (mcv) {181211 switch (mcv) {
...@@ -181422,31 +181243,17 @@ fn limitImmediateType(self: *CodeGen, operand: Air.Inst.Ref, comptime T: type) !...@@ -181422,31 +181243,17 @@ fn limitImmediateType(self: *CodeGen, operand: Air.Inst.Ref, comptime T: type) !
181422 return mcv;181243 return mcv;
181423}181244}
181424181245
181425fn genResult(self: *CodeGen, res: codegen.GenResult) InnerError!MCValue {181246fn lowerValue(cg: *CodeGen, val: Value) Allocator.Error!MCValue {
181426 return switch (res) {181247 return switch (try codegen.lowerValue(cg.pt, val, cg.target)) {
181427 .mcv => |mcv| switch (mcv) {181248 .none => .none,
181428 .none => .none,181249 .undef => .undef,
181429 .undef => .undef,181250 .immediate => |imm| .{ .immediate = imm },
181430 .immediate => |imm| .{ .immediate = imm },181251 .lea_nav => |nav| .{ .lea_nav = nav },
181431 .memory => |addr| .{ .memory = addr },181252 .lea_uav => |uav| .{ .lea_uav = uav },
181432 .load_symbol => |sym_index| .{ .load_symbol = .{ .sym_index = sym_index } },181253 .load_uav => |uav| .{ .load_uav = uav },
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),
181439 };181254 };
181440}181255}
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
181450const CallMCValues = struct {181257const CallMCValues = struct {
181451 args: []MCValue,181258 args: []MCValue,
181452 air_arg_count: u32,181259 air_arg_count: u32,
...@@ -182311,16 +182118,16 @@ const Temp = struct {...@@ -182311,16 +182118,16 @@ const Temp = struct {
182311 .register_offset,182118 .register_offset,
182312 .register_mask,182119 .register_mask,
182313 .memory,182120 .memory,
182314 .load_symbol,
182315 .lea_symbol,
182316 .load_pcrel,
182317 .lea_pcrel,
182318 .indirect,182121 .indirect,
182319 .load_direct,
182320 .lea_direct,
182321 .load_got,
182322 .lea_got,
182323 .lea_frame,182122 .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,
182324 .elementwise_args,182131 .elementwise_args,
182325 .reserved_frame,182132 .reserved_frame,
182326 .air_ref,182133 .air_ref,
...@@ -182363,15 +182170,11 @@ const Temp = struct {...@@ -182363,15 +182170,11 @@ const Temp = struct {
182363 .mod = .{ .rm = .{ .disp = reg_off.off + off } },182170 .mod = .{ .rm = .{ .disp = reg_off.off + off } },
182364 });182171 });
182365 },182172 },
182366 .load_symbol, .load_frame => {182173 .load_frame, .load_nav, .lea_nav, .load_uav, .lea_uav, .load_lazy_sym, .lea_lazy_sym => {
182367 const new_reg = try cg.register_manager.allocReg(new_temp_index.toIndex(), abi.RegisterClass.gp);182174 const new_reg = try cg.register_manager.allocReg(new_temp_index.toIndex(), abi.RegisterClass.gp);
182368 new_temp_index.tracking(cg).* = .init(.{ .register_offset = .{ .reg = new_reg, .off = off } });182175 new_temp_index.tracking(cg).* = .init(.{ .register_offset = .{ .reg = new_reg, .off = off } });
182369 try cg.genSetReg(new_reg, .usize, mcv, .{});182176 try cg.genSetReg(new_reg, .usize, mcv, .{});
182370 },182177 },
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 } }),
182375 .lea_frame => |frame_addr| new_temp_index.tracking(cg).* = .init(.{ .lea_frame = .{182178 .lea_frame => |frame_addr| new_temp_index.tracking(cg).* = .init(.{ .lea_frame = .{
182376 .index = frame_addr.index,182179 .index = frame_addr.index,
182377 .off = frame_addr.off + off,182180 .off = frame_addr.off + off,
...@@ -182404,14 +182207,6 @@ const Temp = struct {...@@ -182404,14 +182207,6 @@ const Temp = struct {
182404 } });182207 } });
182405 return;182208 return;
182406 },182209 },
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 },
182415 .lea_frame => |frame_addr| {182210 .lea_frame => |frame_addr| {
182416 assert(std.meta.eql(temp_tracking.long.lea_frame, frame_addr));182211 assert(std.meta.eql(temp_tracking.long.lea_frame, frame_addr));
182417 temp_tracking.* = .init(.{ .lea_frame = .{182212 temp_tracking.* = .init(.{ .lea_frame = .{
...@@ -182460,53 +182255,85 @@ const Temp = struct {...@@ -182460,53 +182255,85 @@ const Temp = struct {
182460 .mod = .{ .rm = .{ .disp = reg_off.off + @as(u31, limb_index) * 8 } },182255 .mod = .{ .rm = .{ .disp = reg_off.off + @as(u31, limb_index) * 8 } },
182461 });182256 });
182462 },182257 },
182463 .load_symbol => |sym_off| {182258 .load_frame => |frame_addr| {
182464 const new_reg =182259 const new_reg =
182465 try cg.register_manager.allocReg(new_temp_index.toIndex(), abi.RegisterClass.gp);182260 try cg.register_manager.allocReg(new_temp_index.toIndex(), abi.RegisterClass.gp);
182466 new_temp_index.tracking(cg).* = .init(.{ .register = new_reg });182261 new_temp_index.tracking(cg).* = .init(.{ .register = new_reg });
182467 try cg.asmRegisterMemory(.{ ._, .mov }, new_reg.to64(), .{182262 try cg.asmRegisterMemory(.{ ._, .mov }, new_reg.to64(), .{
182468 .base = .{ .reloc = sym_off.sym_index },182263 .base = .{ .frame = frame_addr.index },
182469 .mod = .{ .rm = .{182264 .mod = .{ .rm = .{
182470 .size = .qword,182265 .size = .qword,
182471 .disp = sym_off.off + @as(u31, limb_index) * 8,182266 .disp = frame_addr.off + @as(u31, limb_index) * 8,
182472 } },182267 } },
182473 });182268 });
182474 },182269 },
182475 .lea_symbol => |sym_off| {182270 .lea_frame => |frame_addr| {
182476 assert(limb_index == 0);182271 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 });
182478 },182273 },
182479 .load_pcrel => |sym_off| {182274 .load_nav => |nav| {
182480 const new_reg =182275 const new_reg =
182481 try cg.register_manager.allocReg(new_temp_index.toIndex(), abi.RegisterClass.gp);182276 try cg.register_manager.allocReg(new_temp_index.toIndex(), abi.RegisterClass.gp);
182482 new_temp_index.tracking(cg).* = .init(.{ .register = new_reg });182277 new_temp_index.tracking(cg).* = .init(.{ .register = new_reg });
182483 try cg.asmRegisterMemory(.{ ._, .mov }, new_reg.to64(), .{182278 try cg.asmRegisterMemory(.{ ._, .mov }, new_reg.to64(), .{
182484 .base = .{ .pcrel = sym_off.sym_index },182279 .base = .{ .nav = nav },
182485 .mod = .{ .rm = .{182280 .mod = .{ .rm = .{
182486 .size = .qword,182281 .size = .qword,
182487 .disp = sym_off.off + @as(u31, limb_index) * 8,182282 .disp = @as(u31, limb_index) * 8,
182488 } },182283 } },
182489 });182284 });
182490 },182285 },
182491 .lea_pcrel => |sym_off| {182286 .lea_nav => |nav| {
182492 assert(limb_index == 0);182287 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 });
182494 },182289 },
182495 .load_frame => |frame_addr| {182290 .load_uav => |uav| {
182496 const new_reg =182291 const new_reg =
182497 try cg.register_manager.allocReg(new_temp_index.toIndex(), abi.RegisterClass.gp);182292 try cg.register_manager.allocReg(new_temp_index.toIndex(), abi.RegisterClass.gp);
182498 new_temp_index.tracking(cg).* = .init(.{ .register = new_reg });182293 new_temp_index.tracking(cg).* = .init(.{ .register = new_reg });
182499 try cg.asmRegisterMemory(.{ ._, .mov }, new_reg.to64(), .{182294 try cg.asmRegisterMemory(.{ ._, .mov }, new_reg.to64(), .{
182500 .base = .{ .frame = frame_addr.index },182295 .base = .{ .uav = uav },
182501 .mod = .{ .rm = .{182296 .mod = .{ .rm = .{
182502 .size = .qword,182297 .size = .qword,
182503 .disp = frame_addr.off + @as(u31, limb_index) * 8,182298 .disp = @as(u31, limb_index) * 8,
182504 } },182299 } },
182505 });182300 });
182506 },182301 },
182507 .lea_frame => |frame_addr| {182302 .lea_uav => |uav| {
182508 assert(limb_index == 0);182303 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 });
182510 },182337 },
182511 }182338 }
182512 cg.next_temp_index = @enumFromInt(@intFromEnum(new_temp_index) + 1);182339 cg.next_temp_index = @enumFromInt(@intFromEnum(new_temp_index) + 1);
...@@ -182563,7 +182390,7 @@ const Temp = struct {...@@ -182563,7 +182390,7 @@ const Temp = struct {
182563 const temp_tracking = temp_index.tracking(cg);182390 const temp_tracking = temp_index.tracking(cg);
182564 switch (temp_tracking.short) {182391 switch (temp_tracking.short) {
182565 else => {},182392 else => {},
182566 .register, .lea_symbol, .lea_frame => {182393 .register, .lea_frame, .lea_nav, .lea_uav, .lea_lazy_sym => {
182567 assert(limb_index == 0);182394 assert(limb_index == 0);
182568 cg.temp_type[@intFromEnum(temp_index)] = limb_ty;182395 cg.temp_type[@intFromEnum(temp_index)] = limb_ty;
182569 return;182396 return;
...@@ -182580,15 +182407,6 @@ const Temp = struct {...@@ -182580,15 +182407,6 @@ const Temp = struct {
182580 cg.temp_type[@intFromEnum(temp_index)] = limb_ty;182407 cg.temp_type[@intFromEnum(temp_index)] = limb_ty;
182581 return;182408 return;
182582 },182409 },
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 },
182592 .load_frame => |frame_addr| if (!frame_addr.index.isNamed()) {182410 .load_frame => |frame_addr| if (!frame_addr.index.isNamed()) {
182593 assert(std.meta.eql(temp_tracking.long.load_frame, frame_addr));182411 assert(std.meta.eql(temp_tracking.long.load_frame, frame_addr));
182594 temp_tracking.* = .init(.{ .load_frame = .{182412 temp_tracking.* = .init(.{ .load_frame = .{
...@@ -182779,27 +182597,20 @@ const Temp = struct {...@@ -182779,27 +182597,20 @@ const Temp = struct {
182779 .immediate,182597 .immediate,
182780 .register,182598 .register,
182781 .register_offset,182599 .register_offset,
182782 .lea_direct,
182783 .lea_got,
182784 .lea_frame,182600 .lea_frame,
182785 => return false,182601 => return false,
182786 .memory,182602 .memory,
182787 .indirect,182603 .indirect,
182788 .load_symbol,
182789 .load_pcrel,
182790 .load_direct,
182791 .load_got,
182792 .load_frame,182604 .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,
182793 => return temp.toRegClass(true, .general_purpose, cg),182613 => 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 },
182803 }182614 }
182804 }182615 }
182805182616
...@@ -182866,7 +182677,7 @@ const Temp = struct {...@@ -182866,7 +182677,7 @@ const Temp = struct {
182866 ), cg),182677 ), cg),
182867 else => unreachable,182678 else => unreachable,
182868 },182679 },
182869 .memory, .indirect, .load_frame, .load_symbol => {182680 .memory, .indirect, .load_frame, .load_nav, .load_uav, .load_lazy_sym => {
182870 var val_ptr = try cg.tempInit(.usize, val_mcv.address());182681 var val_ptr = try cg.tempInit(.usize, val_mcv.address());
182871 var len = try cg.tempInit(.usize, .{ .immediate = val_ty.abiSize(cg.pt.zcu) });182682 var len = try cg.tempInit(.usize, .{ .immediate = val_ty.abiSize(cg.pt.zcu) });
182872 try val_ptr.memcpy(ptr, &len, cg);182683 try val_ptr.memcpy(ptr, &len, cg);
...@@ -182904,7 +182715,11 @@ const Temp = struct {...@@ -182904,7 +182715,11 @@ const Temp = struct {
182904 // hack around linker relocation bugs182715 // hack around linker relocation bugs
182905 switch (ptr.tracking(cg).short) {182716 switch (ptr.tracking(cg).short) {
182906 else => {},182717 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)) {},
182908 }182723 }
182909 try cg.asmMemoryImmediate(182724 try cg.asmMemoryImmediate(
182910 .{ ._, .mov },182725 .{ ._, .mov },
...@@ -182918,7 +182733,11 @@ const Temp = struct {...@@ -182918,7 +182733,11 @@ const Temp = struct {
182918 // hack around linker relocation bugs182733 // hack around linker relocation bugs
182919 switch (ptr.tracking(cg).short) {182734 switch (ptr.tracking(cg).short) {
182920 else => {},182735 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)) {},
182922 }182741 }
182923 try cg.asmSetccMemory(182742 try cg.asmSetccMemory(
182924 cc,182743 cc,
...@@ -182962,8 +182781,8 @@ const Temp = struct {...@@ -182962,8 +182781,8 @@ const Temp = struct {
182962 try ptr.tracking(cg).short.deref().mem(cg, .{ .size = .byte }),182781 try ptr.tracking(cg).short.deref().mem(cg, .{ .size = .byte }),
182963 );182782 );
182964 },182783 },
182965 .lea_frame, .lea_symbol => continue :val_to_gpr,182784 .lea_frame, .lea_nav, .lea_uav, .lea_lazy_sym => continue :val_to_gpr,
182966 .memory, .indirect, .load_frame, .load_symbol => {182785 .memory, .indirect, .load_frame, .load_nav, .load_uav, .load_lazy_sym => {
182967 var val_ptr = try cg.tempInit(.usize, val_mcv.address());182786 var val_ptr = try cg.tempInit(.usize, val_mcv.address());
182968 var len = try cg.tempInit(.usize, .{ .immediate = val_ty.abiSize(cg.pt.zcu) });182787 var len = try cg.tempInit(.usize, .{ .immediate = val_ty.abiSize(cg.pt.zcu) });
182969 try ptr.memcpy(&val_ptr, &len, cg);182788 try ptr.memcpy(&val_ptr, &len, cg);
...@@ -183003,7 +182822,7 @@ const Temp = struct {...@@ -183003,7 +182822,7 @@ const Temp = struct {
183003 ), cg),182822 ), cg),
183004 else => unreachable,182823 else => unreachable,
183005 },182824 },
183006 .memory, .indirect, .load_frame, .load_symbol => {182825 .memory, .indirect, .load_frame, .load_nav, .load_uav, .load_lazy_sym => {
183007 var val_ptr = try cg.tempInit(.usize, val_mcv.address());182826 var val_ptr = try cg.tempInit(.usize, val_mcv.address());
183008 var src_ptr =182827 var src_ptr =
183009 try cg.tempInit(.usize, src.tracking(cg).short.address().offset(opts.disp));182828 try cg.tempInit(.usize, src.tracking(cg).short.address().offset(opts.disp));
...@@ -183097,8 +182916,8 @@ const Temp = struct {...@@ -183097,8 +182916,8 @@ const Temp = struct {
183097 }),182916 }),
183098 );182917 );
183099 },182918 },
183100 .lea_frame, .lea_symbol => continue :val_to_gpr,182919 .lea_frame, .lea_nav, .lea_uav, .lea_lazy_sym => continue :val_to_gpr,
183101 .memory, .indirect, .load_frame, .load_symbol => {182920 .memory, .indirect, .load_frame, .load_nav, .load_uav, .load_lazy_sym => {
183102 var dst_ptr =182921 var dst_ptr =
183103 try cg.tempInit(.usize, dst.tracking(cg).short.address().offset(opts.disp));182922 try cg.tempInit(.usize, dst.tracking(cg).short.address().offset(opts.disp));
183104 var val_ptr = try cg.tempInit(.usize, val_mcv.address());182923 var val_ptr = try cg.tempInit(.usize, val_mcv.address());
...@@ -183119,7 +182938,7 @@ const Temp = struct {...@@ -183119,7 +182938,7 @@ const Temp = struct {
183119 // hack around linker relocation bugs182938 // hack around linker relocation bugs
183120 switch (ptr.tracking(cg).short) {182939 switch (ptr.tracking(cg).short) {
183121 else => {},182940 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)
183123 while (try ptr.toRegClass(false, .general_purpose, cg)) {},182942 while (try ptr.toRegClass(false, .general_purpose, cg)) {},
183124 }182943 }
183125 try strat.read(cg, dst_reg, try ptr.tracking(cg).short.deref().mem(cg, .{182944 try strat.read(cg, dst_reg, try ptr.tracking(cg).short.deref().mem(cg, .{
...@@ -183139,7 +182958,7 @@ const Temp = struct {...@@ -183139,7 +182958,7 @@ const Temp = struct {
183139 // hack around linker relocation bugs182958 // hack around linker relocation bugs
183140 switch (ptr.tracking(cg).short) {182959 switch (ptr.tracking(cg).short) {
183141 else => {},182960 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)) {},
183143 }182962 }
183144 const strat = try cg.moveStrategy(src_ty, src_rc, false);182963 const strat = try cg.moveStrategy(src_ty, src_rc, false);
183145 try strat.write(cg, try ptr.tracking(cg).short.deref().mem(cg, .{182964 try strat.write(cg, try ptr.tracking(cg).short.deref().mem(cg, .{
...@@ -186902,7 +186721,7 @@ const Temp = struct {...@@ -186902,7 +186721,7 @@ const Temp = struct {
186902 },186721 },
186903 .call_frame = .{ .alignment = .@"16" },186722 .call_frame = .{ .alignment = .@"16" },
186904 .extra_temps = .{186723 .extra_temps = .{
186905 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divti3" } } },186724 .{ .type = .usize, .kind = .{ .extern_func = "__divti3" } },
186906 .unused,186725 .unused,
186907 .unused,186726 .unused,
186908 .unused,186727 .unused,
...@@ -186931,7 +186750,7 @@ const Temp = struct {...@@ -186931,7 +186750,7 @@ const Temp = struct {
186931 },186750 },
186932 .call_frame = .{ .alignment = .@"16" },186751 .call_frame = .{ .alignment = .@"16" },
186933 .extra_temps = .{186752 .extra_temps = .{
186934 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__udivti3" } } },186753 .{ .type = .usize, .kind = .{ .extern_func = "__udivti3" } },
186935 .unused,186754 .unused,
186936 .unused,186755 .unused,
186937 .unused,186756 .unused,
...@@ -186964,7 +186783,7 @@ const Temp = struct {...@@ -186964,7 +186783,7 @@ const Temp = struct {
186964 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 1 } } },186783 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 1 } } },
186965 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 2 } } },186784 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 2 } } },
186966 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 3 } } },186785 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 3 } } },
186967 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divei4" } } },186786 .{ .type = .usize, .kind = .{ .extern_func = "__divei4" } },
186968 .unused,186787 .unused,
186969 .unused,186788 .unused,
186970 .unused,186789 .unused,
...@@ -186997,7 +186816,7 @@ const Temp = struct {...@@ -186997,7 +186816,7 @@ const Temp = struct {
186997 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 1 } } },186816 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 1 } } },
186998 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 2 } } },186817 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 2 } } },
186999 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 3 } } },186818 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 3 } } },
187000 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__udivei4" } } },186819 .{ .type = .usize, .kind = .{ .extern_func = "__udivei4" } },
187001 .unused,186820 .unused,
187002 .unused,186821 .unused,
187003 .unused,186822 .unused,
...@@ -187361,7 +187180,7 @@ const Temp = struct {...@@ -187361,7 +187180,7 @@ const Temp = struct {
187361 .{ .type = .i64, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 1 } } },187180 .{ .type = .i64, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 1 } } },
187362 .{ .type = .u64, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 2 } } },187181 .{ .type = .u64, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 2 } } },
187363 .{ .type = .i64, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 3 } } },187182 .{ .type = .i64, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 3 } } },
187364 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divti3" } } },187183 .{ .type = .usize, .kind = .{ .extern_func = "__divti3" } },
187365 .{ .type = .u64, .kind = .{ .ret_gpr = .{ .cc = .ccc, .at = 0 } } },187184 .{ .type = .u64, .kind = .{ .ret_gpr = .{ .cc = .ccc, .at = 0 } } },
187366 .unused,187185 .unused,
187367 .unused,187186 .unused,
...@@ -187399,7 +187218,7 @@ const Temp = struct {...@@ -187399,7 +187218,7 @@ const Temp = struct {
187399 .{ .type = .u64, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 1 } } },187218 .{ .type = .u64, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 1 } } },
187400 .{ .type = .u64, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 2 } } },187219 .{ .type = .u64, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 2 } } },
187401 .{ .type = .u64, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 3 } } },187220 .{ .type = .u64, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 3 } } },
187402 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__udivti3" } } },187221 .{ .type = .usize, .kind = .{ .extern_func = "__udivti3" } },
187403 .{ .type = .u64, .kind = .{ .ret_gpr = .{ .cc = .ccc, .at = 0 } } },187222 .{ .type = .u64, .kind = .{ .ret_gpr = .{ .cc = .ccc, .at = 0 } } },
187404 .unused,187223 .unused,
187405 .unused,187224 .unused,
...@@ -187437,7 +187256,7 @@ const Temp = struct {...@@ -187437,7 +187256,7 @@ const Temp = struct {
187437 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 1 } } },187256 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 1 } } },
187438 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 2 } } },187257 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 2 } } },
187439 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 3 } } },187258 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 3 } } },
187440 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divei4" } } },187259 .{ .type = .usize, .kind = .{ .extern_func = "__divei4" } },
187441 .unused,187260 .unused,
187442 .unused,187261 .unused,
187443 .unused,187262 .unused,
...@@ -187473,7 +187292,7 @@ const Temp = struct {...@@ -187473,7 +187292,7 @@ const Temp = struct {
187473 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 1 } } },187292 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 1 } } },
187474 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 2 } } },187293 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 2 } } },
187475 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 3 } } },187294 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 3 } } },
187476 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__udivei4" } } },187295 .{ .type = .usize, .kind = .{ .extern_func = "__udivei4" } },
187477 .unused,187296 .unused,
187478 .unused,187297 .unused,
187479 .unused,187298 .unused,
...@@ -187528,16 +187347,16 @@ const Temp = struct {...@@ -187528,16 +187347,16 @@ const Temp = struct {
187528 .register_overflow,187347 .register_overflow,
187529 .register_mask,187348 .register_mask,
187530 .memory,187349 .memory,
187531 .load_symbol,
187532 .lea_symbol,
187533 .load_pcrel,
187534 .lea_pcrel,
187535 .indirect,187350 .indirect,
187536 .load_direct,
187537 .lea_direct,
187538 .load_got,
187539 .lea_got,
187540 .load_frame,187351 .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,
187541 => {187360 => {
187542 const result = try cg.allocRegOrMem(inst, true);187361 const result = try cg.allocRegOrMem(inst, true);
187543 try cg.genCopy(cg.typeOfIndex(inst), result, temp_mcv, .{});187362 try cg.genCopy(cg.typeOfIndex(inst), result, temp_mcv, .{});
...@@ -187714,7 +187533,7 @@ fn tempInit(cg: *CodeGen, ty: Type, value: MCValue) InnerError!Temp {...@@ -187714,7 +187533,7 @@ fn tempInit(cg: *CodeGen, ty: Type, value: MCValue) InnerError!Temp {
187714}187533}
187715187534
187716fn tempFromValue(cg: *CodeGen, value: Value) InnerError!Temp {187535fn 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));
187718}187537}
187719187538
187720fn tempMemFromValue(cg: *CodeGen, value: Value) InnerError!Temp {187539fn tempMemFromValue(cg: *CodeGen, value: Value) InnerError!Temp {
...@@ -187722,13 +187541,20 @@ fn tempMemFromValue(cg: *CodeGen, value: Value) InnerError!Temp {...@@ -187722,13 +187541,20 @@ fn tempMemFromValue(cg: *CodeGen, value: Value) InnerError!Temp {
187722}187541}
187723187542
187724fn tempMemFromAlignedValue(cg: *CodeGen, alignment: InternPool.Alignment, value: Value) InnerError!Temp {187543fn 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 } });
187726}187555}
187727187556
187728fn tempFromOperand(cg: *CodeGen, op_ref: Air.Inst.Ref, op_dies: bool) InnerError!Temp {187557fn 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
187732 if (op_dies) {187558 if (op_dies) {
187733 const temp_index = cg.next_temp_index;187559 const temp_index = cg.next_temp_index;
187734 const temp: Temp = .{ .index = temp_index.toIndex() };187560 const temp: Temp = .{ .index = temp_index.toIndex() };
...@@ -187742,8 +187568,7 @@ fn tempFromOperand(cg: *CodeGen, op_ref: Air.Inst.Ref, op_dies: bool) InnerError...@@ -187742,8 +187568,7 @@ fn tempFromOperand(cg: *CodeGen, op_ref: Air.Inst.Ref, op_dies: bool) InnerError
187742 }187568 }
187743187569
187744 if (op_ref.toIndex()) |op_inst| return .{ .index = op_inst };187570 if (op_ref.toIndex()) |op_inst| return .{ .index = op_inst };
187745 const val = op_ref.toInterned().?;187571 return cg.tempFromValue(.fromInterned(op_ref.toInterned().?));
187746 return cg.tempInit(.fromInterned(ip.typeOf(val)), try cg.genTypedValue(.fromInterned(val)));
187747}187572}
187748187573
187749fn tempsFromOperandsInner(187574fn tempsFromOperandsInner(
...@@ -188578,8 +188403,8 @@ const Select = struct {...@@ -188578,8 +188403,8 @@ const Select = struct {
188578 splat_int_mem: struct { ref: Select.Operand.Ref, inside: enum { umin, smin, smax } = .umin, outside: enum { smin, smax } },188403 splat_int_mem: struct { ref: Select.Operand.Ref, inside: enum { umin, smin, smax } = .umin, outside: enum { smin, smax } },
188579 splat_float_mem: struct { ref: Select.Operand.Ref, inside: enum { zero } = .zero, outside: f16 },188404 splat_float_mem: struct { ref: Select.Operand.Ref, inside: enum { zero } = .zero, outside: f16 },
188580 frame: FrameIndex,188405 frame: FrameIndex,
188581 lazy_symbol: struct { kind: link.File.LazySymbol.Kind, ref: Select.Operand.Ref = .none },188406 lazy_sym: struct { kind: link.File.LazySymbol.Kind, ref: Select.Operand.Ref = .none },
188582 symbol: *const struct { lib: ?[]const u8 = null, name: []const u8 },188407 extern_func: [*:0]const u8,
188583188408
188584 const ConstSpec = struct {188409 const ConstSpec = struct {
188585 ref: Select.Operand.Ref = .none,188410 ref: Select.Operand.Ref = .none,
...@@ -189010,43 +188835,21 @@ const Select = struct {...@@ -189010,43 +188835,21 @@ const Select = struct {
189010 } }))), true };188835 } }))), true };
189011 },188836 },
189012 .frame => |frame_index| .{ try cg.tempInit(spec.type, .{ .load_frame = .{ .index = frame_index } }), true },188837 .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| {
189014 const ip = &pt.zcu.intern_pool;188839 const ip = &pt.zcu.intern_pool;
189015 const ty = if (lazy_symbol_spec.ref == .none) spec.type else lazy_symbol_spec.ref.typeOf(s);188840 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 = .{
189017 .kind = lazy_symbol_spec.kind,188842 .kind = lazy_symbol_spec.kind,
189018 .ty = switch (ip.indexToKey(ty.toIntern())) {188843 .ty = switch (ip.indexToKey(ty.toIntern())) {
189019 .inferred_error_set_type => |func_index| switch (ip.funcIesResolvedUnordered(func_index)) {188844 .inferred_error_set_type => |func_index| switch (ip.funcIesResolvedUnordered(func_index)) {
189020 .none => unreachable, // unresolved inferred error set188845 .none => unreachable,
189021 else => |ty_index| ty_index,188846 else => |ty_index| ty_index,
189022 },188847 },
189023 else => ty.toIntern(),188848 else => ty.toIntern(),
189024 },188849 },
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)}),
189038 } }), true };188850 } }), true };
189039 },188851 },
189040 .symbol => |symbol_spec| .{ try cg.tempInit(spec.type, .{ .lea_symbol = .{188852 .extern_func => |extern_func_spec| .{ try cg.tempInit(spec.type, .{ .lea_extern_func = try cg.addString(std.mem.span(extern_func_spec)) }), true },
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 },
189050 };188853 };
189051 }188854 }
189052188855
...@@ -190089,9 +189892,12 @@ const Select = struct {...@@ -190089,9 +189892,12 @@ const Select = struct {
190089 .register => |reg| .{ .reg = s.lowerReg(reg.toSize(op.flags.base.size, s.cg.target)) },189892 .register => |reg| .{ .reg = s.lowerReg(reg.toSize(op.flags.base.size, s.cg.target)) },
190090 .register_pair, .register_triple, .register_quadruple, .register_offset, .register_overflow => unreachable,189893 .register_pair, .register_triple, .register_quadruple, .register_offset, .register_overflow => unreachable,
190091 .register_mask => |reg_mask| .{ .reg = s.lowerReg(reg_mask.reg.toSize(op.flags.base.size, s.cg.target)) },189894 .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 } },
190092 else => |mcv| .{ .mem = try mcv.mem(s.cg, .{ .size = op.flags.base.size }) },189899 else => |mcv| .{ .mem = try mcv.mem(s.cg, .{ .size = op.flags.base.size }) },
190093 .lea_symbol => |sym_off| .{ .imm = .rel(sym_off) },189900 .lea_frame, .elementwise_args, .reserved_frame, .air_ref => unreachable,
190094 .load_direct, .lea_direct, .load_got, .lea_got, .lea_frame, .elementwise_args, .reserved_frame, .air_ref => unreachable,
190095 },189901 },
190096 1...2 => |imm| switch (op.flags.base.ref.valueOf(s)) {189902 1...2 => |imm| switch (op.flags.base.ref.valueOf(s)) {
190097 inline .register_pair, .register_triple, .register_quadruple => |regs| .{189903 inline .register_pair, .register_triple, .register_quadruple => |regs| .{
...@@ -190105,37 +189911,20 @@ const Select = struct {...@@ -190105,37 +189911,20 @@ const Select = struct {
190105 },189911 },
190106 .simm => .{ .imm = .s(op.adjustedImm(i32, s)) },189912 .simm => .{ .imm = .s(op.adjustedImm(i32, s)) },
190107 .uimm => .{ .imm = .u(@bitCast(op.adjustedImm(i64, s))) },189913 .uimm => .{ .imm = .u(@bitCast(op.adjustedImm(i64, s))) },
190108 .lea => .{ .mem = .{189914 .lea => .{ .mem = try op.flags.base.ref.valueOf(s).deref().mem(s.cg, .{
190109 .base = switch (op.flags.base.ref.valueOf(s)) {189915 .size = op.flags.base.size,
189916 .index = switch (op.flags.index.ref.valueOf(s)) {
190110 else => unreachable,189917 else => unreachable,
190111 .none => .none,189918 .none => .none,
190112 .register => |base_reg| .{ .reg = base_reg.toSize(.ptr, s.cg.target) },189919 .register => |index_reg| index_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 },
190116 },189920 },
190117 .mod = .{ .rm = .{189921 .scale = op.flags.index.scale,
190118 .size = op.flags.base.size,189922 .disp = op.adjustedImm(i32, s) + switch (op.flags.index.ref.valueOf(s)) {
190119 .index = switch (op.flags.index.ref.valueOf(s)) {189923 else => unreachable,
190120 else => unreachable,189924 .none, .register, .lea_nav, .lea_uav, .lea_lazy_sym, .lea_extern_func => 0,
190121 .none => .none,189925 .register_offset => |base_reg_off| base_reg_off.off,
190122 .register => |index_reg| index_reg.toSize(.ptr, s.cg.target),189926 },
190123 .register_offset => |index_reg_off| index_reg_off.reg.toSize(.ptr, s.cg.target),189927 }) },
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 } },
190139 .mem => .{ .mem = try op.flags.base.ref.valueOf(s).mem(s.cg, .{189928 .mem => .{ .mem = try op.flags.base.ref.valueOf(s).mem(s.cg, .{
190140 .size = op.flags.base.size,189929 .size = op.flags.base.size,
190141 .index = switch (op.flags.index.ref.valueOf(s)) {189930 .index = switch (op.flags.index.ref.valueOf(s)) {
src/arch/x86_64/Emit.zig+546-235
...@@ -1,6 +1,9 @@...@@ -1,6 +1,9 @@
1//! This file contains the functionality for emitting x86_64 MIR as machine code1//! This file contains the functionality for emitting x86_64 MIR as machine code
22
3lower: Lower,3lower: Lower,
4bin_file: *link.File,
5pt: Zcu.PerThread,
6pic: bool,
4atom_index: u32,7atom_index: u32,
5debug_output: link.File.DebugInfoOutput,8debug_output: link.File.DebugInfoOutput,
6code: *std.ArrayListUnmanaged(u8),9code: *std.ArrayListUnmanaged(u8),
...@@ -9,28 +12,28 @@ prev_di_loc: Loc,...@@ -9,28 +12,28 @@ prev_di_loc: Loc,
9/// Relative to the beginning of `code`.12/// Relative to the beginning of `code`.
10prev_di_pc: usize,13prev_di_pc: usize,
1114
15code_offset_mapping: std.ArrayListUnmanaged(u32),
16relocs: std.ArrayListUnmanaged(Reloc),
17table_relocs: std.ArrayListUnmanaged(TableReloc),
18
12pub const Error = Lower.Error || error{19pub const Error = Lower.Error || error{
13 EmitFail,20 EmitFail,
14} || link.File.UpdateDebugInfoError;21} || link.File.UpdateDebugInfoError;
1522
16pub fn emitMir(emit: *Emit) Error!void {23pub fn emitMir(emit: *Emit) Error!void {
17 const gpa = emit.lower.bin_file.comp.gpa;24 const gpa = emit.bin_file.comp.gpa;
18 const code_offset_mapping = try emit.lower.allocator.alloc(u32, emit.lower.mir.instructions.len);25 try emit.code_offset_mapping.resize(gpa, emit.lower.mir.instructions.len);
19 defer emit.lower.allocator.free(code_offset_mapping);26 emit.relocs.clearRetainingCapacity();
20 var relocs: std.ArrayListUnmanaged(Reloc) = .empty;27 emit.table_relocs.clearRetainingCapacity();
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;
25 var local_index: usize = 0;28 var local_index: usize = 0;
26 for (0..emit.lower.mir.instructions.len) |mir_i| {29 for (0..emit.lower.mir.instructions.len) |mir_i| {
27 const mir_index: Mir.Inst.Index = @intCast(mir_i);30 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);
29 const lowered = try emit.lower.lowerMir(mir_index);32 const lowered = try emit.lower.lowerMir(mir_index);
30 var lowered_relocs = lowered.relocs;33 var lowered_relocs = lowered.relocs;
31 for (lowered.insts, 0..) |lowered_inst, lowered_index| {34 lowered_inst: for (lowered.insts, 0..) |lowered_inst, lowered_index| {
32 const start_offset: u32 = @intCast(emit.code.items.len);
33 if (lowered_inst.prefix == .directive) {35 if (lowered_inst.prefix == .directive) {
36 const start_offset: u32 = @intCast(emit.code.items.len);
34 switch (emit.debug_output) {37 switch (emit.debug_output) {
35 .dwarf => |dwarf| switch (lowered_inst.encoding.mnemonic) {38 .dwarf => |dwarf| switch (lowered_inst.encoding.mnemonic) {
36 .@".cfi_def_cfa" => try dwarf.genDebugFrame(start_offset, .{ .def_cfa = .{39 .@".cfi_def_cfa" => try dwarf.genDebugFrame(start_offset, .{ .def_cfa = .{
...@@ -83,204 +86,305 @@ pub fn emitMir(emit: *Emit) Error!void {...@@ -83,204 +86,305 @@ pub fn emitMir(emit: *Emit) Error!void {
83 }86 }
84 continue;87 continue;
85 }88 }
86 try lowered_inst.encode(emit.code.writer(gpa), .{});89 var reloc_info_buf: [2]RelocInfo = undefined;
87 const end_offset: u32 = @intCast(emit.code.items.len);90 var reloc_info_index: usize = 0;
88 while (lowered_relocs.len > 0 and91 while (lowered_relocs.len > 0 and
89 lowered_relocs[0].lowered_inst_index == lowered_index) : ({92 lowered_relocs[0].lowered_inst_index == lowered_index) : ({
90 lowered_relocs = lowered_relocs[1..];93 lowered_relocs = lowered_relocs[1..];
91 }) switch (lowered_relocs[0].target) {94 reloc_info_index += 1;
92 .inst => |target| {95 }) reloc_info_buf[reloc_info_index] = .{
93 const inst_length: u4 = @intCast(end_offset - start_offset);96 .op_index = lowered_relocs[0].op_index,
94 const reloc_offset, const reloc_length = reloc_offset_length: {97 .off = lowered_relocs[0].off,
95 var reloc_offset = inst_length;98 .target = target: switch (lowered_relocs[0].target) {
96 var op_index: usize = lowered_inst.ops.len;99 .inst => |inst| .{ .index = inst, .is_extern = false, .type = .inst },
97 while (true) {100 .table => .{ .index = undefined, .is_extern = false, .type = .table },
98 op_index -= 1;101 .nav => |nav| {
99 const op = lowered_inst.encoding.data.ops[op_index];102 const ip = &emit.pt.zcu.intern_pool;
100 if (op == .none) continue;103 const sym_index = switch (try codegen.genNavRef(
101 const is_mem = op.isMemory();104 emit.bin_file,
102 const enc_length: u4 = if (is_mem) switch (lowered_inst.ops[op_index].mem.sib.base) {105 emit.pt,
103 .rip_inst => 4,106 emit.lower.src_loc,
104 else => unreachable,107 .fromInterned(ip.getNav(nav).typeOf(ip)),
105 } else @intCast(std.math.divCeil(u7, @intCast(op.immBitSize()), 8) catch unreachable);108 nav,
106 reloc_offset -= enc_length;109 emit.lower.target.*,
107 if (op_index == lowered_relocs[0].op_index) break :reloc_offset_length .{ reloc_offset, enc_length };110 )) {
108 std.debug.assert(!is_mem);111 .mcv => |mcv| switch (mcv) {
109 }112 else => std.debug.panic("{s}: {}\n", .{ @src().fn_name, mcv }),
110 };113 .lea_symbol => |sym_index| sym_index,
111 try relocs.append(emit.lower.allocator, .{114 },
112 .inst_offset = start_offset,115 .fail => |em| {
113 .inst_length = inst_length,116 assert(emit.lower.err_msg == null);
114 .source_offset = reloc_offset,117 emit.lower.err_msg = em;
115 .source_length = reloc_length,118 return error.EmitFail;
116 .target = target,119 },
117 .target_offset = lowered_relocs[0].off,120 };
118 });121 break :target switch (ip.getNav(nav).status) {
119 },122 .unresolved => unreachable,
120 .table => try table_relocs.append(emit.lower.allocator, .{123 .type_resolved => |type_resolved| .{
121 .source_offset = end_offset - 4,124 .index = sym_index,
122 .target_offset = lowered_relocs[0].off,125 .is_extern = false,
123 }),126 .type = if (type_resolved.is_threadlocal) .tlv else .symbol,
124 .linker_extern_fn => |sym_index| if (emit.lower.bin_file.cast(.elf)) |elf_file| {127 },
125 // Add relocation to the decl.128 .fully_resolved => |fully_resolved| switch (ip.indexToKey(fully_resolved.val)) {
126 const zo = elf_file.zigObjectPtr().?;129 .@"extern" => |@"extern"| .{
127 const atom_ptr = zo.symbol(emit.atom_index).atom(elf_file).?;130 .index = sym_index,
128 const r_type = @intFromEnum(std.elf.R_X86_64.PLT32);131 .is_extern = switch (@"extern".visibility) {
129 try atom_ptr.addReloc(gpa, .{132 .default => true,
130 .r_offset = end_offset - 4,133 .hidden, .protected => false,
131 .r_info = @as(u64, sym_index) << 32 | r_type,134 },
132 .r_addend = lowered_relocs[0].off - 4,135 .type = if (@"extern".is_threadlocal) .tlv else .symbol,
133 }, zo);136 .force_pcrel_direct = switch (@"extern".relocation) {
134 } else if (emit.lower.bin_file.cast(.macho)) |macho_file| {137 .any => false,
135 // Add relocation to the decl.138 .pcrel => true,
136 const zo = macho_file.getZigObject().?;139 },
137 const atom = zo.symbols.items[emit.atom_index].getAtom(macho_file).?;140 },
138 try atom.addReloc(macho_file, .{141 .variable => |variable| .{
139 .tag = .@"extern",142 .index = sym_index,
140 .offset = end_offset - 4,143 .is_extern = false,
141 .target = sym_index,144 .type = if (variable.is_threadlocal) .tlv else .symbol,
142 .addend = lowered_relocs[0].off,145 },
143 .type = .branch,146 else => .{ .index = sym_index, .is_extern = false, .type = .symbol },
144 .meta = .{147 },
145 .pcrel = true,148 };
146 .has_subtractor = false,149 },
147 .length = 2,150 .uav => |uav| .{
148 .symbolnum = @intCast(sym_index),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 },
149 },166 },
150 });167 .is_extern = false,
151 } else if (emit.lower.bin_file.cast(.coff)) |coff_file| {168 .type = .symbol,
152 // Add relocation to the decl.169 },
153 const atom_index = coff_file.getAtomIndexForSymbol(170 .lazy_sym => |lazy_sym| .{
154 .{ .sym_index = emit.atom_index, .file = null },171 .index = if (emit.bin_file.cast(.elf)) |elf_file|
155 ).?;172 elf_file.zigObjectPtr().?.getOrCreateMetadataForLazySymbol(elf_file, emit.pt, lazy_sym) catch |err|
156 const target = if (link.File.Coff.global_symbol_bit & sym_index != 0)173 return emit.fail("{s} creating lazy symbol", .{@errorName(err)})
157 coff_file.getGlobalByIndex(link.File.Coff.global_symbol_mask & sym_index)174 else if (emit.bin_file.cast(.macho)) |macho_file|
158 else175 macho_file.getZigObject().?.getOrCreateMetadataForLazySymbol(macho_file, emit.pt, lazy_sym) catch |err|
159 link.File.Coff.SymbolWithLoc{ .sym_index = sym_index, .file = null };176 return emit.fail("{s} creating lazy symbol", .{@errorName(err)})
160 try coff_file.addRelocation(atom_index, .{177 else if (emit.bin_file.cast(.coff)) |coff_file| sym_index: {
161 .type = .direct,178 const atom = coff_file.getOrCreateAtomForLazySymbol(emit.pt, lazy_sym) catch |err|
162 .target = target,179 return emit.fail("{s} creating lazy symbol", .{@errorName(err)});
163 .offset = end_offset - 4,180 break :sym_index coff_file.getAtom(atom).getSymbolIndex().?;
164 .addend = @intCast(lowered_relocs[0].off),181 } else if (emit.bin_file.cast(.plan9)) |p9_file|
165 .pcrel = true,182 p9_file.getOrCreateAtomForLazySymbol(emit.pt, lazy_sym) catch |err|
166 .length = 2,183 return emit.fail("{s} creating lazy symbol", .{@errorName(err)})
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)
200 else184 else
201 @intFromEnum(std.elf.R_X86_64.PC32);185 return emit.fail("lazy symbols unimplemented for {s}", .{@tagName(emit.bin_file.tag)}),
202 try atom.addReloc(gpa, .{186 .is_extern = false,
203 .r_offset = end_offset - 4,187 .type = .symbol,
204 .r_info = @as(u64, sym_index) << 32 | r_type,188 },
205 .r_addend = lowered_relocs[0].off - 4,189 .extern_func => |extern_func| .{
206 }, zo);190 .index = if (emit.bin_file.cast(.elf)) |elf_file|
207 } else {191 try elf_file.getGlobalSymbol(extern_func.toSlice(&emit.lower.mir).?, null)
208 const r_type: u32 = if (sym.flags.is_tls)192 else if (emit.bin_file.cast(.macho)) |macho_file|
209 @intFromEnum(std.elf.R_X86_64.TPOFF32)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)
210 else196 else
211 @intFromEnum(std.elf.R_X86_64.@"32");197 return emit.fail("external symbols unimplemented for {s}", .{@tagName(emit.bin_file.tag)}),
212 try atom.addReloc(gpa, .{198 .is_extern = true,
213 .r_offset = end_offset - 4,199 .type = .symbol,
214 .r_info = @as(u64, sym_index) << 32 | r_type,200 },
215 .r_addend = lowered_relocs[0].off,201 },
216 }, zo);202 };
217 }203 const reloc_info = reloc_info_buf[0..reloc_info_index];
218 } else if (emit.lower.bin_file.cast(.macho)) |macho_file| {204 for (reloc_info) |*reloc| switch (reloc.target.type) {
219 const zo = macho_file.getZigObject().?;205 .inst, .table => {},
220 const atom = zo.symbols.items[emit.atom_index].getAtom(macho_file).?;206 .symbol => {
221 const sym = &zo.symbols.items[sym_index];207 switch (lowered_inst.encoding.mnemonic) {
222 const @"type": link.File.MachO.Relocation.Type = if (sym.flags.is_extern_ptr and lowered_relocs[0].target != .linker_pcrel)208 .call => {
223 .got_load209 reloc.target.type = .branch;
224 else if (sym.flags.tlv)210 try emit.encodeInst(lowered_inst, reloc_info);
225 .tlv211 continue :lowered_inst;
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),
239 },212 },
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),
240 });289 });
241 } else unreachable,290 continue :lowered_inst;
242 .linker_got,291 },
243 .linker_direct,292 .branch, .tls => unreachable,
244 .linker_import,293 .tlv => {
245 => |sym_index| if (emit.lower.bin_file.cast(.elf)) |_| {294 if (emit.bin_file.cast(.elf)) |elf_file| {
246 unreachable;295 if (reloc.target.is_extern) {
247 } else if (emit.lower.bin_file.cast(.macho)) |_| {296 // TODO handle extern TLS vars, i.e., emit GD model
248 unreachable;297 return emit.fail("TODO implement extern {s} reloc for {s}", .{
249 } else if (emit.lower.bin_file.cast(.coff)) |coff_file| {298 @tagName(reloc.target.type), @tagName(emit.bin_file.tag),
250 const atom_index = coff_file.getAtomIndexForSymbol(.{299 });
251 .sym_index = emit.atom_index,300 } else if (emit.pic) switch (lowered_inst.encoding.mnemonic) {
252 .file = null,301 .lea, .mov => {
253 }).?;302 // Here, we currently assume local dynamic TLS vars, and so
254 const target = if (link.File.Coff.global_symbol_bit & sym_index != 0)303 // we emit LD model.
255 coff_file.getGlobalByIndex(link.File.Coff.global_symbol_mask & sym_index)304 try emit.encodeInst(try .new(.none, .lea, &.{
256 else305 .{ .reg = .rdi },
257 link.File.Coff.SymbolWithLoc{ .sym_index = sym_index, .file = null };306 .{ .mem = .initRip(.none, 0) },
258 try coff_file.addRelocation(atom_index, .{307 }, emit.lower.target), &.{.{
259 .type = switch (lowered_relocs[0].target) {308 .op_index = 1,
260 .linker_got => .got,309 .target = .{
261 .linker_direct => .direct,310 .index = reloc.target.index,
262 .linker_import => .import,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 },
263 else => unreachable,333 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), &.{});
264 },364 },
265 .target = target,365 .mov => {
266 .offset = @intCast(end_offset - 4),366 try emit.encodeInst(try .new(.none, .mov, &.{
267 .addend = @intCast(lowered_relocs[0].off),367 .{ .reg = .rdi },
268 .pcrel = true,368 .{ .mem = .initRip(.ptr, 0) },
269 .length = 2,369 }, emit.lower.target), reloc_info);
270 });370 try emit.encodeInst(try .new(.none, .call, &.{
271 } else if (emit.lower.bin_file.cast(.plan9)) |p9_file| {371 .{ .mem = .initSib(.qword, .{ .base = .{ .reg = .rdi } }) },
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_direct372 }, emit.lower.target), &.{});
273 .target = sym_index, // we set sym_index to just be the atom index373 try emit.encodeInst(try .new(.none, .mov, &.{
274 .offset = @intCast(end_offset - 4),374 lowered_inst.ops[0],
275 .addend = @intCast(lowered_relocs[0].off),375 .{ .mem = .initSib(.qword, .{ .base = .{ .reg = .rax } }) },
276 .type = .pcrel,376 }, emit.lower.target), &.{});
377 },
378 else => unreachable,
379 } else return emit.fail("TODO implement relocs for {s}", .{
380 @tagName(emit.bin_file.tag),
277 });381 });
278 } else return emit.fail("TODO implement linker reloc for {s}", .{382 continue :lowered_inst;
279 @tagName(emit.lower.bin_file.tag),383 },
280 }),
281 };384 };
385 try emit.encodeInst(lowered_inst, reloc_info);
282 }386 }
283 std.debug.assert(lowered_relocs.len == 0);387 assert(lowered_relocs.len == 0);
284388
285 if (lowered.insts.len == 0) {389 if (lowered.insts.len == 0) {
286 const mir_inst = emit.lower.mir.instructions.get(mir_index);390 const mir_inst = emit.lower.mir.instructions.get(mir_index);
...@@ -358,7 +462,6 @@ pub fn emitMir(emit: *Emit) Error!void {...@@ -358,7 +462,6 @@ pub fn emitMir(emit: *Emit) Error!void {
358 .pseudo_dbg_arg_i_s,462 .pseudo_dbg_arg_i_s,
359 .pseudo_dbg_arg_i_u,463 .pseudo_dbg_arg_i_u,
360 .pseudo_dbg_arg_i_64,464 .pseudo_dbg_arg_i_64,
361 .pseudo_dbg_arg_reloc,
362 .pseudo_dbg_arg_ro,465 .pseudo_dbg_arg_ro,
363 .pseudo_dbg_arg_fa,466 .pseudo_dbg_arg_fa,
364 .pseudo_dbg_arg_m,467 .pseudo_dbg_arg_m,
...@@ -366,7 +469,6 @@ pub fn emitMir(emit: *Emit) Error!void {...@@ -366,7 +469,6 @@ pub fn emitMir(emit: *Emit) Error!void {
366 .pseudo_dbg_var_i_s,469 .pseudo_dbg_var_i_s,
367 .pseudo_dbg_var_i_u,470 .pseudo_dbg_var_i_u,
368 .pseudo_dbg_var_i_64,471 .pseudo_dbg_var_i_64,
369 .pseudo_dbg_var_reloc,
370 .pseudo_dbg_var_ro,472 .pseudo_dbg_var_ro,
371 .pseudo_dbg_var_fa,473 .pseudo_dbg_var_fa,
372 .pseudo_dbg_var_m,474 .pseudo_dbg_var_m,
...@@ -391,16 +493,6 @@ pub fn emitMir(emit: *Emit) Error!void {...@@ -391,16 +493,6 @@ pub fn emitMir(emit: *Emit) Error!void {
391 loc_buf[0] = .{ .constu = mir_inst.data.i64 };493 loc_buf[0] = .{ .constu = mir_inst.data.i64 };
392 break :stack_value &loc_buf[0];494 break :stack_value &loc_buf[0];
393 } },495 } },
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 } },
404 .pseudo_dbg_arg_fa, .pseudo_dbg_var_fa => {496 .pseudo_dbg_arg_fa, .pseudo_dbg_var_fa => {
405 const reg_off = emit.lower.mir.resolveFrameAddr(mir_inst.data.fa);497 const reg_off = emit.lower.mir.resolveFrameAddr(mir_inst.data.fa);
406 break :loc .{ .plus = .{498 break :loc .{ .plus = .{
...@@ -415,15 +507,53 @@ pub fn emitMir(emit: *Emit) Error!void {...@@ -415,15 +507,53 @@ pub fn emitMir(emit: *Emit) Error!void {
415 } };507 } };
416 },508 },
417 .pseudo_dbg_arg_m, .pseudo_dbg_var_m => {509 .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();
419 break :loc .{ .plus = .{512 break :loc .{ .plus = .{
420 base: {513 base: {
421 loc_buf[0] = switch (mem.base()) {514 loc_buf[0] = switch (mem.base()) {
422 .none => .{ .constu = 0 },515 .none => .{ .constu = 0 },
423 .reg => |reg| .{ .breg = reg.dwarfNum() },516 .reg => |reg| .{ .breg = reg.dwarfNum() },
424 .frame, .table, .rip_inst => unreachable,517 .frame, .table, .rip_inst => unreachable,
425 .reloc => |sym_index| .{ .addr_reloc = sym_index },518 .nav => |nav| .{ .addr_reloc = switch (codegen.genNavRef(
426 .pcrel => unreachable,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,
427 };557 };
428 break :base &loc_buf[0];558 break :base &loc_buf[0];
429 },559 },
...@@ -438,13 +568,8 @@ pub fn emitMir(emit: *Emit) Error!void {...@@ -438,13 +568,8 @@ pub fn emitMir(emit: *Emit) Error!void {
438 },568 },
439 };569 };
440570
441 const local_name_bytes = emit.lower.mir.local_name_bytes[local_name_index..];571 const local = &emit.lower.mir.locals[local_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];
446 local_index += 1;572 local_index += 1;
447
448 try dwarf.genLocalVarDebugInfo(573 try dwarf.genLocalVarDebugInfo(
449 switch (mir_inst.ops) {574 switch (mir_inst.ops) {
450 else => unreachable,575 else => unreachable,
...@@ -452,7 +577,6 @@ pub fn emitMir(emit: *Emit) Error!void {...@@ -452,7 +577,6 @@ pub fn emitMir(emit: *Emit) Error!void {
452 .pseudo_dbg_arg_i_s,577 .pseudo_dbg_arg_i_s,
453 .pseudo_dbg_arg_i_u,578 .pseudo_dbg_arg_i_u,
454 .pseudo_dbg_arg_i_64,579 .pseudo_dbg_arg_i_64,
455 .pseudo_dbg_arg_reloc,
456 .pseudo_dbg_arg_ro,580 .pseudo_dbg_arg_ro,
457 .pseudo_dbg_arg_fa,581 .pseudo_dbg_arg_fa,
458 .pseudo_dbg_arg_m,582 .pseudo_dbg_arg_m,
...@@ -462,27 +586,23 @@ pub fn emitMir(emit: *Emit) Error!void {...@@ -462,27 +586,23 @@ pub fn emitMir(emit: *Emit) Error!void {
462 .pseudo_dbg_var_i_s,586 .pseudo_dbg_var_i_s,
463 .pseudo_dbg_var_i_u,587 .pseudo_dbg_var_i_u,
464 .pseudo_dbg_var_i_64,588 .pseudo_dbg_var_i_64,
465 .pseudo_dbg_var_reloc,
466 .pseudo_dbg_var_ro,589 .pseudo_dbg_var_ro,
467 .pseudo_dbg_var_fa,590 .pseudo_dbg_var_fa,
468 .pseudo_dbg_var_m,591 .pseudo_dbg_var_m,
469 .pseudo_dbg_var_val,592 .pseudo_dbg_var_val,
470 => .local_var,593 => .local_var,
471 },594 },
472 local_name,595 local.name.toSlice(&emit.lower.mir),
473 .fromInterned(local_type),596 .fromInterned(local.type),
474 loc,597 loc,
475 );598 );
476 },599 },
477 .plan9 => {},600 .plan9, .none => local_index += 1,
478 .none => {},
479 },601 },
480 .pseudo_dbg_arg_val, .pseudo_dbg_var_val => switch (emit.debug_output) {602 .pseudo_dbg_arg_val, .pseudo_dbg_var_val => switch (emit.debug_output) {
481 .dwarf => |dwarf| {603 .dwarf => |dwarf| {
482 const local_name_bytes = emit.lower.mir.local_name_bytes[local_name_index..];604 const local = &emit.lower.mir.locals[local_index];
483 const local_name = local_name_bytes[0..std.mem.indexOfScalar(u8, local_name_bytes, 0).? :0];605 local_index += 1;
484 local_name_index += local_name.len + 1;
485
486 try dwarf.genLocalConstDebugInfo(606 try dwarf.genLocalConstDebugInfo(
487 emit.lower.src_loc,607 emit.lower.src_loc,
488 switch (mir_inst.ops) {608 switch (mir_inst.ops) {
...@@ -490,12 +610,11 @@ pub fn emitMir(emit: *Emit) Error!void {...@@ -490,12 +610,11 @@ pub fn emitMir(emit: *Emit) Error!void {
490 .pseudo_dbg_arg_val => .comptime_arg,610 .pseudo_dbg_arg_val => .comptime_arg,
491 .pseudo_dbg_var_val => .local_const,611 .pseudo_dbg_var_val => .local_const,
492 },612 },
493 local_name,613 local.name.toSlice(&emit.lower.mir),
494 .fromInterned(mir_inst.data.ip_index),614 .fromInterned(mir_inst.data.ip_index),
495 );615 );
496 },616 },
497 .plan9 => {},617 .plan9, .none => local_index += 1,
498 .none => {},
499 },618 },
500 .pseudo_dbg_var_args_none => switch (emit.debug_output) {619 .pseudo_dbg_var_args_none => switch (emit.debug_output) {
501 .dwarf => |dwarf| try dwarf.genVarArgsDebugInfo(),620 .dwarf => |dwarf| try dwarf.genVarArgsDebugInfo(),
...@@ -507,8 +626,8 @@ pub fn emitMir(emit: *Emit) Error!void {...@@ -507,8 +626,8 @@ pub fn emitMir(emit: *Emit) Error!void {
507 }626 }
508 }627 }
509 }628 }
510 for (relocs.items) |reloc| {629 for (emit.relocs.items) |reloc| {
511 const target = code_offset_mapping[reloc.target];630 const target = emit.code_offset_mapping.items[reloc.target];
512 const disp = @as(i64, @intCast(target)) - @as(i64, @intCast(reloc.inst_offset + reloc.inst_length)) + reloc.target_offset;631 const disp = @as(i64, @intCast(target)) - @as(i64, @intCast(reloc.inst_offset + reloc.inst_length)) + reloc.target_offset;
513 const inst_bytes = emit.code.items[reloc.inst_offset..][0..reloc.inst_length];632 const inst_bytes = emit.code.items[reloc.inst_offset..][0..reloc.inst_length];
514 switch (reloc.source_length) {633 switch (reloc.source_length) {
...@@ -522,13 +641,13 @@ pub fn emitMir(emit: *Emit) Error!void {...@@ -522,13 +641,13 @@ pub fn emitMir(emit: *Emit) Error!void {
522 }641 }
523 }642 }
524 if (emit.lower.mir.table.len > 0) {643 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| {
526 const zo = elf_file.zigObjectPtr().?;645 const zo = elf_file.zigObjectPtr().?;
527 const atom = zo.symbol(emit.atom_index).atom(elf_file).?;646 const atom = zo.symbol(emit.atom_index).atom(elf_file).?;
528647
529 const ptr_size = @divExact(emit.lower.target.ptrBitWidth(), 8);648 const ptr_size = @divExact(emit.lower.target.ptrBitWidth(), 8);
530 var table_offset = std.mem.alignForward(u32, @intCast(emit.code.items.len), ptr_size);649 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, .{
532 .r_offset = table_reloc.source_offset,651 .r_offset = table_reloc.source_offset,
533 .r_info = @as(u64, emit.atom_index) << 32 | @intFromEnum(std.elf.R_X86_64.@"32"),652 .r_info = @as(u64, emit.atom_index) << 32 | @intFromEnum(std.elf.R_X86_64.@"32"),
534 .r_addend = @as(i64, table_offset) + table_reloc.target_offset,653 .r_addend = @as(i64, table_offset) + table_reloc.target_offset,
...@@ -537,7 +656,7 @@ pub fn emitMir(emit: *Emit) Error!void {...@@ -537,7 +656,7 @@ pub fn emitMir(emit: *Emit) Error!void {
537 try atom.addReloc(gpa, .{656 try atom.addReloc(gpa, .{
538 .r_offset = table_offset,657 .r_offset = table_offset,
539 .r_info = @as(u64, emit.atom_index) << 32 | @intFromEnum(std.elf.R_X86_64.@"64"),658 .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],
541 }, zo);660 }, zo);
542 table_offset += ptr_size;661 table_offset += ptr_size;
543 }662 }
...@@ -546,6 +665,192 @@ pub fn emitMir(emit: *Emit) Error!void {...@@ -546,6 +665,192 @@ pub fn emitMir(emit: *Emit) Error!void {
546 }665 }
547}666}
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
549fn fail(emit: *Emit, comptime format: []const u8, args: anytype) Error {854fn fail(emit: *Emit, comptime format: []const u8, args: anytype) Error {
550 return switch (emit.lower.fail(format, args)) {855 return switch (emit.lower.fail(format, args)) {
551 error.LowerFail => error.EmitFail,856 error.LowerFail => error.EmitFail,
...@@ -629,11 +934,17 @@ fn dbgAdvancePCAndLine(emit: *Emit, loc: Loc) Error!void {...@@ -629,11 +934,17 @@ fn dbgAdvancePCAndLine(emit: *Emit, loc: Loc) Error!void {
629 }934 }
630}935}
631936
937const assert = std.debug.assert;
632const bits = @import("bits.zig");938const bits = @import("bits.zig");
939const codegen = @import("../../codegen.zig");
633const Emit = @This();940const Emit = @This();
941const encoder = @import("encoder.zig");
942const Instruction = encoder.Instruction;
634const InternPool = @import("../../InternPool.zig");943const InternPool = @import("../../InternPool.zig");
635const link = @import("../../link.zig");944const link = @import("../../link.zig");
636const log = std.log.scoped(.emit);945const log = std.log.scoped(.emit);
637const Lower = @import("Lower.zig");946const Lower = @import("Lower.zig");
638const Mir = @import("Mir.zig");947const Mir = @import("Mir.zig");
639const std = @import("std");948const 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 @@...@@ -1,10 +1,6 @@
1//! This file contains the functionality for lowering x86_64 MIR to Instructions1//! This file contains the functionality for lowering x86_64 MIR to Instructions
22
3bin_file: *link.File,
4target: *const std.Target,3target: *const std.Target,
5output_mode: std.builtin.OutputMode,
6link_mode: std.builtin.LinkMode,
7pic: bool,
8allocator: std.mem.Allocator,4allocator: std.mem.Allocator,
9mir: Mir,5mir: Mir,
10cc: std.builtin.CallingConvention,6cc: std.builtin.CallingConvention,
...@@ -17,7 +13,6 @@ result_relocs: [max_result_relocs]Reloc = undefined,...@@ -17,7 +13,6 @@ result_relocs: [max_result_relocs]Reloc = undefined,
1713
18const max_result_insts = @max(14const max_result_insts = @max(
19 1, // non-pseudo instructions15 1, // non-pseudo instructions
20 3, // (ELF only) TLS local dynamic (LD) sequence in PIC mode
21 2, // cmovcc: cmovcc \ cmovcc16 2, // cmovcc: cmovcc \ cmovcc
22 3, // setcc: setcc \ setcc \ logicop17 3, // setcc: setcc \ setcc \ logicop
23 2, // jcc: jcc \ jcc18 2, // jcc: jcc \ jcc
...@@ -25,6 +20,7 @@ const max_result_insts = @max(...@@ -25,6 +20,7 @@ const max_result_insts = @max(
25 pseudo_probe_adjust_unrolled_max_insts,20 pseudo_probe_adjust_unrolled_max_insts,
26 pseudo_probe_adjust_setup_insts,21 pseudo_probe_adjust_setup_insts,
27 pseudo_probe_adjust_loop_insts,22 pseudo_probe_adjust_loop_insts,
23 abi.zigcc.callee_preserved_regs.len * 2, // push_regs/pop_regs
28 abi.Win64.callee_preserved_regs.len * 2, // push_regs/pop_regs24 abi.Win64.callee_preserved_regs.len * 2, // push_regs/pop_regs
29 abi.SysV.callee_preserved_regs.len * 2, // push_regs/pop_regs25 abi.SysV.callee_preserved_regs.len * 2, // push_regs/pop_regs
30);26);
...@@ -33,14 +29,13 @@ const max_result_relocs = @max(...@@ -33,14 +29,13 @@ const max_result_relocs = @max(
33 2, // jcc: jcc \ jcc29 2, // jcc: jcc \ jcc
34 2, // test \ jcc \ probe \ sub \ jmp30 2, // test \ jcc \ probe \ sub \ jmp
35 1, // probe \ sub \ jcc31 1, // probe \ sub \ jcc
36 3, // (ELF only) TLS local dynamic (LD) sequence in PIC mode
37);32);
3833
39const ResultInstIndex = std.math.IntFittingRange(0, max_result_insts - 1);34const ResultInstIndex = std.math.IntFittingRange(0, max_result_insts);
40const ResultRelocIndex = std.math.IntFittingRange(0, max_result_relocs - 1);35const ResultRelocIndex = std.math.IntFittingRange(0, max_result_relocs);
41const InstOpIndex = std.math.IntFittingRange(36pub const InstOpIndex = std.math.IntFittingRange(
42 0,37 0,
43 @typeInfo(@FieldType(Instruction, "ops")).array.len - 1,38 @typeInfo(@FieldType(Instruction, "ops")).array.len,
44);39);
4540
46pub const pseudo_probe_align_insts = 5; // test \ jcc \ probe \ sub \ jmp41pub const pseudo_probe_align_insts = 5; // test \ jcc \ probe \ sub \ jmp
...@@ -54,7 +49,8 @@ pub const Error = error{...@@ -54,7 +49,8 @@ pub const Error = error{
54 LowerFail,49 LowerFail,
55 InvalidInstruction,50 InvalidInstruction,
56 CannotEncode,51 CannotEncode,
57};52 CodegenFail,
53} || codegen.GenerateSymbolError;
5854
59pub const Reloc = struct {55pub const Reloc = struct {
60 lowered_inst_index: ResultInstIndex,56 lowered_inst_index: ResultInstIndex,
...@@ -65,14 +61,10 @@ pub const Reloc = struct {...@@ -65,14 +61,10 @@ pub const Reloc = struct {
65 const Target = union(enum) {61 const Target = union(enum) {
66 inst: Mir.Inst.Index,62 inst: Mir.Inst.Index,
67 table,63 table,
68 linker_reloc: u32,64 nav: InternPool.Nav.Index,
69 linker_pcrel: u32,65 uav: InternPool.Key.Ptr.BaseAddr.Uav,
70 linker_tlsld: u32,66 lazy_sym: link.File.LazySymbol,
71 linker_dtpoff: u32,67 extern_func: Mir.NullTerminatedString,
72 linker_extern_fn: u32,
73 linker_got: u32,
74 linker_direct: u32,
75 linker_import: u32,
76 };68 };
77};69};
7870
...@@ -80,7 +72,7 @@ const Options = struct { allow_frame_locs: bool };...@@ -80,7 +72,7 @@ const Options = struct { allow_frame_locs: bool };
8072
81/// The returned slice is overwritten by the next call to lowerMir.73/// The returned slice is overwritten by the next call to lowerMir.
82pub fn lowerMir(lower: *Lower, index: Mir.Inst.Index) Error!struct {74pub fn lowerMir(lower: *Lower, index: Mir.Inst.Index) Error!struct {
83 insts: []const Instruction,75 insts: []Instruction,
84 relocs: []const Reloc,76 relocs: []const Reloc,
85} {77} {
86 lower.result_insts = undefined;78 lower.result_insts = undefined;
...@@ -98,130 +90,130 @@ pub fn lowerMir(lower: *Lower, index: Mir.Inst.Index) Error!struct {...@@ -98,130 +90,130 @@ pub fn lowerMir(lower: *Lower, index: Mir.Inst.Index) Error!struct {
98 .pseudo => switch (inst.ops) {90 .pseudo => switch (inst.ops) {
99 .pseudo_cmov_z_and_np_rr => {91 .pseudo_cmov_z_and_np_rr => {
100 assert(inst.data.rr.fixes == ._);92 assert(inst.data.rr.fixes == ._);
101 try lower.emit(.none, .cmovnz, &.{93 try lower.encode(.none, .cmovnz, &.{
102 .{ .reg = inst.data.rr.r2 },94 .{ .reg = inst.data.rr.r2 },
103 .{ .reg = inst.data.rr.r1 },95 .{ .reg = inst.data.rr.r1 },
104 });96 });
105 try lower.emit(.none, .cmovnp, &.{97 try lower.encode(.none, .cmovnp, &.{
106 .{ .reg = inst.data.rr.r1 },98 .{ .reg = inst.data.rr.r1 },
107 .{ .reg = inst.data.rr.r2 },99 .{ .reg = inst.data.rr.r2 },
108 });100 });
109 },101 },
110 .pseudo_cmov_nz_or_p_rr => {102 .pseudo_cmov_nz_or_p_rr => {
111 assert(inst.data.rr.fixes == ._);103 assert(inst.data.rr.fixes == ._);
112 try lower.emit(.none, .cmovnz, &.{104 try lower.encode(.none, .cmovnz, &.{
113 .{ .reg = inst.data.rr.r1 },105 .{ .reg = inst.data.rr.r1 },
114 .{ .reg = inst.data.rr.r2 },106 .{ .reg = inst.data.rr.r2 },
115 });107 });
116 try lower.emit(.none, .cmovp, &.{108 try lower.encode(.none, .cmovp, &.{
117 .{ .reg = inst.data.rr.r1 },109 .{ .reg = inst.data.rr.r1 },
118 .{ .reg = inst.data.rr.r2 },110 .{ .reg = inst.data.rr.r2 },
119 });111 });
120 },112 },
121 .pseudo_cmov_nz_or_p_rm => {113 .pseudo_cmov_nz_or_p_rm => {
122 assert(inst.data.rx.fixes == ._);114 assert(inst.data.rx.fixes == ._);
123 try lower.emit(.none, .cmovnz, &.{115 try lower.encode(.none, .cmovnz, &.{
124 .{ .reg = inst.data.rx.r1 },116 .{ .reg = inst.data.rx.r1 },
125 .{ .mem = lower.mem(1, inst.data.rx.payload) },117 .{ .mem = lower.mem(1, inst.data.rx.payload) },
126 });118 });
127 try lower.emit(.none, .cmovp, &.{119 try lower.encode(.none, .cmovp, &.{
128 .{ .reg = inst.data.rx.r1 },120 .{ .reg = inst.data.rx.r1 },
129 .{ .mem = lower.mem(1, inst.data.rx.payload) },121 .{ .mem = lower.mem(1, inst.data.rx.payload) },
130 });122 });
131 },123 },
132 .pseudo_set_z_and_np_r => {124 .pseudo_set_z_and_np_r => {
133 assert(inst.data.rr.fixes == ._);125 assert(inst.data.rr.fixes == ._);
134 try lower.emit(.none, .setz, &.{126 try lower.encode(.none, .setz, &.{
135 .{ .reg = inst.data.rr.r1 },127 .{ .reg = inst.data.rr.r1 },
136 });128 });
137 try lower.emit(.none, .setnp, &.{129 try lower.encode(.none, .setnp, &.{
138 .{ .reg = inst.data.rr.r2 },130 .{ .reg = inst.data.rr.r2 },
139 });131 });
140 try lower.emit(.none, .@"and", &.{132 try lower.encode(.none, .@"and", &.{
141 .{ .reg = inst.data.rr.r1 },133 .{ .reg = inst.data.rr.r1 },
142 .{ .reg = inst.data.rr.r2 },134 .{ .reg = inst.data.rr.r2 },
143 });135 });
144 },136 },
145 .pseudo_set_z_and_np_m => {137 .pseudo_set_z_and_np_m => {
146 assert(inst.data.rx.fixes == ._);138 assert(inst.data.rx.fixes == ._);
147 try lower.emit(.none, .setz, &.{139 try lower.encode(.none, .setz, &.{
148 .{ .mem = lower.mem(0, inst.data.rx.payload) },140 .{ .mem = lower.mem(0, inst.data.rx.payload) },
149 });141 });
150 try lower.emit(.none, .setnp, &.{142 try lower.encode(.none, .setnp, &.{
151 .{ .reg = inst.data.rx.r1 },143 .{ .reg = inst.data.rx.r1 },
152 });144 });
153 try lower.emit(.none, .@"and", &.{145 try lower.encode(.none, .@"and", &.{
154 .{ .mem = lower.mem(0, inst.data.rx.payload) },146 .{ .mem = lower.mem(0, inst.data.rx.payload) },
155 .{ .reg = inst.data.rx.r1 },147 .{ .reg = inst.data.rx.r1 },
156 });148 });
157 },149 },
158 .pseudo_set_nz_or_p_r => {150 .pseudo_set_nz_or_p_r => {
159 assert(inst.data.rr.fixes == ._);151 assert(inst.data.rr.fixes == ._);
160 try lower.emit(.none, .setnz, &.{152 try lower.encode(.none, .setnz, &.{
161 .{ .reg = inst.data.rr.r1 },153 .{ .reg = inst.data.rr.r1 },
162 });154 });
163 try lower.emit(.none, .setp, &.{155 try lower.encode(.none, .setp, &.{
164 .{ .reg = inst.data.rr.r2 },156 .{ .reg = inst.data.rr.r2 },
165 });157 });
166 try lower.emit(.none, .@"or", &.{158 try lower.encode(.none, .@"or", &.{
167 .{ .reg = inst.data.rr.r1 },159 .{ .reg = inst.data.rr.r1 },
168 .{ .reg = inst.data.rr.r2 },160 .{ .reg = inst.data.rr.r2 },
169 });161 });
170 },162 },
171 .pseudo_set_nz_or_p_m => {163 .pseudo_set_nz_or_p_m => {
172 assert(inst.data.rx.fixes == ._);164 assert(inst.data.rx.fixes == ._);
173 try lower.emit(.none, .setnz, &.{165 try lower.encode(.none, .setnz, &.{
174 .{ .mem = lower.mem(0, inst.data.rx.payload) },166 .{ .mem = lower.mem(0, inst.data.rx.payload) },
175 });167 });
176 try lower.emit(.none, .setp, &.{168 try lower.encode(.none, .setp, &.{
177 .{ .reg = inst.data.rx.r1 },169 .{ .reg = inst.data.rx.r1 },
178 });170 });
179 try lower.emit(.none, .@"or", &.{171 try lower.encode(.none, .@"or", &.{
180 .{ .mem = lower.mem(0, inst.data.rx.payload) },172 .{ .mem = lower.mem(0, inst.data.rx.payload) },
181 .{ .reg = inst.data.rx.r1 },173 .{ .reg = inst.data.rx.r1 },
182 });174 });
183 },175 },
184 .pseudo_j_z_and_np_inst => {176 .pseudo_j_z_and_np_inst => {
185 assert(inst.data.inst.fixes == ._);177 assert(inst.data.inst.fixes == ._);
186 try lower.emit(.none, .jnz, &.{178 try lower.encode(.none, .jnz, &.{
187 .{ .imm = lower.reloc(0, .{ .inst = index + 1 }, 0) },179 .{ .imm = lower.reloc(0, .{ .inst = index + 1 }, 0) },
188 });180 });
189 try lower.emit(.none, .jnp, &.{181 try lower.encode(.none, .jnp, &.{
190 .{ .imm = lower.reloc(0, .{ .inst = inst.data.inst.inst }, 0) },182 .{ .imm = lower.reloc(0, .{ .inst = inst.data.inst.inst }, 0) },
191 });183 });
192 },184 },
193 .pseudo_j_nz_or_p_inst => {185 .pseudo_j_nz_or_p_inst => {
194 assert(inst.data.inst.fixes == ._);186 assert(inst.data.inst.fixes == ._);
195 try lower.emit(.none, .jnz, &.{187 try lower.encode(.none, .jnz, &.{
196 .{ .imm = lower.reloc(0, .{ .inst = inst.data.inst.inst }, 0) },188 .{ .imm = lower.reloc(0, .{ .inst = inst.data.inst.inst }, 0) },
197 });189 });
198 try lower.emit(.none, .jp, &.{190 try lower.encode(.none, .jp, &.{
199 .{ .imm = lower.reloc(0, .{ .inst = inst.data.inst.inst }, 0) },191 .{ .imm = lower.reloc(0, .{ .inst = inst.data.inst.inst }, 0) },
200 });192 });
201 },193 },
202194
203 .pseudo_probe_align_ri_s => {195 .pseudo_probe_align_ri_s => {
204 try lower.emit(.none, .@"test", &.{196 try lower.encode(.none, .@"test", &.{
205 .{ .reg = inst.data.ri.r1 },197 .{ .reg = inst.data.ri.r1 },
206 .{ .imm = .s(@bitCast(inst.data.ri.i)) },198 .{ .imm = .s(@bitCast(inst.data.ri.i)) },
207 });199 });
208 try lower.emit(.none, .jz, &.{200 try lower.encode(.none, .jz, &.{
209 .{ .imm = lower.reloc(0, .{ .inst = index + 1 }, 0) },201 .{ .imm = lower.reloc(0, .{ .inst = index + 1 }, 0) },
210 });202 });
211 try lower.emit(.none, .lea, &.{203 try lower.encode(.none, .lea, &.{
212 .{ .reg = inst.data.ri.r1 },204 .{ .reg = inst.data.ri.r1 },
213 .{ .mem = Memory.initSib(.qword, .{205 .{ .mem = Memory.initSib(.qword, .{
214 .base = .{ .reg = inst.data.ri.r1 },206 .base = .{ .reg = inst.data.ri.r1 },
215 .disp = -page_size,207 .disp = -page_size,
216 }) },208 }) },
217 });209 });
218 try lower.emit(.none, .@"test", &.{210 try lower.encode(.none, .@"test", &.{
219 .{ .mem = Memory.initSib(.dword, .{211 .{ .mem = Memory.initSib(.dword, .{
220 .base = .{ .reg = inst.data.ri.r1 },212 .base = .{ .reg = inst.data.ri.r1 },
221 }) },213 }) },
222 .{ .reg = inst.data.ri.r1.to32() },214 .{ .reg = inst.data.ri.r1.to32() },
223 });215 });
224 try lower.emit(.none, .jmp, &.{216 try lower.encode(.none, .jmp, &.{
225 .{ .imm = lower.reloc(0, .{ .inst = index }, 0) },217 .{ .imm = lower.reloc(0, .{ .inst = index }, 0) },
226 });218 });
227 assert(lower.result_insts_len == pseudo_probe_align_insts);219 assert(lower.result_insts_len == pseudo_probe_align_insts);
...@@ -229,7 +221,7 @@ pub fn lowerMir(lower: *Lower, index: Mir.Inst.Index) Error!struct {...@@ -229,7 +221,7 @@ pub fn lowerMir(lower: *Lower, index: Mir.Inst.Index) Error!struct {
229 .pseudo_probe_adjust_unrolled_ri_s => {221 .pseudo_probe_adjust_unrolled_ri_s => {
230 var offset = page_size;222 var offset = page_size;
231 while (offset < @as(i32, @bitCast(inst.data.ri.i))) : (offset += page_size) {223 while (offset < @as(i32, @bitCast(inst.data.ri.i))) : (offset += page_size) {
232 try lower.emit(.none, .@"test", &.{224 try lower.encode(.none, .@"test", &.{
233 .{ .mem = Memory.initSib(.dword, .{225 .{ .mem = Memory.initSib(.dword, .{
234 .base = .{ .reg = inst.data.ri.r1 },226 .base = .{ .reg = inst.data.ri.r1 },
235 .disp = -offset,227 .disp = -offset,
...@@ -237,25 +229,25 @@ pub fn lowerMir(lower: *Lower, index: Mir.Inst.Index) Error!struct {...@@ -237,25 +229,25 @@ pub fn lowerMir(lower: *Lower, index: Mir.Inst.Index) Error!struct {
237 .{ .reg = inst.data.ri.r1.to32() },229 .{ .reg = inst.data.ri.r1.to32() },
238 });230 });
239 }231 }
240 try lower.emit(.none, .sub, &.{232 try lower.encode(.none, .sub, &.{
241 .{ .reg = inst.data.ri.r1 },233 .{ .reg = inst.data.ri.r1 },
242 .{ .imm = .s(@bitCast(inst.data.ri.i)) },234 .{ .imm = .s(@bitCast(inst.data.ri.i)) },
243 });235 });
244 assert(lower.result_insts_len <= pseudo_probe_adjust_unrolled_max_insts);236 assert(lower.result_insts_len <= pseudo_probe_adjust_unrolled_max_insts);
245 },237 },
246 .pseudo_probe_adjust_setup_rri_s => {238 .pseudo_probe_adjust_setup_rri_s => {
247 try lower.emit(.none, .mov, &.{239 try lower.encode(.none, .mov, &.{
248 .{ .reg = inst.data.rri.r2.to32() },240 .{ .reg = inst.data.rri.r2.to32() },
249 .{ .imm = .s(@bitCast(inst.data.rri.i)) },241 .{ .imm = .s(@bitCast(inst.data.rri.i)) },
250 });242 });
251 try lower.emit(.none, .sub, &.{243 try lower.encode(.none, .sub, &.{
252 .{ .reg = inst.data.rri.r1 },244 .{ .reg = inst.data.rri.r1 },
253 .{ .reg = inst.data.rri.r2 },245 .{ .reg = inst.data.rri.r2 },
254 });246 });
255 assert(lower.result_insts_len == pseudo_probe_adjust_setup_insts);247 assert(lower.result_insts_len == pseudo_probe_adjust_setup_insts);
256 },248 },
257 .pseudo_probe_adjust_loop_rr => {249 .pseudo_probe_adjust_loop_rr => {
258 try lower.emit(.none, .@"test", &.{250 try lower.encode(.none, .@"test", &.{
259 .{ .mem = Memory.initSib(.dword, .{251 .{ .mem = Memory.initSib(.dword, .{
260 .base = .{ .reg = inst.data.rr.r1 },252 .base = .{ .reg = inst.data.rr.r1 },
261 .scale_index = .{ .scale = 1, .index = inst.data.rr.r2 },253 .scale_index = .{ .scale = 1, .index = inst.data.rr.r2 },
...@@ -263,11 +255,11 @@ pub fn lowerMir(lower: *Lower, index: Mir.Inst.Index) Error!struct {...@@ -263,11 +255,11 @@ pub fn lowerMir(lower: *Lower, index: Mir.Inst.Index) Error!struct {
263 }) },255 }) },
264 .{ .reg = inst.data.rr.r1.to32() },256 .{ .reg = inst.data.rr.r1.to32() },
265 });257 });
266 try lower.emit(.none, .sub, &.{258 try lower.encode(.none, .sub, &.{
267 .{ .reg = inst.data.rr.r2 },259 .{ .reg = inst.data.rr.r2 },
268 .{ .imm = .s(page_size) },260 .{ .imm = .s(page_size) },
269 });261 });
270 try lower.emit(.none, .jae, &.{262 try lower.encode(.none, .jae, &.{
271 .{ .imm = lower.reloc(0, .{ .inst = index }, 0) },263 .{ .imm = lower.reloc(0, .{ .inst = index }, 0) },
272 });264 });
273 assert(lower.result_insts_len == pseudo_probe_adjust_loop_insts);265 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 {...@@ -275,47 +267,47 @@ pub fn lowerMir(lower: *Lower, index: Mir.Inst.Index) Error!struct {
275 .pseudo_push_reg_list => try lower.pushPopRegList(.push, inst),267 .pseudo_push_reg_list => try lower.pushPopRegList(.push, inst),
276 .pseudo_pop_reg_list => try lower.pushPopRegList(.pop, inst),268 .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", &.{
279 .{ .reg = inst.data.ri.r1 },271 .{ .reg = inst.data.ri.r1 },
280 .{ .imm = lower.imm(.ri_s, inst.data.ri.i) },272 .{ .imm = lower.imm(.ri_s, inst.data.ri.i) },
281 }),273 }),
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", &.{
283 .{ .reg = inst.data.r.r1 },275 .{ .reg = inst.data.r.r1 },
284 }),276 }),
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", &.{
286 .{ .imm = lower.imm(.i_s, inst.data.i.i) },278 .{ .imm = lower.imm(.i_s, inst.data.i.i) },
287 }),279 }),
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", &.{
289 .{ .imm = lower.imm(.i_s, inst.data.i.i) },281 .{ .imm = lower.imm(.i_s, inst.data.i.i) },
290 }),282 }),
291 .pseudo_cfi_offset_ri_s => try lower.emit(.directive, .@".cfi_offset", &.{283 .pseudo_cfi_offset_ri_s => try lower.encode(.directive, .@".cfi_offset", &.{
292 .{ .reg = inst.data.ri.r1 },284 .{ .reg = inst.data.ri.r1 },
293 .{ .imm = lower.imm(.ri_s, inst.data.ri.i) },285 .{ .imm = lower.imm(.ri_s, inst.data.ri.i) },
294 }),286 }),
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", &.{
296 .{ .reg = inst.data.ri.r1 },288 .{ .reg = inst.data.ri.r1 },
297 .{ .imm = lower.imm(.ri_s, inst.data.ri.i) },289 .{ .imm = lower.imm(.ri_s, inst.data.ri.i) },
298 }),290 }),
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", &.{
300 .{ .reg = inst.data.ri.r1 },292 .{ .reg = inst.data.ri.r1 },
301 .{ .imm = lower.imm(.ri_s, inst.data.ri.i) },293 .{ .imm = lower.imm(.ri_s, inst.data.ri.i) },
302 }),294 }),
303 .pseudo_cfi_register_rr => try lower.emit(.directive, .@".cfi_register", &.{295 .pseudo_cfi_register_rr => try lower.encode(.directive, .@".cfi_register", &.{
304 .{ .reg = inst.data.rr.r1 },296 .{ .reg = inst.data.rr.r1 },
305 .{ .reg = inst.data.rr.r2 },297 .{ .reg = inst.data.rr.r2 },
306 }),298 }),
307 .pseudo_cfi_restore_r => try lower.emit(.directive, .@".cfi_restore", &.{299 .pseudo_cfi_restore_r => try lower.encode(.directive, .@".cfi_restore", &.{
308 .{ .reg = inst.data.r.r1 },300 .{ .reg = inst.data.r.r1 },
309 }),301 }),
310 .pseudo_cfi_undefined_r => try lower.emit(.directive, .@".cfi_undefined", &.{302 .pseudo_cfi_undefined_r => try lower.encode(.directive, .@".cfi_undefined", &.{
311 .{ .reg = inst.data.r.r1 },303 .{ .reg = inst.data.r.r1 },
312 }),304 }),
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", &.{
314 .{ .reg = inst.data.r.r1 },306 .{ .reg = inst.data.r.r1 },
315 }),307 }),
316 .pseudo_cfi_remember_state_none => try lower.emit(.directive, .@".cfi_remember_state", &.{}),308 .pseudo_cfi_remember_state_none => try lower.encode(.directive, .@".cfi_remember_state", &.{}),
317 .pseudo_cfi_restore_state_none => try lower.emit(.directive, .@".cfi_restore_state", &.{}),309 .pseudo_cfi_restore_state_none => try lower.encode(.directive, .@".cfi_restore_state", &.{}),
318 .pseudo_cfi_escape_bytes => try lower.emit(.directive, .@".cfi_escape", &.{310 .pseudo_cfi_escape_bytes => try lower.encode(.directive, .@".cfi_escape", &.{
319 .{ .bytes = inst.data.bytes.get(lower.mir) },311 .{ .bytes = inst.data.bytes.get(lower.mir) },
320 }),312 }),
321313
...@@ -331,7 +323,6 @@ pub fn lowerMir(lower: *Lower, index: Mir.Inst.Index) Error!struct {...@@ -331,7 +323,6 @@ pub fn lowerMir(lower: *Lower, index: Mir.Inst.Index) Error!struct {
331 .pseudo_dbg_arg_i_s,323 .pseudo_dbg_arg_i_s,
332 .pseudo_dbg_arg_i_u,324 .pseudo_dbg_arg_i_u,
333 .pseudo_dbg_arg_i_64,325 .pseudo_dbg_arg_i_64,
334 .pseudo_dbg_arg_reloc,
335 .pseudo_dbg_arg_ro,326 .pseudo_dbg_arg_ro,
336 .pseudo_dbg_arg_fa,327 .pseudo_dbg_arg_fa,
337 .pseudo_dbg_arg_m,328 .pseudo_dbg_arg_m,
...@@ -341,7 +332,6 @@ pub fn lowerMir(lower: *Lower, index: Mir.Inst.Index) Error!struct {...@@ -341,7 +332,6 @@ pub fn lowerMir(lower: *Lower, index: Mir.Inst.Index) Error!struct {
341 .pseudo_dbg_var_i_s,332 .pseudo_dbg_var_i_s,
342 .pseudo_dbg_var_i_u,333 .pseudo_dbg_var_i_u,
343 .pseudo_dbg_var_i_64,334 .pseudo_dbg_var_i_64,
344 .pseudo_dbg_var_reloc,
345 .pseudo_dbg_var_ro,335 .pseudo_dbg_var_ro,
346 .pseudo_dbg_var_fa,336 .pseudo_dbg_var_fa,
347 .pseudo_dbg_var_m,337 .pseudo_dbg_var_m,
...@@ -362,7 +352,7 @@ pub fn lowerMir(lower: *Lower, index: Mir.Inst.Index) Error!struct {...@@ -362,7 +352,7 @@ pub fn lowerMir(lower: *Lower, index: Mir.Inst.Index) Error!struct {
362pub fn fail(lower: *Lower, comptime format: []const u8, args: anytype) Error {352pub fn fail(lower: *Lower, comptime format: []const u8, args: anytype) Error {
363 @branchHint(.cold);353 @branchHint(.cold);
364 assert(lower.err_msg == null);354 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);
366 return error.LowerFail;356 return error.LowerFail;
367}357}
368358
...@@ -404,13 +394,17 @@ pub fn imm(lower: *const Lower, ops: Mir.Inst.Ops, i: u32) Immediate {...@@ -404,13 +394,17 @@ pub fn imm(lower: *const Lower, ops: Mir.Inst.Ops, i: u32) Immediate {
404 };394 };
405}395}
406396
407pub fn mem(lower: *Lower, op_index: InstOpIndex, payload: u32) Memory {397fn mem(lower: *Lower, op_index: InstOpIndex, payload: u32) Memory {
408 var m = lower.mir.resolveFrameLoc(lower.mir.extraData(Mir.Memory, payload).data).decode();398 var m = lower.mir.resolveMemoryExtra(payload).decode();
409 switch (m) {399 switch (m) {
410 .sib => |*sib| switch (sib.base) {400 .sib => |*sib| switch (sib.base) {
411 else => {},401 .none, .reg, .frame => {},
412 .table => sib.disp = lower.reloc(op_index, .table, sib.disp).signed,402 .table => sib.disp = lower.reloc(op_index, .table, sib.disp).signed,
413 .rip_inst => |inst_index| sib.disp = lower.reloc(op_index, .{ .inst = inst_index }, sib.disp).signed,403 .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,
414 },408 },
415 else => {},409 else => {},
416 }410 }
...@@ -428,172 +422,8 @@ fn reloc(lower: *Lower, op_index: InstOpIndex, target: Reloc.Target, off: i32) I...@@ -428,172 +422,8 @@ fn reloc(lower: *Lower, op_index: InstOpIndex, target: Reloc.Target, off: i32) I
428 return .s(0);422 return .s(0);
429}423}
430424
431fn emit(lower: *Lower, prefix: Prefix, mnemonic: Mnemonic, ops: []const Operand) Error!void {425fn encode(lower: *Lower, prefix: Prefix, mnemonic: Mnemonic, ops: []const Operand) Error!void {
432 const emit_prefix = prefix;426 lower.result_insts[lower.result_insts_len] = try .new(prefix, mnemonic, ops, lower.target);
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);
597 lower.result_insts_len += 1;427 lower.result_insts_len += 1;
598}428}
599429
...@@ -618,10 +448,10 @@ fn generic(lower: *Lower, inst: Mir.Inst) Error!void {...@@ -618,10 +448,10 @@ fn generic(lower: *Lower, inst: Mir.Inst) Error!void {
618 .rrmi => inst.data.rrix.fixes,448 .rrmi => inst.data.rrix.fixes,
619 .mi_u, .mi_s => inst.data.x.fixes,449 .mi_u, .mi_s => inst.data.x.fixes,
620 .m => inst.data.x.fixes,450 .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 => ._,
622 else => return lower.fail("TODO lower .{s}", .{@tagName(inst.ops)}),452 else => return lower.fail("TODO lower .{s}", .{@tagName(inst.ops)}),
623 };453 };
624 try lower.emit(switch (fixes) {454 try lower.encode(switch (fixes) {
625 inline else => |tag| comptime if (std.mem.indexOfScalar(u8, @tagName(tag), ' ')) |space|455 inline else => |tag| comptime if (std.mem.indexOfScalar(u8, @tagName(tag), ' ')) |space|
626 @field(Prefix, @tagName(tag)[0..space])456 @field(Prefix, @tagName(tag)[0..space])
627 else457 else
...@@ -752,22 +582,17 @@ fn generic(lower: *Lower, inst: Mir.Inst) Error!void {...@@ -752,22 +582,17 @@ fn generic(lower: *Lower, inst: Mir.Inst) Error!void {
752 .{ .mem = lower.mem(2, inst.data.rrix.payload) },582 .{ .mem = lower.mem(2, inst.data.rrix.payload) },
753 .{ .imm = lower.imm(inst.ops, inst.data.rrix.i) },583 .{ .imm = lower.imm(inst.ops, inst.data.rrix.i) },
754 },584 },
755 .extern_fn_reloc, .rel => &.{585 .nav => &.{
756 .{ .imm = lower.reloc(0, .{ .linker_extern_fn = inst.data.reloc.sym_index }, inst.data.reloc.off) },586 .{ .imm = lower.reloc(0, .{ .nav = inst.data.nav.index }, inst.data.nav.off) },
757 },587 },
758 .got_reloc, .direct_reloc, .import_reloc => ops: {588 .uav => &.{
759 const reg = inst.data.rx.r1;589 .{ .imm = lower.reloc(0, .{ .uav = inst.data.uav }, 0) },
760 const extra = lower.mir.extraData(bits.SymbolOffset, inst.data.rx.payload).data;590 },
761 _ = lower.reloc(1, switch (inst.ops) {591 .lazy_sym => &.{
762 .got_reloc => .{ .linker_got = extra.sym_index },592 .{ .imm = lower.reloc(0, .{ .lazy_sym = inst.data.lazy_sym }, 0) },
763 .direct_reloc => .{ .linker_direct = extra.sym_index },593 },
764 .import_reloc => .{ .linker_import = extra.sym_index },594 .extern_func => &.{
765 else => unreachable,595 .{ .imm = lower.reloc(0, .{ .extern_func = inst.data.extern_func }, 0) },
766 }, extra.off);
767 break :ops &.{
768 .{ .reg = reg },
769 .{ .mem = Memory.initRip(Memory.PtrSize.fromBitSize(reg.bitSize()), 0) },
770 };
771 },596 },
772 else => return lower.fail("TODO lower {s} {s}", .{ @tagName(inst.tag), @tagName(inst.ops) }),597 else => return lower.fail("TODO lower {s} {s}", .{ @tagName(inst.tag), @tagName(inst.ops) }),
773 });598 });
...@@ -787,7 +612,7 @@ fn pushPopRegList(lower: *Lower, comptime mnemonic: Mnemonic, inst: Mir.Inst) Er...@@ -787,7 +612,7 @@ fn pushPopRegList(lower: *Lower, comptime mnemonic: Mnemonic, inst: Mir.Inst) Er
787 else => unreachable,612 else => unreachable,
788 } });613 } });
789 while (it.next()) |i| {614 while (it.next()) |i| {
790 try lower.emit(.none, mnemonic, &.{.{615 try lower.encode(.none, mnemonic, &.{.{
791 .reg = callee_preserved_regs[i],616 .reg = callee_preserved_regs[i],
792 }});617 }});
793 switch (mnemonic) {618 switch (mnemonic) {
...@@ -801,7 +626,7 @@ fn pushPopRegList(lower: *Lower, comptime mnemonic: Mnemonic, inst: Mir.Inst) Er...@@ -801,7 +626,7 @@ fn pushPopRegList(lower: *Lower, comptime mnemonic: Mnemonic, inst: Mir.Inst) Er
801 .push => {626 .push => {
802 var it = inst.data.reg_list.iterator(.{});627 var it = inst.data.reg_list.iterator(.{});
803 while (it.next()) |i| {628 while (it.next()) |i| {
804 try lower.emit(.directive, .@".cfi_rel_offset", &.{629 try lower.encode(.directive, .@".cfi_rel_offset", &.{
805 .{ .reg = callee_preserved_regs[i] },630 .{ .reg = callee_preserved_regs[i] },
806 .{ .imm = .s(off) },631 .{ .imm = .s(off) },
807 });632 });
...@@ -819,12 +644,14 @@ const page_size: i32 = 1 << 12;...@@ -819,12 +644,14 @@ const page_size: i32 = 1 << 12;
819const abi = @import("abi.zig");644const abi = @import("abi.zig");
820const assert = std.debug.assert;645const assert = std.debug.assert;
821const bits = @import("bits.zig");646const bits = @import("bits.zig");
647const codegen = @import("../../codegen.zig");
822const encoder = @import("encoder.zig");648const encoder = @import("encoder.zig");
823const link = @import("../../link.zig");649const link = @import("../../link.zig");
824const std = @import("std");650const std = @import("std");
825651
826const Immediate = Instruction.Immediate;652const Immediate = Instruction.Immediate;
827const Instruction = encoder.Instruction;653const Instruction = encoder.Instruction;
654const InternPool = @import("../../InternPool.zig");
828const Lower = @This();655const Lower = @This();
829const Memory = Instruction.Memory;656const Memory = Instruction.Memory;
830const Mir = @import("Mir.zig");657const Mir = @import("Mir.zig");
...@@ -833,3 +660,4 @@ const Zcu = @import("../../Zcu.zig");...@@ -833,3 +660,4 @@ const Zcu = @import("../../Zcu.zig");
833const Operand = Instruction.Operand;660const Operand = Instruction.Operand;
834const Prefix = Instruction.Prefix;661const Prefix = Instruction.Prefix;
835const Register = bits.Register;662const Register = bits.Register;
663const Type = @import("../../Type.zig");
src/arch/x86_64/Mir.zig+125-49
...@@ -9,8 +9,8 @@...@@ -9,8 +9,8 @@
9instructions: std.MultiArrayList(Inst).Slice,9instructions: std.MultiArrayList(Inst).Slice,
10/// The meaning of this data is determined by `Inst.Tag` value.10/// The meaning of this data is determined by `Inst.Tag` value.
11extra: []const u32,11extra: []const u32,
12local_name_bytes: []const u8,12string_bytes: []const u8,
13local_types: []const InternPool.Index,13locals: []const Local,
14table: []const Inst.Index,14table: []const Inst.Index,
15frame_locs: std.MultiArrayList(FrameLoc).Slice,15frame_locs: std.MultiArrayList(FrameLoc).Slice,
1616
...@@ -1363,9 +1363,6 @@ pub const Inst = struct {...@@ -1363,9 +1363,6 @@ pub const Inst = struct {
1363 /// Immediate (byte), register operands.1363 /// Immediate (byte), register operands.
1364 /// Uses `ri` payload.1364 /// Uses `ri` payload.
1365 ir,1365 ir,
1366 /// Relative displacement operand.
1367 /// Uses `reloc` payload.
1368 rel,
1369 /// Register, memory operands.1366 /// Register, memory operands.
1370 /// Uses `rx` payload with extra data of type `Memory`.1367 /// Uses `rx` payload with extra data of type `Memory`.
1371 rm,1368 rm,
...@@ -1411,21 +1408,18 @@ pub const Inst = struct {...@@ -1411,21 +1408,18 @@ pub const Inst = struct {
1411 /// References another Mir instruction directly.1408 /// References another Mir instruction directly.
1412 /// Uses `inst` payload.1409 /// Uses `inst` payload.
1413 inst,1410 inst,
1414 /// Linker relocation - external function.1411 /// References a nav.
1415 /// Uses `reloc` payload.1412 /// Uses `nav` payload.
1416 extern_fn_reloc,1413 nav,
1417 /// Linker relocation - GOT indirection.1414 /// References an uav.
1418 /// Uses `rx` payload with extra data of type `bits.SymbolOffset`.1415 /// Uses `uav` payload.
1419 got_reloc,1416 uav,
1420 /// Linker relocation - direct reference.1417 /// References a lazy symbol.
1421 /// Uses `rx` payload with extra data of type `bits.SymbolOffset`.1418 /// Uses `lazy_sym` payload.
1422 direct_reloc,1419 lazy_sym,
1423 /// Linker relocation - imports table indirection (binding).1420 /// References an external symbol.
1424 /// Uses `rx` payload with extra data of type `bits.SymbolOffset`.1421 /// Uses `extern_func` payload.
1425 import_reloc,1422 extern_func,
1426 /// Linker relocation - threadlocal variable via GOT indirection.
1427 /// Uses `rx` payload with extra data of type `bits.SymbolOffset`.
1428 tlv_reloc,
14291423
1430 // Pseudo instructions:1424 // Pseudo instructions:
14311425
...@@ -1560,9 +1554,6 @@ pub const Inst = struct {...@@ -1560,9 +1554,6 @@ pub const Inst = struct {
1560 /// Uses `i64` payload.1554 /// Uses `i64` payload.
1561 pseudo_dbg_arg_i_64,1555 pseudo_dbg_arg_i_64,
1562 /// Local argument.1556 /// Local argument.
1563 /// Uses `reloc` payload.
1564 pseudo_dbg_arg_reloc,
1565 /// Local argument.
1566 /// Uses `ro` payload.1557 /// Uses `ro` payload.
1567 pseudo_dbg_arg_ro,1558 pseudo_dbg_arg_ro,
1568 /// Local argument.1559 /// Local argument.
...@@ -1589,9 +1580,6 @@ pub const Inst = struct {...@@ -1589,9 +1580,6 @@ pub const Inst = struct {
1589 /// Uses `i64` payload.1580 /// Uses `i64` payload.
1590 pseudo_dbg_var_i_64,1581 pseudo_dbg_var_i_64,
1591 /// Local variable.1582 /// Local variable.
1592 /// Uses `reloc` payload.
1593 pseudo_dbg_var_reloc,
1594 /// Local variable.
1595 /// Uses `ro` payload.1583 /// Uses `ro` payload.
1596 pseudo_dbg_var_ro,1584 pseudo_dbg_var_ro,
1597 /// Local variable.1585 /// Local variable.
...@@ -1719,12 +1707,12 @@ pub const Inst = struct {...@@ -1719,12 +1707,12 @@ pub const Inst = struct {
1719 return std.mem.sliceAsBytes(mir.extra[bytes.payload..])[0..bytes.len];1707 return std.mem.sliceAsBytes(mir.extra[bytes.payload..])[0..bytes.len];
1720 }1708 }
1721 },1709 },
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,
1726 fa: bits.FrameAddr,1710 fa: bits.FrameAddr,
1727 ro: bits.RegisterOffset,1711 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,
1728 /// Debug line and column position1716 /// Debug line and column position
1729 line_column: struct {1717 line_column: struct {
1730 line: u32,1718 line: u32,
...@@ -1787,7 +1775,7 @@ pub const Inst = struct {...@@ -1787,7 +1775,7 @@ pub const Inst = struct {
1787pub const RegisterList = struct {1775pub const RegisterList = struct {
1788 bitset: BitSet,1776 bitset: BitSet,
17891777
1790 const BitSet = IntegerBitSet(32);1778 const BitSet = std.bit_set.IntegerBitSet(32);
1791 const Self = @This();1779 const Self = @This();
17921780
1793 pub const empty: RegisterList = .{ .bitset = .initEmpty() };1781 pub const empty: RegisterList = .{ .bitset = .initEmpty() };
...@@ -1826,6 +1814,22 @@ pub const RegisterList = struct {...@@ -1826,6 +1814,22 @@ pub const RegisterList = struct {
1826 }1814 }
1827};1815};
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
1829pub const Imm32 = struct {1833pub const Imm32 = struct {
1830 imm: u32,1834 imm: u32,
1831};1835};
...@@ -1861,11 +1865,10 @@ pub const Memory = struct {...@@ -1861,11 +1865,10 @@ pub const Memory = struct {
1861 size: bits.Memory.Size,1865 size: bits.Memory.Size,
1862 index: Register,1866 index: Register,
1863 scale: bits.Memory.Scale,1867 scale: bits.Memory.Scale,
1864 _: u14 = undefined,1868 _: u13 = undefined,
1865 };1869 };
18661870
1867 pub fn encode(mem: bits.Memory) Memory {1871 pub fn encode(mem: bits.Memory) Memory {
1868 assert(mem.base != .reloc or mem.mod != .off);
1869 return .{1872 return .{
1870 .info = .{1873 .info = .{
1871 .base = mem.base,1874 .base = mem.base,
...@@ -1887,17 +1890,27 @@ pub const Memory = struct {...@@ -1887,17 +1890,27 @@ pub const Memory = struct {
1887 .none, .table => undefined,1890 .none, .table => undefined,
1888 .reg => |reg| @intFromEnum(reg),1891 .reg => |reg| @intFromEnum(reg),
1889 .frame => |frame_index| @intFromEnum(frame_index),1892 .frame => |frame_index| @intFromEnum(frame_index),
1890 .reloc, .pcrel => |sym_index| sym_index,
1891 .rip_inst => |inst_index| inst_index,1893 .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),
1892 },1898 },
1893 .off = switch (mem.mod) {1899 .off = switch (mem.mod) {
1894 .rm => |rm| @bitCast(rm.disp),1900 .rm => |rm| @bitCast(rm.disp),
1895 .off => |off| @truncate(off),1901 .off => |off| @truncate(off),
1896 },1902 },
1897 .extra = if (mem.mod == .off)1903 .extra = switch (mem.mod) {
1898 @intCast(mem.mod.off >> 32)1904 .rm => switch (mem.base) {
1899 else1905 else => undefined,
1900 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 },
1901 };1914 };
1902 }1915 }
19031916
...@@ -1915,9 +1928,11 @@ pub const Memory = struct {...@@ -1915,9 +1928,11 @@ pub const Memory = struct {
1915 .reg => .{ .reg = @enumFromInt(mem.base) },1928 .reg => .{ .reg = @enumFromInt(mem.base) },
1916 .frame => .{ .frame = @enumFromInt(mem.base) },1929 .frame => .{ .frame = @enumFromInt(mem.base) },
1917 .table => .table,1930 .table => .table,
1918 .reloc => .{ .reloc = mem.base },
1919 .pcrel => .{ .pcrel = mem.base },
1920 .rip_inst => .{ .rip_inst = mem.base },1931 .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) },
1921 },1936 },
1922 .scale_index = switch (mem.info.index) {1937 .scale_index = switch (mem.info.index) {
1923 .none => null,1938 .none => null,
...@@ -1945,8 +1960,8 @@ pub const Memory = struct {...@@ -1945,8 +1960,8 @@ pub const Memory = struct {
1945pub fn deinit(mir: *Mir, gpa: std.mem.Allocator) void {1960pub fn deinit(mir: *Mir, gpa: std.mem.Allocator) void {
1946 mir.instructions.deinit(gpa);1961 mir.instructions.deinit(gpa);
1947 gpa.free(mir.extra);1962 gpa.free(mir.extra);
1948 gpa.free(mir.local_name_bytes);1963 gpa.free(mir.string_bytes);
1949 gpa.free(mir.local_types);1964 gpa.free(mir.locals);
1950 gpa.free(mir.table);1965 gpa.free(mir.table);
1951 mir.frame_locs.deinit(gpa);1966 mir.frame_locs.deinit(gpa);
1952 mir.* = undefined;1967 mir.* = undefined;
...@@ -1970,16 +1985,15 @@ pub fn emit(...@@ -1970,16 +1985,15 @@ pub fn emit(
1970 const mod = zcu.navFileScope(nav).mod.?;1985 const mod = zcu.navFileScope(nav).mod.?;
1971 var e: Emit = .{1986 var e: Emit = .{
1972 .lower = .{1987 .lower = .{
1973 .bin_file = lf,
1974 .target = &mod.resolved_target.result,1988 .target = &mod.resolved_target.result,
1975 .allocator = gpa,1989 .allocator = gpa,
1976 .mir = mir,1990 .mir = mir,
1977 .cc = fn_info.cc,1991 .cc = fn_info.cc,
1978 .src_loc = src_loc,1992 .src_loc = src_loc,
1979 .output_mode = comp.config.output_mode,
1980 .link_mode = comp.config.link_mode,
1981 .pic = mod.pic,
1982 },1993 },
1994 .bin_file = lf,
1995 .pt = pt,
1996 .pic = mod.pic,
1983 .atom_index = sym: {1997 .atom_index = sym: {
1984 if (lf.cast(.elf)) |ef| break :sym try ef.zigObjectPtr().?.getOrCreateMetadataForNav(zcu, nav);1998 if (lf.cast(.elf)) |ef| break :sym try ef.zigObjectPtr().?.getOrCreateMetadataForNav(zcu, nav);
1985 if (lf.cast(.macho)) |mf| break :sym try mf.getZigObject().?.getOrCreateMetadataForNav(mf, nav);1999 if (lf.cast(.macho)) |mf| break :sym try mf.getZigObject().?.getOrCreateMetadataForNav(mf, nav);
...@@ -1992,6 +2006,7 @@ pub fn emit(...@@ -1992,6 +2006,7 @@ pub fn emit(
1992 },2006 },
1993 .debug_output = debug_output,2007 .debug_output = debug_output,
1994 .code = code,2008 .code = code,
2009
1995 .prev_di_loc = .{2010 .prev_di_loc = .{
1996 .line = func.lbrace_line,2011 .line = func.lbrace_line,
1997 .column = func.lbrace_column,2012 .column = func.lbrace_column,
...@@ -2002,7 +2017,12 @@ pub fn emit(...@@ -2002,7 +2017,12 @@ pub fn emit(
2002 },2017 },
2003 },2018 },
2004 .prev_di_pc = 0,2019 .prev_di_pc = 0,
2020
2021 .code_offset_mapping = .empty,
2022 .relocs = .empty,
2023 .table_relocs = .empty,
2005 };2024 };
2025 defer e.deinit();
2006 e.emitMir() catch |err| switch (err) {2026 e.emitMir() catch |err| switch (err) {
2007 error.LowerFail, error.EmitFail => return zcu.codegenFailMsg(nav, e.lower.err_msg.?),2027 error.LowerFail, error.EmitFail => return zcu.codegenFailMsg(nav, e.lower.err_msg.?),
2008 error.InvalidInstruction, error.CannotEncode => return zcu.codegenFail(nav, "emit MIR failed: {s} (Zig compiler bug)", .{@errorName(err)}),2028 error.InvalidInstruction, error.CannotEncode => return zcu.codegenFail(nav, "emit MIR failed: {s} (Zig compiler bug)", .{@errorName(err)}),
...@@ -2010,6 +2030,62 @@ pub fn emit(...@@ -2010,6 +2030,62 @@ pub fn emit(
2010 };2030 };
2011}2031}
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
2013pub fn extraData(mir: Mir, comptime T: type, index: u32) struct { data: T, end: u32 } {2089pub fn extraData(mir: Mir, comptime T: type, index: u32) struct { data: T, end: u32 } {
2014 const fields = std.meta.fields(T);2090 const fields = std.meta.fields(T);
2015 var i: u32 = index;2091 var i: u32 = index;
...@@ -2039,9 +2115,10 @@ pub fn resolveFrameAddr(mir: Mir, frame_addr: bits.FrameAddr) bits.RegisterOffse...@@ -2039,9 +2115,10 @@ pub fn resolveFrameAddr(mir: Mir, frame_addr: bits.FrameAddr) bits.RegisterOffse
2039 return .{ .reg = frame_loc.base, .off = frame_loc.disp + frame_addr.off };2115 return .{ .reg = frame_loc.base, .off = frame_loc.disp + frame_addr.off };
2040}2116}
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;
2043 return switch (mem.info.base) {2120 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,
2045 .frame => if (mir.frame_locs.len > 0) .{2122 .frame => if (mir.frame_locs.len > 0) .{
2046 .info = .{2123 .info = .{
2047 .base = .reg,2124 .base = .reg,
...@@ -2063,7 +2140,6 @@ const builtin = @import("builtin");...@@ -2063,7 +2140,6 @@ const builtin = @import("builtin");
2063const encoder = @import("encoder.zig");2140const encoder = @import("encoder.zig");
2064const std = @import("std");2141const std = @import("std");
20652142
2066const IntegerBitSet = std.bit_set.IntegerBitSet;
2067const InternPool = @import("../../InternPool.zig");2143const InternPool = @import("../../InternPool.zig");
2068const Mir = @This();2144const Mir = @This();
2069const Register = bits.Register;2145const Register = bits.Register;
src/arch/x86_64/bits.zig+16-10
...@@ -4,6 +4,8 @@ const expect = std.testing.expect;...@@ -4,6 +4,8 @@ const expect = std.testing.expect;
44
5const Allocator = std.mem.Allocator;5const Allocator = std.mem.Allocator;
6const ArrayList = std.ArrayList;6const ArrayList = std.ArrayList;
7const InternPool = @import("../../InternPool.zig");
8const link = @import("../../link.zig");
7const Mir = @import("Mir.zig");9const Mir = @import("Mir.zig");
810
9/// EFLAGS condition codes11/// EFLAGS condition codes
...@@ -750,20 +752,22 @@ pub const FrameAddr = struct { index: FrameIndex, off: i32 = 0 };...@@ -750,20 +752,22 @@ pub const FrameAddr = struct { index: FrameIndex, off: i32 = 0 };
750752
751pub const RegisterOffset = struct { reg: Register, off: i32 = 0 };753pub 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
755pub const Memory = struct {757pub const Memory = struct {
756 base: Base = .none,758 base: Base = .none,
757 mod: Mod = .{ .rm = .{} },759 mod: Mod = .{ .rm = .{} },
758760
759 pub const Base = union(enum(u3)) {761 pub const Base = union(enum(u4)) {
760 none,762 none,
761 reg: Register,763 reg: Register,
762 frame: FrameIndex,764 frame: FrameIndex,
763 table,765 table,
764 reloc: u32,
765 pcrel: u32,
766 rip_inst: Mir.Inst.Index,766 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
768 pub const Tag = @typeInfo(Base).@"union".tag_type.?;772 pub const Tag = @typeInfo(Base).@"union".tag_type.?;
769 };773 };
...@@ -899,7 +903,10 @@ pub const Memory = struct {...@@ -899,7 +903,10 @@ pub const Memory = struct {
899pub const Immediate = union(enum) {903pub const Immediate = union(enum) {
900 signed: i32,904 signed: i32,
901 unsigned: u64,905 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
904 pub fn u(x: u64) Immediate {911 pub fn u(x: u64) Immediate {
905 return .{ .unsigned = x };912 return .{ .unsigned = x };
...@@ -909,10 +916,6 @@ pub const Immediate = union(enum) {...@@ -909,10 +916,6 @@ pub const Immediate = union(enum) {
909 return .{ .signed = x };916 return .{ .signed = x };
910 }917 }
911918
912 pub fn rel(sym_off: SymbolOffset) Immediate {
913 return .{ .reloc = sym_off };
914 }
915
916 pub fn format(919 pub fn format(
917 imm: Immediate,920 imm: Immediate,
918 comptime _: []const u8,921 comptime _: []const u8,
...@@ -921,7 +924,10 @@ pub const Immediate = union(enum) {...@@ -921,7 +924,10 @@ pub const Immediate = union(enum) {
921 ) @TypeOf(writer).Error!void {924 ) @TypeOf(writer).Error!void {
922 switch (imm) {925 switch (imm) {
923 inline else => |int| try writer.print("{d}", .{int}),926 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)}),
925 }931 }
926 }932 }
927};933};
src/arch/x86_64/encoder.zig+11-6
...@@ -138,7 +138,7 @@ pub const Instruction = struct {...@@ -138,7 +138,7 @@ pub const Instruction = struct {
138 .moffs => true,138 .moffs => true,
139 .rip => false,139 .rip => false,
140 .sib => |s| switch (s.base) {140 .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,
142 .reg => |reg| reg.isClass(.segment),142 .reg => |reg| reg.isClass(.segment),
143 },143 },
144 };144 };
...@@ -211,7 +211,7 @@ pub const Instruction = struct {...@@ -211,7 +211,7 @@ pub const Instruction = struct {
211 .none, .imm => 0b00,211 .none, .imm => 0b00,
212 .reg => |reg| @truncate(reg.enc() >> 3),212 .reg => |reg| @truncate(reg.enc() >> 3),
213 .mem => |mem| switch (mem.base()) {213 .mem => |mem| switch (mem.base()) {
214 .none, .frame, .table, .reloc, .pcrel, .rip_inst => 0b00, // rsp, rbp, and rip are not extended214 .none, .frame, .table, .rip_inst, .nav, .uav, .lazy_sym, .extern_func => 0b00, // rsp, rbp, and rip are not extended
215 .reg => |reg| @truncate(reg.enc() >> 3),215 .reg => |reg| @truncate(reg.enc() >> 3),
216 },216 },
217 .bytes => unreachable,217 .bytes => unreachable,
...@@ -281,9 +281,14 @@ pub const Instruction = struct {...@@ -281,9 +281,14 @@ pub const Instruction = struct {
281 .reg => |reg| try writer.print("{s}", .{@tagName(reg)}),281 .reg => |reg| try writer.print("{s}", .{@tagName(reg)}),
282 .frame => |frame_index| try writer.print("{}", .{frame_index}),282 .frame => |frame_index| try writer.print("{}", .{frame_index}),
283 .table => try writer.print("Table", .{}),283 .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}),
286 .rip_inst => |inst_index| try writer.print("RipInst({d})", .{inst_index}),284 .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)}),
287 }292 }
288 if (mem.scaleIndex()) |si| {293 if (mem.scaleIndex()) |si| {
289 if (any) try writer.writeAll(" + ");294 if (any) try writer.writeAll(" + ");
...@@ -718,11 +723,11 @@ pub const Instruction = struct {...@@ -718,11 +723,11 @@ pub const Instruction = struct {
718 try encoder.modRm_indirectDisp32(operand_enc, 0);723 try encoder.modRm_indirectDisp32(operand_enc, 0);
719 try encoder.disp32(undefined);724 try encoder.disp32(undefined);
720 } else return error.CannotEncode,725 } 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) {
722 try encoder.modRm_indirectDisp32(operand_enc, 0);727 try encoder.modRm_indirectDisp32(operand_enc, 0);
723 try encoder.disp32(undefined);728 try encoder.disp32(undefined);
724 } else return error.CannotEncode,729 } else return error.CannotEncode,
725 .pcrel, .rip_inst => {730 .rip_inst => {
726 try encoder.modRm_RIPDisp32(operand_enc);731 try encoder.modRm_RIPDisp32(operand_enc);
727 try encoder.disp32(sib.disp);732 try encoder.disp32(sib.disp);
728 },733 },
src/codegen.zig+98-58
...@@ -951,18 +951,17 @@ pub const GenResult = union(enum) {...@@ -951,18 +951,17 @@ pub const GenResult = union(enum) {
951 };951 };
952};952};
953953
954fn genNavRef(954pub fn genNavRef(
955 lf: *link.File,955 lf: *link.File,
956 pt: Zcu.PerThread,956 pt: Zcu.PerThread,
957 src_loc: Zcu.LazySrcLoc,957 src_loc: Zcu.LazySrcLoc,
958 val: Value,958 ty: Type,
959 nav_index: InternPool.Nav.Index,959 nav_index: InternPool.Nav.Index,
960 target: std.Target,960 target: std.Target,
961) CodeGenError!GenResult {961) CodeGenError!GenResult {
962 const zcu = pt.zcu;962 const zcu = pt.zcu;
963 const ip = &zcu.intern_pool;963 const ip = &zcu.intern_pool;
964 const ty = val.typeOf(zcu);964 log.debug("genNavRef: ty = {}", .{ty.fmt(pt)});
965 log.debug("genNavRef: val = {}", .{val.fmtValue(pt)});
966965
967 if (!ty.isFnOrHasRuntimeBitsIgnoreComptime(zcu)) {966 if (!ty.isFnOrHasRuntimeBitsIgnoreComptime(zcu)) {
968 const imm: u64 = switch (@divExact(target.ptrBitWidth(), 8)) {967 const imm: u64 = switch (@divExact(target.ptrBitWidth(), 8)) {
...@@ -991,12 +990,10 @@ fn genNavRef(...@@ -991,12 +990,10 @@ fn genNavRef(
991 }990 }
992991
993 const nav = ip.getNav(nav_index);992 const nav = ip.getNav(nav_index);
994 assert(!nav.isThreadlocal(ip));993 const lib_name, const linkage, const is_threadlocal = if (nav.getExtern(ip)) |e|
995994 .{ e.lib_name, e.linkage, e.is_threadlocal and !zcu.navFileScope(nav_index).mod.?.single_threaded }
996 const lib_name, const linkage, const visibility = if (nav.getExtern(ip)) |e|
997 .{ e.lib_name, e.linkage, e.visibility }
998 else995 else
999 .{ .none, .internal, .default };996 .{ .none, .internal, false };
1000997
1001 const name = nav.name;998 const name = nav.name;
1002 if (lf.cast(.elf)) |elf_file| {999 if (lf.cast(.elf)) |elf_file| {
...@@ -1004,6 +1001,7 @@ fn genNavRef(...@@ -1004,6 +1001,7 @@ fn genNavRef(
1004 switch (linkage) {1001 switch (linkage) {
1005 .internal => {1002 .internal => {
1006 const sym_index = try zo.getOrCreateMetadataForNav(zcu, nav_index);1003 const sym_index = try zo.getOrCreateMetadataForNav(zcu, nav_index);
1004 if (is_threadlocal) zo.symbol(sym_index).flags.is_tls = true;
1007 return .{ .mcv = .{ .lea_symbol = sym_index } };1005 return .{ .mcv = .{ .lea_symbol = sym_index } };
1008 },1006 },
1009 .strong, .weak => {1007 .strong, .weak => {
...@@ -1014,10 +1012,7 @@ fn genNavRef(...@@ -1014,10 +1012,7 @@ fn genNavRef(
1014 .weak => zo.symbol(sym_index).flags.weak = true,1012 .weak => zo.symbol(sym_index).flags.weak = true,
1015 .link_once => unreachable,1013 .link_once => unreachable,
1016 }1014 }
1017 switch (visibility) {1015 if (is_threadlocal) zo.symbol(sym_index).flags.is_tls = true;
1018 .default => zo.symbol(sym_index).flags.is_extern_ptr = true,
1019 .hidden, .protected => {},
1020 }
1021 return .{ .mcv = .{ .lea_symbol = sym_index } };1016 return .{ .mcv = .{ .lea_symbol = sym_index } };
1022 },1017 },
1023 .link_once => unreachable,1018 .link_once => unreachable,
...@@ -1027,8 +1022,8 @@ fn genNavRef(...@@ -1027,8 +1022,8 @@ fn genNavRef(
1027 switch (linkage) {1022 switch (linkage) {
1028 .internal => {1023 .internal => {
1029 const sym_index = try zo.getOrCreateMetadataForNav(macho_file, nav_index);1024 const sym_index = try zo.getOrCreateMetadataForNav(macho_file, nav_index);
1030 const sym = zo.symbols.items[sym_index];1025 if (is_threadlocal) zo.symbols.items[sym_index].flags.tlv = true;
1031 return .{ .mcv = .{ .lea_symbol = sym.nlist_idx } };1026 return .{ .mcv = .{ .lea_symbol = sym_index } };
1032 },1027 },
1033 .strong, .weak => {1028 .strong, .weak => {
1034 const sym_index = try macho_file.getGlobalSymbol(name.toSlice(ip), lib_name.toSlice(ip));1029 const sym_index = try macho_file.getGlobalSymbol(name.toSlice(ip), lib_name.toSlice(ip));
...@@ -1038,10 +1033,7 @@ fn genNavRef(...@@ -1038,10 +1033,7 @@ fn genNavRef(
1038 .weak => zo.symbols.items[sym_index].flags.weak = true,1033 .weak => zo.symbols.items[sym_index].flags.weak = true,
1039 .link_once => unreachable,1034 .link_once => unreachable,
1040 }1035 }
1041 switch (visibility) {1036 if (is_threadlocal) zo.symbols.items[sym_index].flags.tlv = true;
1042 .default => zo.symbols.items[sym_index].flags.is_extern_ptr = true,
1043 .hidden, .protected => {},
1044 }
1045 return .{ .mcv = .{ .lea_symbol = sym_index } };1037 return .{ .mcv = .{ .lea_symbol = sym_index } };
1046 },1038 },
1047 .link_once => unreachable,1039 .link_once => unreachable,
...@@ -1071,6 +1063,7 @@ fn genNavRef(...@@ -1071,6 +1063,7 @@ fn genNavRef(
1071 }1063 }
1072}1064}
10731065
1066/// deprecated legacy code path
1074pub fn genTypedValue(1067pub fn genTypedValue(
1075 lf: *link.File,1068 lf: *link.File,
1076 pt: Zcu.PerThread,1069 pt: Zcu.PerThread,
...@@ -1078,45 +1071,97 @@ pub fn genTypedValue(...@@ -1078,45 +1071,97 @@ pub fn genTypedValue(
1078 val: Value,1071 val: Value,
1079 target: std.Target,1072 target: std.Target,
1080) CodeGenError!GenResult {1073) 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 {
1081 const zcu = pt.zcu;1114 const zcu = pt.zcu;
1082 const ip = &zcu.intern_pool;1115 const ip = &zcu.intern_pool;
1083 const ty = val.typeOf(zcu);1116 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
1089 switch (ty.zigTypeTag(zcu)) {1122 switch (ty.zigTypeTag(zcu)) {
1090 .void => return .{ .mcv = .none },1123 .void => return .none,
1091 .pointer => switch (ty.ptrSize(zcu)) {1124 .pointer => switch (ty.ptrSize(zcu)) {
1092 .slice => {},1125 .slice => {},
1093 else => switch (val.toIntern()) {1126 else => switch (val.toIntern()) {
1094 .null_value => {1127 .null_value => {
1095 return .{ .mcv = .{ .immediate = 0 } };1128 return .{ .immediate = 0 };
1096 },1129 },
1097 else => switch (ip.indexToKey(val.toIntern())) {1130 else => switch (ip.indexToKey(val.toIntern())) {
1098 .int => {1131 .int => {
1099 return .{ .mcv = .{ .immediate = val.toUnsignedInt(zcu) } };1132 return .{ .immediate = val.toUnsignedInt(zcu) };
1100 },1133 },
1101 .ptr => |ptr| if (ptr.byte_offset == 0) switch (ptr.base_addr) {1134 .ptr => |ptr| if (ptr.byte_offset == 0) switch (ptr.base_addr) {
1102 .nav => |nav| return genNavRef(lf, pt, src_loc, val, nav, target),1135 .nav => |nav| {
1103 .uav => |uav| if (Value.fromInterned(uav.val).typeOf(zcu).hasRuntimeBits(zcu))1136 if (!ty.isFnOrHasRuntimeBitsIgnoreComptime(zcu)) {
1104 return switch (try lf.lowerUav(1137 const imm: u64 = switch (@divExact(target.ptrBitWidth(), 8)) {
1105 pt,1138 1 => 0xaa,
1106 uav.val,1139 2 => 0xaaaa,
1107 Type.fromInterned(uav.orig_ty).ptrAlignment(zcu),1140 4 => 0xaaaaaaaa,
1108 src_loc,1141 8 => 0xaaaaaaaaaaaaaaaa,
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 },
1113 else => unreachable,1142 else => unreachable,
1114 } },1143 };
1115 .fail => |em| return .{ .fail = em },1144 return .{ .immediate = imm };
1116 }1145 }
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 }
1117 else1162 else
1118 return .{ .mcv = .{ .immediate = Type.fromInterned(uav.orig_ty).ptrAlignment(zcu)1163 return .{ .immediate = Type.fromInterned(uav.orig_ty).ptrAlignment(zcu)
1119 .forward(@intCast((@as(u66, 1) << @intCast(target.ptrBitWidth() | 1)) / 3)) } },1164 .forward(@intCast((@as(u66, 1) << @intCast(target.ptrBitWidth() | 1)) / 3)) },
1120 else => {},1165 else => {},
1121 },1166 },
1122 else => {},1167 else => {},
...@@ -1130,39 +1175,35 @@ pub fn genTypedValue(...@@ -1130,39 +1175,35 @@ pub fn genTypedValue(
1130 .signed => @bitCast(val.toSignedInt(zcu)),1175 .signed => @bitCast(val.toSignedInt(zcu)),
1131 .unsigned => val.toUnsignedInt(zcu),1176 .unsigned => val.toUnsignedInt(zcu),
1132 };1177 };
1133 return .{ .mcv = .{ .immediate = unsigned } };1178 return .{ .immediate = unsigned };
1134 }1179 }
1135 },1180 },
1136 .bool => {1181 .bool => {
1137 return .{ .mcv = .{ .immediate = @intFromBool(val.toBool()) } };1182 return .{ .immediate = @intFromBool(val.toBool()) };
1138 },1183 },
1139 .optional => {1184 .optional => {
1140 if (ty.isPtrLikeOptional(zcu)) {1185 if (ty.isPtrLikeOptional(zcu)) {
1141 return genTypedValue(1186 return lowerValue(
1142 lf,
1143 pt,1187 pt,
1144 src_loc,1188 val.optionalValue(zcu) orelse return .{ .immediate = 0 },
1145 val.optionalValue(zcu) orelse return .{ .mcv = .{ .immediate = 0 } },
1146 target,1189 target,
1147 );1190 );
1148 } else if (ty.abiSize(zcu) == 1) {1191 } else if (ty.abiSize(zcu) == 1) {
1149 return .{ .mcv = .{ .immediate = @intFromBool(!val.isNull(zcu)) } };1192 return .{ .immediate = @intFromBool(!val.isNull(zcu)) };
1150 }1193 }
1151 },1194 },
1152 .@"enum" => {1195 .@"enum" => {
1153 const enum_tag = ip.indexToKey(val.toIntern()).enum_tag;1196 const enum_tag = ip.indexToKey(val.toIntern()).enum_tag;
1154 return genTypedValue(1197 return lowerValue(
1155 lf,
1156 pt,1198 pt,
1157 src_loc,
1158 Value.fromInterned(enum_tag.int),1199 Value.fromInterned(enum_tag.int),
1159 target,1200 target,
1160 );1201 );
1161 },1202 },
1162 .error_set => {1203 .error_set => {
1163 const err_name = ip.indexToKey(val.toIntern()).err.name;1204 const err_name = ip.indexToKey(val.toIntern()).err.name;
1164 const error_index = try pt.getErrorValue(err_name);1205 const error_index = ip.getErrorValueIfExists(err_name).?;
1165 return .{ .mcv = .{ .immediate = error_index } };1206 return .{ .immediate = error_index };
1166 },1207 },
1167 .error_union => {1208 .error_union => {
1168 const err_type = ty.errorUnionSet(zcu);1209 const err_type = ty.errorUnionSet(zcu);
...@@ -1171,20 +1212,16 @@ pub fn genTypedValue(...@@ -1171,20 +1212,16 @@ pub fn genTypedValue(
1171 // We use the error type directly as the type.1212 // We use the error type directly as the type.
1172 const err_int_ty = try pt.errorIntType();1213 const err_int_ty = try pt.errorIntType();
1173 switch (ip.indexToKey(val.toIntern()).error_union.val) {1214 switch (ip.indexToKey(val.toIntern()).error_union.val) {
1174 .err_name => |err_name| return genTypedValue(1215 .err_name => |err_name| return lowerValue(
1175 lf,
1176 pt,1216 pt,
1177 src_loc,
1178 Value.fromInterned(try pt.intern(.{ .err = .{1217 Value.fromInterned(try pt.intern(.{ .err = .{
1179 .ty = err_type.toIntern(),1218 .ty = err_type.toIntern(),
1180 .name = err_name,1219 .name = err_name,
1181 } })),1220 } })),
1182 target,1221 target,
1183 ),1222 ),
1184 .payload => return genTypedValue(1223 .payload => return lowerValue(
1185 lf,
1186 pt,1224 pt,
1187 src_loc,
1188 try pt.intValue(err_int_ty, 0),1225 try pt.intValue(err_int_ty, 0),
1189 target,1226 target,
1190 ),1227 ),
...@@ -1204,7 +1241,10 @@ pub fn genTypedValue(...@@ -1204,7 +1241,10 @@ pub fn genTypedValue(
1204 else => {},1241 else => {},
1205 }1242 }
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 } };
1208}1248}
12091249
1210pub fn errUnionPayloadOffset(payload_ty: Type, zcu: *Zcu) u64 {1250pub fn errUnionPayloadOffset(payload_ty: Type, zcu: *Zcu) u64 {
src/link/Dwarf.zig+58-14
...@@ -1478,16 +1478,16 @@ pub const WipNav = struct {...@@ -1478,16 +1478,16 @@ pub const WipNav = struct {
1478 pub fn genLocalVarDebugInfo(1478 pub fn genLocalVarDebugInfo(
1479 wip_nav: *WipNav,1479 wip_nav: *WipNav,
1480 tag: LocalVarTag,1480 tag: LocalVarTag,
1481 name: []const u8,1481 opt_name: ?[]const u8,
1482 ty: Type,1482 ty: Type,
1483 loc: Loc,1483 loc: Loc,
1484 ) UpdateError!void {1484 ) UpdateError!void {
1485 assert(wip_nav.func != .none);1485 assert(wip_nav.func != .none);
1486 try wip_nav.abbrevCode(switch (tag) {1486 try wip_nav.abbrevCode(switch (tag) {
1487 .arg => .arg,1487 .arg => if (opt_name) |_| .arg else .unnamed_arg,
1488 .local_var => .local_var,1488 .local_var => if (opt_name) |_| .local_var else unreachable,
1489 });1489 });
1490 try wip_nav.strp(name);1490 if (opt_name) |name| try wip_nav.strp(name);
1491 try wip_nav.refType(ty);1491 try wip_nav.refType(ty);
1492 try wip_nav.infoExprLoc(loc);1492 try wip_nav.infoExprLoc(loc);
1493 wip_nav.any_children = true;1493 wip_nav.any_children = true;
...@@ -1498,7 +1498,7 @@ pub const WipNav = struct {...@@ -1498,7 +1498,7 @@ pub const WipNav = struct {
1498 wip_nav: *WipNav,1498 wip_nav: *WipNav,
1499 src_loc: Zcu.LazySrcLoc,1499 src_loc: Zcu.LazySrcLoc,
1500 tag: LocalConstTag,1500 tag: LocalConstTag,
1501 name: []const u8,1501 opt_name: ?[]const u8,
1502 val: Value,1502 val: Value,
1503 ) UpdateError!void {1503 ) UpdateError!void {
1504 assert(wip_nav.func != .none);1504 assert(wip_nav.func != .none);
...@@ -1508,19 +1508,19 @@ pub const WipNav = struct {...@@ -1508,19 +1508,19 @@ pub const WipNav = struct {
1508 const has_runtime_bits = ty.hasRuntimeBits(zcu);1508 const has_runtime_bits = ty.hasRuntimeBits(zcu);
1509 const has_comptime_state = ty.comptimeOnly(zcu) and try ty.onePossibleValue(pt) == null;1509 const has_comptime_state = ty.comptimeOnly(zcu) and try ty.onePossibleValue(pt) == null;
1510 try wip_nav.abbrevCode(if (has_runtime_bits and has_comptime_state) switch (tag) {1510 try wip_nav.abbrevCode(if (has_runtime_bits and has_comptime_state) switch (tag) {
1511 .comptime_arg => .comptime_arg_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 => .local_const_runtime_bits_comptime_state,1512 .local_const => if (opt_name) |_| .local_const_runtime_bits_comptime_state else unreachable,
1513 } else if (has_comptime_state) switch (tag) {1513 } else if (has_comptime_state) switch (tag) {
1514 .comptime_arg => .comptime_arg_comptime_state,1514 .comptime_arg => if (opt_name) |_| .comptime_arg_comptime_state else .unnamed_comptime_arg_comptime_state,
1515 .local_const => .local_const_comptime_state,1515 .local_const => if (opt_name) |_| .local_const_comptime_state else unreachable,
1516 } else if (has_runtime_bits) switch (tag) {1516 } else if (has_runtime_bits) switch (tag) {
1517 .comptime_arg => .comptime_arg_runtime_bits,1517 .comptime_arg => if (opt_name) |_| .comptime_arg_runtime_bits else .unnamed_comptime_arg_runtime_bits,
1518 .local_const => .local_const_runtime_bits,1518 .local_const => if (opt_name) |_| .local_const_runtime_bits else unreachable,
1519 } else switch (tag) {1519 } else switch (tag) {
1520 .comptime_arg => .comptime_arg,1520 .comptime_arg => if (opt_name) |_| .comptime_arg else .unnamed_comptime_arg,
1521 .local_const => .local_const,1521 .local_const => if (opt_name) |_| .local_const else unreachable,
1522 });1522 });
1523 try wip_nav.strp(name);1523 if (opt_name) |name| try wip_nav.strp(name);
1524 try wip_nav.refType(ty);1524 try wip_nav.refType(ty);
1525 if (has_runtime_bits) try wip_nav.blockValue(src_loc, val);1525 if (has_runtime_bits) try wip_nav.blockValue(src_loc, val);
1526 if (has_comptime_state) try wip_nav.refValue(val);1526 if (has_comptime_state) try wip_nav.refValue(val);
...@@ -4945,10 +4945,15 @@ const AbbrevCode = enum {...@@ -4945,10 +4945,15 @@ const AbbrevCode = enum {
4945 empty_inlined_func,4945 empty_inlined_func,
4946 inlined_func,4946 inlined_func,
4947 arg,4947 arg,
4948 unnamed_arg,
4948 comptime_arg,4949 comptime_arg,
4950 unnamed_comptime_arg,
4949 comptime_arg_runtime_bits,4951 comptime_arg_runtime_bits,
4952 unnamed_comptime_arg_runtime_bits,
4950 comptime_arg_comptime_state,4953 comptime_arg_comptime_state,
4954 unnamed_comptime_arg_comptime_state,
4951 comptime_arg_runtime_bits_comptime_state,4955 comptime_arg_runtime_bits_comptime_state,
4956 unnamed_comptime_arg_runtime_bits_comptime_state,
4952 local_var,4957 local_var,
4953 local_const,4958 local_const,
4954 local_const_runtime_bits,4959 local_const_runtime_bits,
...@@ -5734,6 +5739,13 @@ const AbbrevCode = enum {...@@ -5734,6 +5739,13 @@ const AbbrevCode = enum {
5734 .{ .location, .exprloc },5739 .{ .location, .exprloc },
5735 },5740 },
5736 },5741 },
5742 .unnamed_arg = .{
5743 .tag = .formal_parameter,
5744 .attrs = &.{
5745 .{ .type, .ref_addr },
5746 .{ .location, .exprloc },
5747 },
5748 },
5737 .comptime_arg = .{5749 .comptime_arg = .{
5738 .tag = .formal_parameter,5750 .tag = .formal_parameter,
5739 .attrs = &.{5751 .attrs = &.{
...@@ -5742,6 +5754,13 @@ const AbbrevCode = enum {...@@ -5742,6 +5754,13 @@ const AbbrevCode = enum {
5742 .{ .type, .ref_addr },5754 .{ .type, .ref_addr },
5743 },5755 },
5744 },5756 },
5757 .unnamed_comptime_arg = .{
5758 .tag = .formal_parameter,
5759 .attrs = &.{
5760 .{ .const_expr, .flag_present },
5761 .{ .type, .ref_addr },
5762 },
5763 },
5745 .comptime_arg_runtime_bits = .{5764 .comptime_arg_runtime_bits = .{
5746 .tag = .formal_parameter,5765 .tag = .formal_parameter,
5747 .attrs = &.{5766 .attrs = &.{
...@@ -5751,6 +5770,14 @@ const AbbrevCode = enum {...@@ -5751,6 +5770,14 @@ const AbbrevCode = enum {
5751 .{ .const_value, .block },5770 .{ .const_value, .block },
5752 },5771 },
5753 },5772 },
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 },
5754 .comptime_arg_comptime_state = .{5781 .comptime_arg_comptime_state = .{
5755 .tag = .formal_parameter,5782 .tag = .formal_parameter,
5756 .attrs = &.{5783 .attrs = &.{
...@@ -5760,6 +5787,14 @@ const AbbrevCode = enum {...@@ -5760,6 +5787,14 @@ const AbbrevCode = enum {
5760 .{ .ZIG_comptime_value, .ref_addr },5787 .{ .ZIG_comptime_value, .ref_addr },
5761 },5788 },
5762 },5789 },
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 },
5763 .comptime_arg_runtime_bits_comptime_state = .{5798 .comptime_arg_runtime_bits_comptime_state = .{
5764 .tag = .formal_parameter,5799 .tag = .formal_parameter,
5765 .attrs = &.{5800 .attrs = &.{
...@@ -5770,6 +5805,15 @@ const AbbrevCode = enum {...@@ -5770,6 +5805,15 @@ const AbbrevCode = enum {
5770 .{ .ZIG_comptime_value, .ref_addr },5805 .{ .ZIG_comptime_value, .ref_addr },
5771 },5806 },
5772 },5807 },
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 },
5773 .local_var = .{5817 .local_var = .{
5774 .tag = .variable,5818 .tag = .variable,
5775 .attrs = &.{5819 .attrs = &.{
src/link/Elf/Symbol.zig-3
...@@ -462,9 +462,6 @@ pub const Flags = packed struct {...@@ -462,9 +462,6 @@ pub const Flags = packed struct {
462462
463 /// Whether the symbol is a TLS variable.463 /// Whether the symbol is a TLS variable.
464 is_tls: bool = false,464 is_tls: bool = false,
465
466 /// Whether the symbol is an extern pointer (as opposed to function).
467 is_extern_ptr: bool = false,
468};465};
469466
470pub const Extra = struct {467pub const Extra = struct {
src/link/Elf/ZigObject.zig+1-5
...@@ -1542,11 +1542,7 @@ pub fn updateNav(...@@ -1542,11 +1542,7 @@ pub fn updateNav(
1542 nav.name.toSlice(ip),1542 nav.name.toSlice(ip),
1543 @"extern".lib_name.toSlice(ip),1543 @"extern".lib_name.toSlice(ip),
1544 );1544 );
1545 if (!ip.isFunctionType(@"extern".ty)) {1545 if (@"extern".is_threadlocal) self.symbol(sym_index).flags.is_tls = true;
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 }
1550 if (self.dwarf) |*dwarf| dwarf: {1546 if (self.dwarf) |*dwarf| dwarf: {
1551 var debug_wip_nav = try dwarf.initWipNav(pt, nav_index, sym_index) orelse break :dwarf;1547 var debug_wip_nav = try dwarf.initWipNav(pt, nav_index, sym_index) orelse break :dwarf;
1552 defer debug_wip_nav.deinit();1548 defer debug_wip_nav.deinit();
src/link/MachO/Symbol.zig-3
...@@ -389,9 +389,6 @@ pub const Flags = packed struct {...@@ -389,9 +389,6 @@ pub const Flags = packed struct {
389 /// ZigObject specific flags389 /// ZigObject specific flags
390 /// Whether the symbol has a trampoline390 /// Whether the symbol has a trampoline
391 trampoline: bool = false,391 trampoline: bool = false,
392
393 /// Whether the symbol is an extern pointer (as opposed to function).
394 is_extern_ptr: bool = false,
395};392};
396393
397pub const SectionFlags = packed struct(u8) {394pub const SectionFlags = packed struct(u8) {
src/link/MachO/ZigObject.zig+1-5
...@@ -881,11 +881,7 @@ pub fn updateNav(...@@ -881,11 +881,7 @@ pub fn updateNav(
881 const name = @"extern".name.toSlice(ip);881 const name = @"extern".name.toSlice(ip);
882 const lib_name = @"extern".lib_name.toSlice(ip);882 const lib_name = @"extern".lib_name.toSlice(ip);
883 const sym_index = try self.getGlobalSymbol(macho_file, name, lib_name);883 const sym_index = try self.getGlobalSymbol(macho_file, name, lib_name);
884 if (!ip.isFunctionType(@"extern".ty)) {884 if (@"extern".is_threadlocal) self.symbols.items[sym_index].flags.tlv = true;
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 }
889 if (self.dwarf) |*dwarf| dwarf: {885 if (self.dwarf) |*dwarf| dwarf: {
890 var debug_wip_nav = try dwarf.initWipNav(pt, nav_index, sym_index) orelse break :dwarf;886 var debug_wip_nav = try dwarf.initWipNav(pt, nav_index, sym_index) orelse break :dwarf;
891 defer debug_wip_nav.deinit();887 defer debug_wip_nav.deinit();
src/target.zig+1-1
...@@ -850,7 +850,7 @@ pub inline fn backendSupportsFeature(backend: std.builtin.CompilerBackend, compt...@@ -850,7 +850,7 @@ pub inline fn backendSupportsFeature(backend: std.builtin.CompilerBackend, compt
850 },850 },
851 .separate_thread => switch (backend) {851 .separate_thread => switch (backend) {
852 .stage2_llvm => false,852 .stage2_llvm => false,
853 .stage2_c, .stage2_wasm => true,853 .stage2_c, .stage2_wasm, .stage2_x86_64 => true,
854 // TODO: most self-hosted backends should be able to support this without too much work.854 // TODO: most self-hosted backends should be able to support this without too much work.
855 else => false,855 else => false,
856 },856 },