Commit ba53b14028

Jacob Young <jacobly0@users.noreply.github.com>
2025-06-08 05:30:17
x86_64: remove linker references from codegen
1 parent c95b1bf
lib/std/heap/debug_allocator.zig
@@ -212,8 +212,8 @@ pub fn DebugAllocator(comptime config: Config) type {
             DummyMutex{};
 
         const DummyMutex = struct {
-            inline fn lock(_: *DummyMutex) void {}
-            inline fn unlock(_: *DummyMutex) void {}
+            inline fn lock(_: DummyMutex) void {}
+            inline fn unlock(_: DummyMutex) void {}
         };
 
         const stack_n = config.stack_trace_frames;
src/arch/riscv64/CodeGen.zig
@@ -3603,9 +3603,7 @@ fn airRuntimeNavPtr(func: *Func, inst: Air.Inst.Index) !void {
     const tlv_sym_index = if (func.bin_file.cast(.elf)) |elf_file| sym: {
         const zo = elf_file.zigObjectPtr().?;
         if (nav.getExtern(ip)) |e| {
-            const sym = try elf_file.getGlobalSymbol(nav.name.toSlice(ip), e.lib_name.toSlice(ip));
-            zo.symbol(sym).flags.is_extern_ptr = true;
-            break :sym sym;
+            break :sym try elf_file.getGlobalSymbol(nav.name.toSlice(ip), e.lib_name.toSlice(ip));
         }
         break :sym try zo.getOrCreateMetadataForNav(zcu, ty_nav.nav);
     } else return func.fail("TODO runtime_nav_ptr on {}", .{func.bin_file.tag});
src/arch/riscv64/Emit.zig
@@ -50,8 +50,8 @@ pub fn emitMir(emit: *Emit) Error!void {
                     const atom_ptr = zo.symbol(symbol.atom_index).atom(elf_file).?;
                     const sym = zo.symbol(symbol.sym_index);
 
-                    if (sym.flags.is_extern_ptr and emit.lower.pic) {
-                        return emit.fail("emit GOT relocation for symbol '{s}'", .{sym.name(elf_file)});
+                    if (emit.lower.pic) {
+                        return emit.fail("know when to emit GOT relocation for symbol '{s}'", .{sym.name(elf_file)});
                     }
 
                     const hi_r_type: u32 = @intFromEnum(std.elf.R_RISCV.HI20);
src/arch/x86_64/bits.zig
@@ -4,6 +4,8 @@ const expect = std.testing.expect;
 
 const Allocator = std.mem.Allocator;
 const ArrayList = std.ArrayList;
+const InternPool = @import("../../InternPool.zig");
+const link = @import("../../link.zig");
 const Mir = @import("Mir.zig");
 
 /// EFLAGS condition codes
@@ -750,20 +752,22 @@ pub const FrameAddr = struct { index: FrameIndex, off: i32 = 0 };
 
 pub const RegisterOffset = struct { reg: Register, off: i32 = 0 };
 
-pub const SymbolOffset = struct { sym_index: u32, off: i32 = 0 };
+pub const NavOffset = struct { index: InternPool.Nav.Index, off: i32 = 0 };
 
 pub const Memory = struct {
     base: Base = .none,
     mod: Mod = .{ .rm = .{} },
 
-    pub const Base = union(enum(u3)) {
+    pub const Base = union(enum(u4)) {
         none,
         reg: Register,
         frame: FrameIndex,
         table,
-        reloc: u32,
-        pcrel: u32,
         rip_inst: Mir.Inst.Index,
+        nav: InternPool.Nav.Index,
+        uav: InternPool.Key.Ptr.BaseAddr.Uav,
+        lazy_sym: link.File.LazySymbol,
+        extern_func: Mir.NullTerminatedString,
 
         pub const Tag = @typeInfo(Base).@"union".tag_type.?;
     };
@@ -899,7 +903,10 @@ pub const Memory = struct {
 pub const Immediate = union(enum) {
     signed: i32,
     unsigned: u64,
-    reloc: SymbolOffset,
+    nav: NavOffset,
+    uav: InternPool.Key.Ptr.BaseAddr.Uav,
+    lazy_sym: link.File.LazySymbol,
+    extern_func: Mir.NullTerminatedString,
 
     pub fn u(x: u64) Immediate {
         return .{ .unsigned = x };
@@ -909,10 +916,6 @@ pub const Immediate = union(enum) {
         return .{ .signed = x };
     }
 
-    pub fn rel(sym_off: SymbolOffset) Immediate {
-        return .{ .reloc = sym_off };
-    }
-
     pub fn format(
         imm: Immediate,
         comptime _: []const u8,
@@ -921,7 +924,10 @@ pub const Immediate = union(enum) {
     ) @TypeOf(writer).Error!void {
         switch (imm) {
             inline else => |int| try writer.print("{d}", .{int}),
-            .reloc => |sym_off| try writer.print("Symbol({[sym_index]d}) + {[off]d}", sym_off),
+            .nav => |nav_off| try writer.print("Nav({d}) + {d}", .{ @intFromEnum(nav_off.nav), nav_off.off }),
+            .uav => |uav| try writer.print("Uav({d})", .{@intFromEnum(uav.val)}),
+            .lazy_sym => |lazy_sym| try writer.print("LazySym({s}, {d})", .{ @tagName(lazy_sym.kind), @intFromEnum(lazy_sym.ty) }),
+            .extern_func => |extern_func| try writer.print("ExternFunc({d})", .{@intFromEnum(extern_func)}),
         }
     }
 };
src/arch/x86_64/CodeGen.zig
@@ -124,9 +124,11 @@ gpa: Allocator,
 pt: Zcu.PerThread,
 air: Air,
 liveness: Air.Liveness,
-bin_file: *link.File,
 target: *const std.Target,
-owner: Owner,
+owner: union(enum) {
+    nav_index: InternPool.Nav.Index,
+    lazy_sym: link.File.LazySymbol,
+},
 inline_func: InternPool.Index,
 mod: *Module,
 args: []MCValue,
@@ -150,8 +152,14 @@ eflags_inst: ?Air.Inst.Index = null,
 mir_instructions: std.MultiArrayList(Mir.Inst) = .empty,
 /// MIR extra data
 mir_extra: std.ArrayListUnmanaged(u32) = .empty,
-mir_local_name_bytes: std.ArrayListUnmanaged(u8) = .empty,
-mir_local_types: std.ArrayListUnmanaged(InternPool.Index) = .empty,
+mir_string_bytes: std.ArrayListUnmanaged(u8) = .empty,
+mir_strings: std.HashMapUnmanaged(
+    u32,
+    void,
+    std.hash_map.StringIndexContext,
+    std.hash_map.default_max_load_percentage,
+) = .empty,
+mir_locals: std.ArrayListUnmanaged(Mir.Local) = .empty,
 mir_table: std.ArrayListUnmanaged(Mir.Inst.Index) = .empty,
 
 /// The value is an offset into the `Function` `code` from the beginning.
@@ -194,41 +202,6 @@ loop_switches: std.AutoHashMapUnmanaged(Air.Inst.Index, struct {
 next_temp_index: Temp.Index = @enumFromInt(0),
 temp_type: [Temp.Index.max]Type = undefined,
 
-const Owner = union(enum) {
-    nav_index: InternPool.Nav.Index,
-    lazy_sym: link.File.LazySymbol,
-
-    fn getSymbolIndex(owner: Owner, ctx: *CodeGen) !u32 {
-        const pt = ctx.pt;
-        switch (owner) {
-            .nav_index => |nav_index| if (ctx.bin_file.cast(.elf)) |elf_file| {
-                return elf_file.zigObjectPtr().?.getOrCreateMetadataForNav(pt.zcu, nav_index);
-            } else if (ctx.bin_file.cast(.macho)) |macho_file| {
-                return macho_file.getZigObject().?.getOrCreateMetadataForNav(macho_file, nav_index);
-            } else if (ctx.bin_file.cast(.coff)) |coff_file| {
-                const atom = try coff_file.getOrCreateAtomForNav(nav_index);
-                return coff_file.getAtom(atom).getSymbolIndex().?;
-            } else if (ctx.bin_file.cast(.plan9)) |p9_file| {
-                return p9_file.seeNav(pt, nav_index);
-            } else unreachable,
-            .lazy_sym => |lazy_sym| if (ctx.bin_file.cast(.elf)) |elf_file| {
-                return elf_file.zigObjectPtr().?.getOrCreateMetadataForLazySymbol(elf_file, pt, lazy_sym) catch |err|
-                    ctx.fail("{s} creating lazy symbol", .{@errorName(err)});
-            } else if (ctx.bin_file.cast(.macho)) |macho_file| {
-                return macho_file.getZigObject().?.getOrCreateMetadataForLazySymbol(macho_file, pt, lazy_sym) catch |err|
-                    ctx.fail("{s} creating lazy symbol", .{@errorName(err)});
-            } else if (ctx.bin_file.cast(.coff)) |coff_file| {
-                const atom = coff_file.getOrCreateAtomForLazySymbol(pt, lazy_sym) catch |err|
-                    return ctx.fail("{s} creating lazy symbol", .{@errorName(err)});
-                return coff_file.getAtom(atom).getSymbolIndex().?;
-            } else if (ctx.bin_file.cast(.plan9)) |p9_file| {
-                return p9_file.getOrCreateAtomForLazySymbol(pt, lazy_sym) catch |err|
-                    return ctx.fail("{s} creating lazy symbol", .{@errorName(err)});
-            } else unreachable,
-        }
-    }
-};
-
 const MaskInfo = packed struct {
     kind: enum(u1) { sign, all },
     inverted: bool = false,
@@ -269,37 +242,22 @@ pub const MCValue = union(enum) {
     /// The value is in memory at a hard-coded address.
     /// If the type is a pointer, it means the pointer address is stored at this memory location.
     memory: u64,
-    /// The value is in memory at an address not-yet-allocated by the linker.
-    /// This traditionally corresponds to a relocation emitted in a relocatable object file.
-    load_symbol: bits.SymbolOffset,
-    /// The address of the memory location not-yet-allocated by the linker.
-    lea_symbol: bits.SymbolOffset,
-    /// The value is in memory at an address not-yet-allocated by the linker.
-    /// This must use a non-got pc-relative relocation.
-    load_pcrel: bits.SymbolOffset,
-    /// The address of the memory location not-yet-allocated by the linker.
-    /// This must use a non-got pc-relative relocation.
-    lea_pcrel: bits.SymbolOffset,
     /// The value is in memory at a constant offset from the address in a register.
     indirect: bits.RegisterOffset,
-    /// The value is in memory.
-    /// Payload is a symbol index.
-    load_direct: u32,
-    /// The value is a pointer to a value in memory.
-    /// Payload is a symbol index.
-    lea_direct: u32,
-    /// The value is in memory referenced indirectly via GOT.
-    /// Payload is a symbol index.
-    load_got: u32,
-    /// The value is a pointer to a value referenced indirectly via GOT.
-    /// Payload is a symbol index.
-    lea_got: u32,
     /// The value stored at an offset from a frame index
     /// Payload is a frame address.
     load_frame: bits.FrameAddr,
     /// The address of an offset from a frame index
     /// Payload is a frame address.
     lea_frame: bits.FrameAddr,
+    load_nav: InternPool.Nav.Index,
+    lea_nav: InternPool.Nav.Index,
+    load_uav: InternPool.Key.Ptr.BaseAddr.Uav,
+    lea_uav: InternPool.Key.Ptr.BaseAddr.Uav,
+    load_lazy_sym: link.File.LazySymbol,
+    lea_lazy_sym: link.File.LazySymbol,
+    load_extern_func: Mir.NullTerminatedString,
+    lea_extern_func: Mir.NullTerminatedString,
     /// Supports integer_per_element abi
     elementwise_args: packed struct { regs: u3, frame_off: i29, frame_index: FrameIndex },
     /// This indicates that we have already allocated a frame index for this instruction,
@@ -319,11 +277,14 @@ pub const MCValue = union(enum) {
             .register_mask,
             .eflags,
             .register_overflow,
-            .lea_symbol,
-            .lea_pcrel,
-            .lea_direct,
-            .lea_got,
             .lea_frame,
+            .lea_nav,
+            .load_uav,
+            .lea_uav,
+            .load_lazy_sym,
+            .lea_lazy_sym,
+            .lea_extern_func,
+            .load_extern_func,
             .elementwise_args,
             .reserved_frame,
             .air_ref,
@@ -333,11 +294,8 @@ pub const MCValue = union(enum) {
             .register_triple,
             .register_quadruple,
             .memory,
-            .load_symbol,
-            .load_pcrel,
-            .load_got,
-            .load_direct,
             .indirect,
+            .load_nav,
             => true,
             .load_frame => |frame_addr| !frame_addr.index.isNamed(),
         };
@@ -353,7 +311,14 @@ pub const MCValue = union(enum) {
 
     fn isMemory(mcv: MCValue) bool {
         return switch (mcv) {
-            .memory, .indirect, .load_frame, .load_symbol => true,
+            .memory,
+            .indirect,
+            .load_frame,
+            .load_nav,
+            .load_uav,
+            .load_lazy_sym,
+            .load_extern_func,
+            => true,
             else => false,
         };
     }
@@ -423,7 +388,7 @@ pub const MCValue = union(enum) {
 
     fn address(mcv: MCValue) MCValue {
         return switch (mcv) {
-            .none,
+            .none => .none,
             .unreach,
             .dead,
             .undef,
@@ -436,11 +401,11 @@ pub const MCValue = union(enum) {
             .register_offset,
             .register_overflow,
             .register_mask,
-            .lea_symbol,
-            .lea_pcrel,
-            .lea_direct,
-            .lea_got,
             .lea_frame,
+            .lea_nav,
+            .lea_uav,
+            .lea_lazy_sym,
+            .lea_extern_func,
             .elementwise_args,
             .reserved_frame,
             .air_ref,
@@ -450,17 +415,17 @@ pub const MCValue = union(enum) {
                 0 => .{ .register = reg_off.reg },
                 else => .{ .register_offset = reg_off },
             },
-            .load_direct => |sym_index| .{ .lea_direct = sym_index },
-            .load_got => |sym_index| .{ .lea_got = sym_index },
             .load_frame => |frame_addr| .{ .lea_frame = frame_addr },
-            .load_symbol => |sym_off| .{ .lea_symbol = sym_off },
-            .load_pcrel => |sym_off| .{ .lea_pcrel = sym_off },
+            .load_nav => |nav| .{ .lea_nav = nav },
+            .load_uav => |uav| .{ .lea_uav = uav },
+            .load_lazy_sym => |lazy_sym| .{ .lea_lazy_sym = lazy_sym },
+            .load_extern_func => |extern_func| .{ .lea_extern_func = extern_func },
         };
     }
 
     fn deref(mcv: MCValue) MCValue {
         return switch (mcv) {
-            .none,
+            .none => .none,
             .unreach,
             .dead,
             .undef,
@@ -472,11 +437,11 @@ pub const MCValue = union(enum) {
             .register_mask,
             .memory,
             .indirect,
-            .load_direct,
-            .load_got,
             .load_frame,
-            .load_symbol,
-            .load_pcrel,
+            .load_nav,
+            .load_uav,
+            .load_lazy_sym,
+            .load_extern_func,
             .elementwise_args,
             .reserved_frame,
             .air_ref,
@@ -484,17 +449,17 @@ pub const MCValue = union(enum) {
             .immediate => |addr| .{ .memory = addr },
             .register => |reg| .{ .indirect = .{ .reg = reg } },
             .register_offset => |reg_off| .{ .indirect = reg_off },
-            .lea_direct => |sym_index| .{ .load_direct = sym_index },
-            .lea_got => |sym_index| .{ .load_got = sym_index },
             .lea_frame => |frame_addr| .{ .load_frame = frame_addr },
-            .lea_symbol => |sym_index| .{ .load_symbol = sym_index },
-            .lea_pcrel => |sym_index| .{ .load_pcrel = sym_index },
+            .lea_nav => |nav| .{ .load_nav = nav },
+            .lea_uav => |uav| .{ .load_uav = uav },
+            .lea_lazy_sym => |lazy_sym| .{ .load_lazy_sym = lazy_sym },
+            .lea_extern_func => |extern_func| .{ .load_extern_func = extern_func },
         };
     }
 
     fn offset(mcv: MCValue, off: i32) MCValue {
         return switch (mcv) {
-            .none,
+            .none => .none,
             .unreach,
             .dead,
             .undef,
@@ -510,15 +475,15 @@ pub const MCValue = union(enum) {
             .register_mask,
             .memory,
             .indirect,
-            .load_direct,
-            .lea_direct,
-            .load_got,
-            .lea_got,
             .load_frame,
-            .load_symbol,
-            .lea_symbol,
-            .load_pcrel,
-            .lea_pcrel,
+            .load_nav,
+            .lea_nav,
+            .load_uav,
+            .lea_uav,
+            .load_lazy_sym,
+            .lea_lazy_sym,
+            .load_extern_func,
+            .lea_extern_func,
             => switch (off) {
                 0 => mcv,
                 else => unreachable, // not offsettable
@@ -536,7 +501,7 @@ pub const MCValue = union(enum) {
 
     fn mem(mcv: MCValue, function: *CodeGen, mod_rm: Memory.Mod.Rm) !Memory {
         return switch (mcv) {
-            .none,
+            .none => .{ .mod = .{ .rm = mod_rm } },
             .unreach,
             .dead,
             .undef,
@@ -549,15 +514,13 @@ pub const MCValue = union(enum) {
             .register_offset,
             .register_overflow,
             .register_mask,
-            .load_direct,
-            .lea_direct,
-            .load_got,
-            .lea_got,
             .lea_frame,
             .elementwise_args,
             .reserved_frame,
-            .lea_symbol,
-            .lea_pcrel,
+            .lea_nav,
+            .lea_uav,
+            .lea_lazy_sym,
+            .lea_extern_func,
             => unreachable,
             .memory => |addr| if (std.math.cast(i32, @as(i64, @bitCast(addr)))) |small_addr| .{
                 .base = .{ .reg = .ds },
@@ -586,30 +549,10 @@ pub const MCValue = union(enum) {
                     .disp = frame_addr.off + mod_rm.disp,
                 } },
             },
-            .load_symbol => |sym_off| {
-                assert(sym_off.off == 0);
-                return .{
-                    .base = .{ .reloc = sym_off.sym_index },
-                    .mod = .{ .rm = .{
-                        .size = mod_rm.size,
-                        .index = mod_rm.index,
-                        .scale = mod_rm.scale,
-                        .disp = sym_off.off + mod_rm.disp,
-                    } },
-                };
-            },
-            .load_pcrel => |sym_off| {
-                assert(sym_off.off == 0);
-                return .{
-                    .base = .{ .pcrel = sym_off.sym_index },
-                    .mod = .{ .rm = .{
-                        .size = mod_rm.size,
-                        .index = mod_rm.index,
-                        .scale = mod_rm.scale,
-                        .disp = sym_off.off + mod_rm.disp,
-                    } },
-                };
-            },
+            .load_nav => |nav| .{ .base = .{ .nav = nav }, .mod = .{ .rm = mod_rm } },
+            .load_uav => |uav| .{ .base = .{ .uav = uav }, .mod = .{ .rm = mod_rm } },
+            .load_lazy_sym => |lazy_sym| .{ .base = .{ .lazy_sym = lazy_sym }, .mod = .{ .rm = mod_rm } },
+            .load_extern_func => |extern_func| .{ .base = .{ .extern_func = extern_func }, .mod = .{ .rm = mod_rm } },
             .air_ref => |ref| (try function.resolveInst(ref)).mem(function, mod_rm),
         };
     }
@@ -643,20 +586,20 @@ pub const MCValue = union(enum) {
                 @as(u8, if (pl.info.inverted) '!' else ' '),
                 @tagName(pl.reg),
             }),
-            .load_symbol => |pl| try writer.print("[sym:{} + 0x{x}]", .{ pl.sym_index, pl.off }),
-            .lea_symbol => |pl| try writer.print("sym:{} + 0x{x}", .{ pl.sym_index, pl.off }),
-            .load_pcrel => |pl| try writer.print("[sym@pcrel:{} + 0x{x}]", .{ pl.sym_index, pl.off }),
-            .lea_pcrel => |pl| try writer.print("sym@pcrel:{} + 0x{x}", .{ pl.sym_index, pl.off }),
             .indirect => |pl| try writer.print("[{s} + 0x{x}]", .{ @tagName(pl.reg), pl.off }),
-            .load_direct => |pl| try writer.print("[direct:{d}]", .{pl}),
-            .lea_direct => |pl| try writer.print("direct:{d}", .{pl}),
-            .load_got => |pl| try writer.print("[got:{d}]", .{pl}),
-            .lea_got => |pl| try writer.print("got:{d}", .{pl}),
             .load_frame => |pl| try writer.print("[{} + 0x{x}]", .{ pl.index, pl.off }),
+            .lea_frame => |pl| try writer.print("{} + 0x{x}", .{ pl.index, pl.off }),
+            .load_nav => |pl| try writer.print("[nav:{d}]", .{@intFromEnum(pl)}),
+            .lea_nav => |pl| try writer.print("nav:{d}", .{@intFromEnum(pl)}),
+            .load_uav => |pl| try writer.print("[uav:{d}]", .{@intFromEnum(pl.val)}),
+            .lea_uav => |pl| try writer.print("uav:{d}", .{@intFromEnum(pl.val)}),
+            .load_lazy_sym => |pl| try writer.print("[lazy:{s}:{d}]", .{ @tagName(pl.kind), @intFromEnum(pl.ty) }),
+            .lea_lazy_sym => |pl| try writer.print("lazy:{s}:{d}", .{ @tagName(pl.kind), @intFromEnum(pl.ty) }),
+            .load_extern_func => |pl| try writer.print("[extern:{d}]", .{@intFromEnum(pl)}),
+            .lea_extern_func => |pl| try writer.print("extern:{d}", .{@intFromEnum(pl)}),
             .elementwise_args => |pl| try writer.print("elementwise:{d}:[{} + 0x{x}]", .{
                 pl.regs, pl.frame_index, pl.frame_off,
             }),
-            .lea_frame => |pl| try writer.print("{} + 0x{x}", .{ pl.index, pl.off }),
             .reserved_frame => |pl| try writer.print("(dead:{})", .{pl}),
             .air_ref => |pl| try writer.print("(air:0x{x})", .{@intFromEnum(pl)}),
         }
@@ -676,16 +619,16 @@ const InstTracking = struct {
             .undef,
             .immediate,
             .memory,
-            .load_direct,
-            .lea_direct,
-            .load_got,
-            .lea_got,
             .load_frame,
             .lea_frame,
-            .load_symbol,
-            .lea_symbol,
-            .load_pcrel,
-            .lea_pcrel,
+            .load_nav,
+            .lea_nav,
+            .load_uav,
+            .lea_uav,
+            .load_lazy_sym,
+            .lea_lazy_sym,
+            .load_extern_func,
+            .lea_extern_func,
             => result,
             .dead,
             .elementwise_args,
@@ -779,15 +722,15 @@ const InstTracking = struct {
             .undef,
             .immediate,
             .memory,
-            .load_direct,
-            .lea_direct,
-            .load_got,
-            .lea_got,
             .lea_frame,
-            .load_symbol,
-            .lea_symbol,
-            .load_pcrel,
-            .lea_pcrel,
+            .load_nav,
+            .lea_nav,
+            .load_uav,
+            .lea_uav,
+            .load_lazy_sym,
+            .lea_lazy_sym,
+            .load_extern_func,
+            .lea_extern_func,
             => assert(std.meta.eql(self.long, target.long)),
             .dead,
             .eflags,
@@ -975,6 +918,7 @@ pub fn generate(
     air: *const Air,
     liveness: *const Air.Liveness,
 ) codegen.CodeGenError!Mir {
+    _ = bin_file;
     const zcu = pt.zcu;
     const gpa = zcu.gpa;
     const ip = &zcu.intern_pool;
@@ -991,7 +935,6 @@ pub fn generate(
         .liveness = liveness.*,
         .target = &mod.resolved_target.result,
         .mod = mod,
-        .bin_file = bin_file,
         .owner = .{ .nav_index = func.owner_nav },
         .inline_func = func_index,
         .args = undefined, // populated after `resolveCallingConventionValues`
@@ -1013,8 +956,9 @@ pub fn generate(
         function.inst_tracking.deinit(gpa);
         function.epilogue_relocs.deinit(gpa);
         function.mir_instructions.deinit(gpa);
-        function.mir_local_name_bytes.deinit(gpa);
-        function.mir_local_types.deinit(gpa);
+        function.mir_string_bytes.deinit(gpa);
+        function.mir_strings.deinit(gpa);
+        function.mir_locals.deinit(gpa);
         function.mir_extra.deinit(gpa);
         function.mir_table.deinit(gpa);
     }
@@ -1101,27 +1045,27 @@ pub fn generate(
     var mir: Mir = .{
         .instructions = .empty,
         .extra = &.{},
-        .local_name_bytes = &.{},
-        .local_types = &.{},
+        .string_bytes = &.{},
+        .locals = &.{},
         .table = &.{},
         .frame_locs = .empty,
     };
     errdefer mir.deinit(gpa);
     mir.instructions = function.mir_instructions.toOwnedSlice();
     mir.extra = try function.mir_extra.toOwnedSlice(gpa);
-    mir.local_name_bytes = try function.mir_local_name_bytes.toOwnedSlice(gpa);
-    mir.local_types = try function.mir_local_types.toOwnedSlice(gpa);
+    mir.string_bytes = try function.mir_string_bytes.toOwnedSlice(gpa);
+    mir.locals = try function.mir_locals.toOwnedSlice(gpa);
     mir.table = try function.mir_table.toOwnedSlice(gpa);
     mir.frame_locs = function.frame_locs.toOwnedSlice();
     return mir;
 }
 
-pub fn toTmpMir(cg: *CodeGen) Mir {
+pub fn getTmpMir(cg: *CodeGen) Mir {
     return .{
         .instructions = cg.mir_instructions.slice(),
         .extra = cg.mir_extra.items,
-        .local_name_bytes = cg.mir_local_name_bytes.items,
-        .local_types = cg.mir_local_types.items,
+        .string_bytes = cg.mir_string_bytes.items,
+        .locals = cg.mir_locals.items,
         .table = cg.mir_table.items,
         .frame_locs = cg.frame_locs.slice(),
     };
@@ -1135,10 +1079,9 @@ pub fn generateLazy(
     code: *std.ArrayListUnmanaged(u8),
     debug_output: link.File.DebugInfoOutput,
 ) codegen.CodeGenError!void {
-    const comp = bin_file.comp;
-    const gpa = comp.gpa;
+    const gpa = pt.zcu.gpa;
     // This function is for generating global code, so we use the root module.
-    const mod = comp.root_mod;
+    const mod = pt.zcu.comp.root_mod;
     var function: CodeGen = .{
         .gpa = gpa,
         .pt = pt,
@@ -1146,7 +1089,6 @@ pub fn generateLazy(
         .liveness = undefined,
         .target = &mod.resolved_target.result,
         .mod = mod,
-        .bin_file = bin_file,
         .owner = .{ .lazy_sym = lazy_sym },
         .inline_func = undefined,
         .args = undefined,
@@ -1159,8 +1101,9 @@ pub fn generateLazy(
     defer {
         function.inst_tracking.deinit(gpa);
         function.mir_instructions.deinit(gpa);
-        function.mir_local_name_bytes.deinit(gpa);
-        function.mir_local_types.deinit(gpa);
+        function.mir_string_bytes.deinit(gpa);
+        function.mir_strings.deinit(gpa);
+        function.mir_locals.deinit(gpa);
         function.mir_extra.deinit(gpa);
         function.mir_table.deinit(gpa);
     }
@@ -1176,33 +1119,7 @@ pub fn generateLazy(
         else => |e| return e,
     };
 
-    var emit: Emit = .{
-        .lower = .{
-            .bin_file = bin_file,
-            .target = function.target,
-            .allocator = gpa,
-            .mir = function.toTmpMir(),
-            .cc = .auto,
-            .src_loc = src_loc,
-            .output_mode = comp.config.output_mode,
-            .link_mode = comp.config.link_mode,
-            .pic = mod.pic,
-        },
-        .atom_index = function.owner.getSymbolIndex(&function) catch |err| switch (err) {
-            error.CodegenFail => return error.CodegenFail,
-            else => |e| return e,
-        },
-        .debug_output = debug_output,
-        .code = code,
-        .prev_di_loc = undefined, // no debug info yet
-        .prev_di_pc = undefined, // no debug info yet
-    };
-    emit.emitMir() catch |err| switch (err) {
-        error.LowerFail, error.EmitFail => return function.failMsg(emit.lower.err_msg.?),
-        error.InvalidInstruction => return function.fail("failed to find a viable x86 instruction (Zig compiler bug)", .{}),
-        error.CannotEncode => return function.fail("failed to encode x86 instruction (Zig compiler bug)", .{}),
-        else => |e| return function.fail("failed to emit MIR: {s}", .{@errorName(e)}),
-    };
+    try function.getTmpMir().emitLazy(bin_file, pt, src_loc, lazy_sym, code, debug_output);
 }
 
 const FormatNavData = struct {
@@ -1250,17 +1167,12 @@ fn formatWipMir(
     _: std.fmt.FormatOptions,
     writer: anytype,
 ) @TypeOf(writer).Error!void {
-    const comp = data.self.bin_file.comp;
     var lower: Lower = .{
-        .bin_file = data.self.bin_file,
         .target = data.self.target,
         .allocator = data.self.gpa,
-        .mir = data.self.toTmpMir(),
+        .mir = data.self.getTmpMir(),
         .cc = .auto,
         .src_loc = data.self.src_loc,
-        .output_mode = comp.config.output_mode,
-        .link_mode = comp.config.link_mode,
-        .pic = data.self.mod.pic,
     };
     var first = true;
     for ((lower.lowerMir(data.inst) catch |err| switch (err) {
@@ -1317,13 +1229,6 @@ fn formatWipMir(
             .pseudo_dbg_arg_i_64, .pseudo_dbg_var_i_64 => try writer.print(" {d}", .{
                 mir_inst.data.i64,
             }),
-            .pseudo_dbg_arg_reloc, .pseudo_dbg_var_reloc => {
-                const mem_op: encoder.Instruction.Operand = .{ .mem = .initSib(.qword, .{
-                    .base = .{ .reloc = mir_inst.data.reloc.sym_index },
-                    .disp = mir_inst.data.reloc.off,
-                }) };
-                try writer.print(" {}", .{mem_op.fmt(.m)});
-            },
             .pseudo_dbg_arg_ro, .pseudo_dbg_var_ro => {
                 const mem_op: encoder.Instruction.Operand = .{ .mem = .initSib(.qword, .{
                     .base = .{ .reg = mir_inst.data.ro.reg },
@@ -1399,6 +1304,22 @@ fn addExtraAssumeCapacity(self: *CodeGen, extra: anytype) u32 {
     return result;
 }
 
+fn addString(cg: *CodeGen, string: []const u8) Allocator.Error!Mir.NullTerminatedString {
+    try cg.mir_string_bytes.ensureUnusedCapacity(cg.gpa, string.len + 1);
+    try cg.mir_strings.ensureUnusedCapacityContext(cg.gpa, 1, .{ .bytes = &cg.mir_string_bytes });
+
+    const mir_string_gop = cg.mir_strings.getOrPutAssumeCapacityAdapted(
+        string,
+        std.hash_map.StringIndexAdapter{ .bytes = &cg.mir_string_bytes },
+    );
+    if (!mir_string_gop.found_existing) {
+        mir_string_gop.key_ptr.* = @intCast(cg.mir_string_bytes.items.len);
+        cg.mir_string_bytes.appendSliceAssumeCapacity(string);
+        cg.mir_string_bytes.appendAssumeCapacity(0);
+    }
+    return @enumFromInt(mir_string_gop.key_ptr.*);
+}
+
 fn asmOps(self: *CodeGen, tag: Mir.Inst.FixedTag, ops: [4]Operand) !void {
     return switch (ops[0]) {
         .none => self.asmOpOnly(tag),
@@ -1714,21 +1635,36 @@ fn asmImmediate(self: *CodeGen, tag: Mir.Inst.FixedTag, imm: Immediate) !void {
         .ops = switch (imm) {
             .signed => .i_s,
             .unsigned => .i_u,
-            .reloc => .rel,
+            .nav => .nav,
+            .uav => .uav,
+            .lazy_sym => .lazy_sym,
+            .extern_func => .extern_func,
         },
         .data = switch (imm) {
-            .reloc => |sym_off| reloc: {
-                assert(tag[0] == ._);
-                break :reloc .{ .reloc = sym_off };
-            },
             .signed, .unsigned => .{ .i = .{
                 .fixes = tag[0],
                 .i = switch (imm) {
                     .signed => |s| @bitCast(s),
                     .unsigned => |u| @intCast(u),
-                    .reloc => unreachable,
+                    .nav, .uav, .lazy_sym, .extern_func => unreachable,
                 },
             } },
+            .nav => |nav| switch (tag[0]) {
+                ._ => .{ .nav = nav },
+                else => unreachable,
+            },
+            .uav => |uav| switch (tag[0]) {
+                ._ => .{ .uav = uav },
+                else => unreachable,
+            },
+            .lazy_sym => |lazy_sym| switch (tag[0]) {
+                ._ => .{ .lazy_sym = lazy_sym },
+                else => unreachable,
+            },
+            .extern_func => |extern_func| switch (tag[0]) {
+                ._ => .{ .extern_func = extern_func },
+                else => unreachable,
+            },
         },
     });
 }
@@ -1743,7 +1679,7 @@ fn asmImmediateRegister(self: *CodeGen, tag: Mir.Inst.FixedTag, imm: Immediate,
             .i = @as(u8, switch (imm) {
                 .signed => |s| @bitCast(@as(i8, @intCast(s))),
                 .unsigned => |u| @intCast(u),
-                .reloc => unreachable,
+                .nav, .uav, .lazy_sym, .extern_func => unreachable,
             }),
         } },
     });
@@ -1758,12 +1694,12 @@ fn asmImmediateImmediate(self: *CodeGen, tag: Mir.Inst.FixedTag, imm1: Immediate
             .i1 = switch (imm1) {
                 .signed => |s| @bitCast(@as(i16, @intCast(s))),
                 .unsigned => |u| @intCast(u),
-                .reloc => unreachable,
+                .nav, .uav, .lazy_sym, .extern_func => unreachable,
             },
             .i2 = switch (imm2) {
                 .signed => |s| @bitCast(@as(i8, @intCast(s))),
                 .unsigned => |u| @intCast(u),
-                .reloc => unreachable,
+                .nav, .uav, .lazy_sym, .extern_func => unreachable,
             },
         } },
     });
@@ -1788,7 +1724,7 @@ fn asmRegisterImmediate(self: *CodeGen, tag: Mir.Inst.FixedTag, reg: Register, i
             .{ .ri_u, small }
         else
             .{ .ri_64, try self.addExtra(Mir.Imm64.encode(imm.unsigned)) },
-        .reloc => unreachable,
+        .nav, .uav, .lazy_sym, .extern_func => unreachable,
     };
     _ = try self.addInst(.{
         .tag = tag[1],
@@ -1860,7 +1796,7 @@ fn asmRegisterRegisterRegisterImmediate(
             .i = switch (imm) {
                 .signed => |s| @bitCast(@as(i8, @intCast(s))),
                 .unsigned => |u| @intCast(u),
-                .reloc => unreachable,
+                .nav, .uav, .lazy_sym, .extern_func => unreachable,
             },
         } },
     });
@@ -1878,7 +1814,7 @@ fn asmRegisterRegisterImmediate(
         .ops = switch (imm) {
             .signed => .rri_s,
             .unsigned => .rri_u,
-            .reloc => unreachable,
+            .nav, .uav, .lazy_sym, .extern_func => unreachable,
         },
         .data = .{ .rri = .{
             .fixes = tag[0],
@@ -1887,7 +1823,7 @@ fn asmRegisterRegisterImmediate(
             .i = switch (imm) {
                 .signed => |s| @bitCast(s),
                 .unsigned => |u| @intCast(u),
-                .reloc => unreachable,
+                .nav, .uav, .lazy_sym, .extern_func => unreachable,
             },
         } },
     });
@@ -1985,7 +1921,7 @@ fn asmRegisterMemoryImmediate(
     if (switch (imm) {
         .signed => |s| if (std.math.cast(i16, s)) |x| @as(u16, @bitCast(x)) else null,
         .unsigned => |u| std.math.cast(u16, u),
-        .reloc => unreachable,
+        .nav, .uav, .lazy_sym, .extern_func => unreachable,
     }) |small_imm| {
         _ = try self.addInst(.{
             .tag = tag[1],
@@ -2001,7 +1937,7 @@ fn asmRegisterMemoryImmediate(
         const payload = try self.addExtra(Mir.Imm32{ .imm = switch (imm) {
             .signed => |s| @bitCast(s),
             .unsigned => |u| @as(u32, @intCast(u)),
-            .reloc => unreachable,
+            .nav, .uav, .lazy_sym, .extern_func => unreachable,
         } });
         assert(payload + 1 == try self.addExtra(Mir.Memory.encode(m)));
         _ = try self.addInst(.{
@@ -2009,7 +1945,7 @@ fn asmRegisterMemoryImmediate(
             .ops = switch (imm) {
                 .signed => .rmi_s,
                 .unsigned => .rmi_u,
-                .reloc => unreachable,
+                .nav, .uav, .lazy_sym, .extern_func => unreachable,
             },
             .data = .{ .rx = .{
                 .fixes = tag[0],
@@ -2057,7 +1993,7 @@ fn asmMemoryImmediate(self: *CodeGen, tag: Mir.Inst.FixedTag, m: Memory, imm: Im
     const payload = try self.addExtra(Mir.Imm32{ .imm = switch (imm) {
         .signed => |s| @bitCast(s),
         .unsigned => |u| @intCast(u),
-        .reloc => unreachable,
+        .nav, .uav, .lazy_sym, .extern_func => unreachable,
     } });
     assert(payload + 1 == try self.addExtra(Mir.Memory.encode(m)));
     _ = try self.addInst(.{
@@ -2065,7 +2001,7 @@ fn asmMemoryImmediate(self: *CodeGen, tag: Mir.Inst.FixedTag, m: Memory, imm: Im
         .ops = switch (imm) {
             .signed => .mi_s,
             .unsigned => .mi_u,
-            .reloc => unreachable,
+            .nav, .uav, .lazy_sym, .extern_func => unreachable,
         },
         .data = .{ .x = .{
             .fixes = tag[0],
@@ -2347,16 +2283,18 @@ fn genMainBody(
         var air_arg_index: usize = 0;
         const fn_info = zcu.typeToFunc(cg.fn_type).?;
         var fn_param_index: usize = 0;
-        try cg.mir_local_types.ensureTotalCapacity(cg.gpa, fn_info.param_types.len);
         var zir_param_index: usize = 0;
         for (zir.getParamBody(func_zir_inst)) |zir_param_inst| {
-            const name = zir.nullTerminatedString(zir.getParamName(zir_param_inst) orelse continue);
+            const name = switch (zir.getParamName(zir_param_inst) orelse break) {
+                .empty => .none,
+                else => |zir_name| try cg.addString(zir.nullTerminatedString(zir_name)),
+            };
             defer zir_param_index += 1;
-            try cg.mir_local_name_bytes.appendSlice(cg.gpa, name[0 .. name.len + 1]);
 
             if (comptime_args.len > 0) switch (comptime_args.get(ip)[zir_param_index]) {
                 .none => {},
                 else => |comptime_arg| {
+                    try cg.mir_locals.append(cg.gpa, .{ .name = name, .type = ip.typeOf(comptime_arg) });
                     _ = try cg.addInst(.{
                         .tag = .pseudo,
                         .ops = .pseudo_dbg_arg_val,
@@ -2366,9 +2304,9 @@ fn genMainBody(
                 },
             };
 
-            const arg_ty: Type = .fromInterned(fn_info.param_types.get(ip)[fn_param_index]);
+            const arg_ty = fn_info.param_types.get(ip)[fn_param_index];
+            try cg.mir_locals.append(cg.gpa, .{ .name = name, .type = arg_ty });
             fn_param_index += 1;
-            cg.mir_local_types.appendAssumeCapacity(arg_ty.toIntern());
 
             if (air_arg_index == air_args_body.len) {
                 try cg.asmPseudo(.pseudo_dbg_arg_none);
@@ -2381,7 +2319,11 @@ fn genMainBody(
                 continue;
             }
             air_arg_index += 1;
-            try cg.genLocalDebugInfo(.arg, arg_ty, cg.getResolvedInstValue(air_arg_inst).short);
+            try cg.genLocalDebugInfo(
+                .arg,
+                .fromInterned(arg_ty),
+                cg.getResolvedInstValue(air_arg_inst).short,
+            );
         }
         if (fn_info.is_var_args) try cg.asmPseudo(.pseudo_dbg_var_args_none);
     }
@@ -3453,7 +3395,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     },
                     .call_frame = .{ .alignment = .@"16" },
                     .extra_temps = .{
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addhf3" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__addhf3" } },
                         .unused,
                         .unused,
                         .unused,
@@ -3585,7 +3527,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
                         .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addhf3" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__addhf3" } },
                         .unused,
                         .unused,
                         .unused,
@@ -3621,7 +3563,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
                         .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addhf3" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__addhf3" } },
                         .unused,
                         .unused,
                         .unused,
@@ -3658,7 +3600,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
                         .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addhf3" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__addhf3" } },
                         .{ .type = .f16, .kind = .{ .reg = .ax } },
                         .unused,
                         .unused,
@@ -3698,7 +3640,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .f32, .kind = .mem },
                         .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
                         .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addhf3" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__addhf3" } },
                         .unused,
                         .unused,
                         .unused,
@@ -4183,7 +4125,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     },
                     .call_frame = .{ .alignment = .@"16" },
                     .extra_temps = .{
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addtf3" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__addtf3" } },
                         .unused,
                         .unused,
                         .unused,
@@ -4215,7 +4157,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
                         .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addtf3" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__addtf3" } },
                         .unused,
                         .unused,
                         .unused,
@@ -4250,7 +4192,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
                         .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addtf3" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__addtf3" } },
                         .unused,
                         .unused,
                         .unused,
@@ -4285,7 +4227,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
                         .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addtf3" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__addtf3" } },
                         .unused,
                         .unused,
                         .unused,
@@ -13885,7 +13827,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     },
                     .call_frame = .{ .alignment = .@"16" },
                     .extra_temps = .{
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__subhf3" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__subhf3" } },
                         .unused,
                         .unused,
                         .unused,
@@ -14017,7 +13959,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
                         .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__subhf3" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__subhf3" } },
                         .unused,
                         .unused,
                         .unused,
@@ -14053,7 +13995,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
                         .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__subhf3" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__subhf3" } },
                         .unused,
                         .unused,
                         .unused,
@@ -14090,7 +14032,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
                         .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__subhf3" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__subhf3" } },
                         .{ .type = .f16, .kind = .{ .reg = .ax } },
                         .unused,
                         .unused,
@@ -14130,7 +14072,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .f32, .kind = .mem },
                         .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
                         .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__subhf3" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__subhf3" } },
                         .unused,
                         .unused,
                         .unused,
@@ -14632,7 +14574,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     },
                     .call_frame = .{ .alignment = .@"16" },
                     .extra_temps = .{
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__subtf3" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__subtf3" } },
                         .unused,
                         .unused,
                         .unused,
@@ -14664,7 +14606,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
                         .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__subtf3" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__subtf3" } },
                         .unused,
                         .unused,
                         .unused,
@@ -14699,7 +14641,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
                         .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__subtf3" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__subtf3" } },
                         .unused,
                         .unused,
                         .unused,
@@ -14734,7 +14676,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
                         .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__subtf3" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__subtf3" } },
                         .unused,
                         .unused,
                         .unused,
@@ -23415,7 +23357,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     },
                     .call_frame = .{ .alignment = .@"16" },
                     .extra_temps = .{
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__mulhf3" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__mulhf3" } },
                         .unused,
                         .unused,
                         .unused,
@@ -23547,7 +23489,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
                         .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__mulhf3" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__mulhf3" } },
                         .unused,
                         .unused,
                         .unused,
@@ -23583,7 +23525,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
                         .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__mulhf3" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__mulhf3" } },
                         .unused,
                         .unused,
                         .unused,
@@ -23620,7 +23562,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
                         .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__mulhf3" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__mulhf3" } },
                         .{ .type = .f16, .kind = .{ .reg = .ax } },
                         .unused,
                         .unused,
@@ -23660,7 +23602,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .f32, .kind = .mem },
                         .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
                         .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__mulhf3" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__mulhf3" } },
                         .unused,
                         .unused,
                         .unused,
@@ -24145,7 +24087,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     },
                     .call_frame = .{ .alignment = .@"16" },
                     .extra_temps = .{
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__multf3" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__multf3" } },
                         .unused,
                         .unused,
                         .unused,
@@ -24177,7 +24119,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
                         .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__multf3" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__multf3" } },
                         .unused,
                         .unused,
                         .unused,
@@ -24212,7 +24154,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
                         .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__multf3" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__multf3" } },
                         .unused,
                         .unused,
                         .unused,
@@ -24247,7 +24189,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
                         .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__multf3" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__multf3" } },
                         .unused,
                         .unused,
                         .unused,
@@ -26107,7 +26049,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     },
                     .call_frame = .{ .alignment = .@"16" },
                     .extra_temps = .{
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__mulhf3" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__mulhf3" } },
                         .unused,
                         .unused,
                         .unused,
@@ -26239,7 +26181,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
                         .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__mulhf3" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__mulhf3" } },
                         .unused,
                         .unused,
                         .unused,
@@ -26275,7 +26217,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
                         .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__mulhf3" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__mulhf3" } },
                         .unused,
                         .unused,
                         .unused,
@@ -26312,7 +26254,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
                         .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__mulhf3" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__mulhf3" } },
                         .{ .type = .f16, .kind = .{ .reg = .ax } },
                         .unused,
                         .unused,
@@ -26352,7 +26294,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .f32, .kind = .mem },
                         .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
                         .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__mulhf3" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__mulhf3" } },
                         .unused,
                         .unused,
                         .unused,
@@ -26837,7 +26779,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     },
                     .call_frame = .{ .alignment = .@"16" },
                     .extra_temps = .{
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__multf3" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__multf3" } },
                         .unused,
                         .unused,
                         .unused,
@@ -26869,7 +26811,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
                         .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__multf3" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__multf3" } },
                         .unused,
                         .unused,
                         .unused,
@@ -26904,7 +26846,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
                         .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__multf3" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__multf3" } },
                         .unused,
                         .unused,
                         .unused,
@@ -26939,7 +26881,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
                         .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__multf3" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__multf3" } },
                         .unused,
                         .unused,
                         .unused,
@@ -32247,7 +32189,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     },
                     .call_frame = .{ .alignment = .@"16" },
                     .extra_temps = .{
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divhf3" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__divhf3" } },
                         .unused,
                         .unused,
                         .unused,
@@ -32379,7 +32321,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
                         .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divhf3" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__divhf3" } },
                         .unused,
                         .unused,
                         .unused,
@@ -32415,7 +32357,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
                         .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divhf3" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__divhf3" } },
                         .unused,
                         .unused,
                         .unused,
@@ -32452,7 +32394,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
                         .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divhf3" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__divhf3" } },
                         .{ .type = .f16, .kind = .{ .reg = .ax } },
                         .unused,
                         .unused,
@@ -32492,7 +32434,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .f32, .kind = .mem },
                         .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
                         .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divhf3" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__divhf3" } },
                         .unused,
                         .unused,
                         .unused,
@@ -32995,7 +32937,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     },
                     .call_frame = .{ .alignment = .@"16" },
                     .extra_temps = .{
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divtf3" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__divtf3" } },
                         .unused,
                         .unused,
                         .unused,
@@ -33027,7 +32969,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
                         .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divtf3" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__divtf3" } },
                         .unused,
                         .unused,
                         .unused,
@@ -33062,7 +33004,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
                         .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divtf3" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__divtf3" } },
                         .unused,
                         .unused,
                         .unused,
@@ -33097,7 +33039,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
                         .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divtf3" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__divtf3" } },
                         .unused,
                         .unused,
                         .unused,
@@ -33181,8 +33123,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     },
                     .call_frame = .{ .alignment = .@"16" },
                     .extra_temps = .{
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divhf3" } } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunch" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__divhf3" } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__trunch" } },
                         .unused,
                         .unused,
                         .unused,
@@ -33323,8 +33265,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
                         .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divhf3" } } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunch" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__divhf3" } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__trunch" } },
                         .unused,
                         .unused,
                         .unused,
@@ -33360,8 +33302,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
                         .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divhf3" } } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunch" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__divhf3" } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__trunch" } },
                         .unused,
                         .unused,
                         .unused,
@@ -33398,8 +33340,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
                         .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divhf3" } } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunch" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__divhf3" } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__trunch" } },
                         .{ .type = .f16, .kind = .{ .reg = .ax } },
                         .unused,
                         .unused,
@@ -33439,8 +33381,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .f32, .kind = .mem },
                         .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
                         .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divhf3" } } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunch" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__divhf3" } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__trunch" } },
                         .unused,
                         .unused,
                         .unused,
@@ -33508,7 +33450,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     },
                     .call_frame = .{ .alignment = .@"16" },
                     .extra_temps = .{
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "truncf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "truncf" } },
                         .unused,
                         .unused,
                         .unused,
@@ -33572,7 +33514,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "truncf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "truncf" } },
                         .unused,
                         .unused,
                         .unused,
@@ -33721,7 +33663,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     },
                     .call_frame = .{ .alignment = .@"16" },
                     .extra_temps = .{
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "trunc" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "trunc" } },
                         .unused,
                         .unused,
                         .unused,
@@ -33751,8 +33693,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     },
                     .call_frame = .{ .alignment = .@"16" },
                     .extra_temps = .{
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divdf3" } } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "trunc" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__divdf3" } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "trunc" } },
                         .unused,
                         .unused,
                         .unused,
@@ -33899,7 +33841,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "trunc" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "trunc" } },
                         .unused,
                         .unused,
                         .unused,
@@ -33935,8 +33877,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
                         .{ .type = .f64, .kind = .{ .reg = .xmm1 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divdf3" } } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "trunc" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__divdf3" } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "trunc" } },
                         .unused,
                         .unused,
                         .unused,
@@ -33973,7 +33915,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .f80, .kind = .{ .reg = .st6 } },
                         .{ .type = .f80, .kind = .{ .reg = .st7 } },
                         .{ .type = .f80, .kind = .{ .frame = .call_frame } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__truncx" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__truncx" } },
                         .unused,
                         .unused,
                         .unused,
@@ -34007,7 +33949,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .f80, .kind = .{ .reg = .st6 } },
                         .{ .type = .f80, .kind = .{ .reg = .st7 } },
                         .{ .type = .f80, .kind = .{ .frame = .call_frame } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__truncx" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__truncx" } },
                         .unused,
                         .unused,
                         .unused,
@@ -34041,8 +33983,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     },
                     .call_frame = .{ .alignment = .@"16" },
                     .extra_temps = .{
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divtf3" } } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "truncq" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__divtf3" } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "truncq" } },
                         .unused,
                         .unused,
                         .unused,
@@ -34074,8 +34016,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
                         .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divtf3" } } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "truncq" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__divtf3" } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "truncq" } },
                         .unused,
                         .unused,
                         .unused,
@@ -34110,8 +34052,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
                         .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divtf3" } } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "truncq" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__divtf3" } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "truncq" } },
                         .unused,
                         .unused,
                         .unused,
@@ -34146,8 +34088,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
                         .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divtf3" } } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "truncq" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__divtf3" } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "truncq" } },
                         .unused,
                         .unused,
                         .unused,
@@ -34237,12 +34179,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         },
                         .call_frame = .{ .alignment = .@"16" },
                         .extra_temps = .{
-                            .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divhf3" } } },
-                            .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
+                            .{ .type = .usize, .kind = .{ .extern_func = "__divhf3" } },
+                            .{ .type = .usize, .kind = .{ .extern_func = switch (direction) {
                                 else => unreachable,
                                 .zero => "__trunch",
                                 .down => "__floorh",
-                            } } } },
+                            } } },
                             .unused,
                             .unused,
                             .unused,
@@ -34377,12 +34319,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                             .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                             .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
                             .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
-                            .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divhf3" } } },
-                            .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
+                            .{ .type = .usize, .kind = .{ .extern_func = "__divhf3" } },
+                            .{ .type = .usize, .kind = .{ .extern_func = switch (direction) {
                                 else => unreachable,
                                 .zero => "__trunch",
                                 .down => "__floorh",
-                            } } } },
+                            } } },
                             .unused,
                             .unused,
                             .unused,
@@ -34418,12 +34360,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                             .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                             .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
                             .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
-                            .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divhf3" } } },
-                            .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
+                            .{ .type = .usize, .kind = .{ .extern_func = "__divhf3" } },
+                            .{ .type = .usize, .kind = .{ .extern_func = switch (direction) {
                                 else => unreachable,
                                 .zero => "__trunch",
                                 .down => "__floorh",
-                            } } } },
+                            } } },
                             .unused,
                             .unused,
                             .unused,
@@ -34460,12 +34402,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                             .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                             .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
                             .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
-                            .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divhf3" } } },
-                            .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
+                            .{ .type = .usize, .kind = .{ .extern_func = "__divhf3" } },
+                            .{ .type = .usize, .kind = .{ .extern_func = switch (direction) {
                                 else => unreachable,
                                 .zero => "__trunch",
                                 .down => "__floorh",
-                            } } } },
+                            } } },
                             .{ .type = .f16, .kind = .{ .reg = .ax } },
                             .unused,
                             .unused,
@@ -34505,12 +34447,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                             .{ .type = .f32, .kind = .mem },
                             .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
                             .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
-                            .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divhf3" } } },
-                            .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
+                            .{ .type = .usize, .kind = .{ .extern_func = "__divhf3" } },
+                            .{ .type = .usize, .kind = .{ .extern_func = switch (direction) {
                                 else => unreachable,
                                 .zero => "__trunch",
                                 .down => "__floorh",
-                            } } } },
+                            } } },
                             .unused,
                             .unused,
                             .unused,
@@ -34578,11 +34520,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         },
                         .call_frame = .{ .alignment = .@"16" },
                         .extra_temps = .{
-                            .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
+                            .{ .type = .usize, .kind = .{ .extern_func = switch (direction) {
                                 else => unreachable,
                                 .zero => "truncf",
                                 .down => "floorf",
-                            } } } },
+                            } } },
                             .unused,
                             .unused,
                             .unused,
@@ -34646,11 +34588,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .extra_temps = .{
                             .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                             .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
-                            .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
+                            .{ .type = .usize, .kind = .{ .extern_func = switch (direction) {
                                 else => unreachable,
                                 .zero => "truncf",
                                 .down => "floorf",
-                            } } } },
+                            } } },
                             .unused,
                             .unused,
                             .unused,
@@ -34799,11 +34741,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         },
                         .call_frame = .{ .alignment = .@"16" },
                         .extra_temps = .{
-                            .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
+                            .{ .type = .usize, .kind = .{ .extern_func = switch (direction) {
                                 else => unreachable,
                                 .zero => "trunc",
                                 .down => "floor",
-                            } } } },
+                            } } },
                             .unused,
                             .unused,
                             .unused,
@@ -34833,12 +34775,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         },
                         .call_frame = .{ .alignment = .@"16" },
                         .extra_temps = .{
-                            .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divdf3" } } },
-                            .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
+                            .{ .type = .usize, .kind = .{ .extern_func = "__divdf3" } },
+                            .{ .type = .usize, .kind = .{ .extern_func = switch (direction) {
                                 else => unreachable,
                                 .zero => "trunc",
                                 .down => "floor",
-                            } } } },
+                            } } },
                             .unused,
                             .unused,
                             .unused,
@@ -34985,11 +34927,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .extra_temps = .{
                             .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                             .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
-                            .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
+                            .{ .type = .usize, .kind = .{ .extern_func = switch (direction) {
                                 else => unreachable,
                                 .zero => "trunc",
                                 .down => "floor",
-                            } } } },
+                            } } },
                             .unused,
                             .unused,
                             .unused,
@@ -35025,12 +34967,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                             .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                             .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
                             .{ .type = .f64, .kind = .{ .reg = .xmm1 } },
-                            .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divdf3" } } },
-                            .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
+                            .{ .type = .usize, .kind = .{ .extern_func = "__divdf3" } },
+                            .{ .type = .usize, .kind = .{ .extern_func = switch (direction) {
                                 else => unreachable,
                                 .zero => "trunc",
                                 .down => "floor",
-                            } } } },
+                            } } },
                             .unused,
                             .unused,
                             .unused,
@@ -35067,11 +35009,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                             .{ .type = .f80, .kind = .{ .reg = .st6 } },
                             .{ .type = .f80, .kind = .{ .reg = .st7 } },
                             .{ .type = .f80, .kind = .{ .frame = .call_frame } },
-                            .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
+                            .{ .type = .usize, .kind = .{ .extern_func = switch (direction) {
                                 else => unreachable,
                                 .zero => "__truncx",
                                 .down => "__floorx",
-                            } } } },
+                            } } },
                             .unused,
                             .unused,
                             .unused,
@@ -35103,11 +35045,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .extra_temps = .{
                             .{ .type = .f80, .kind = .{ .reg = .st7 } },
                             .{ .type = .f80, .kind = .{ .frame = .call_frame } },
-                            .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
+                            .{ .type = .usize, .kind = .{ .extern_func = switch (direction) {
                                 else => unreachable,
                                 .zero => "__truncx",
                                 .down => "__floorx",
-                            } } } },
+                            } } },
                             .unused,
                             .unused,
                             .unused,
@@ -35140,11 +35082,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .extra_temps = .{
                             .{ .type = .f80, .kind = .{ .reg = .st7 } },
                             .{ .type = .f80, .kind = .{ .frame = .call_frame } },
-                            .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
+                            .{ .type = .usize, .kind = .{ .extern_func = switch (direction) {
                                 else => unreachable,
                                 .zero => "__truncx",
                                 .down => "__floorx",
-                            } } } },
+                            } } },
                             .unused,
                             .unused,
                             .unused,
@@ -35178,11 +35120,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                             .{ .type = .f80, .kind = .{ .reg = .st6 } },
                             .{ .type = .f80, .kind = .{ .reg = .st7 } },
                             .{ .type = .f80, .kind = .{ .frame = .call_frame } },
-                            .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
+                            .{ .type = .usize, .kind = .{ .extern_func = switch (direction) {
                                 else => unreachable,
                                 .zero => "__truncx",
                                 .down => "__floorx",
-                            } } } },
+                            } } },
                             .unused,
                             .unused,
                             .unused,
@@ -35216,12 +35158,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         },
                         .call_frame = .{ .alignment = .@"16" },
                         .extra_temps = .{
-                            .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divtf3" } } },
-                            .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
+                            .{ .type = .usize, .kind = .{ .extern_func = "__divtf3" } },
+                            .{ .type = .usize, .kind = .{ .extern_func = switch (direction) {
                                 else => unreachable,
                                 .zero => "truncq",
                                 .down => "floorq",
-                            } } } },
+                            } } },
                             .unused,
                             .unused,
                             .unused,
@@ -35253,12 +35195,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                             .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                             .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
                             .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
-                            .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divtf3" } } },
-                            .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
+                            .{ .type = .usize, .kind = .{ .extern_func = "__divtf3" } },
+                            .{ .type = .usize, .kind = .{ .extern_func = switch (direction) {
                                 else => unreachable,
                                 .zero => "truncq",
                                 .down => "floorq",
-                            } } } },
+                            } } },
                             .unused,
                             .unused,
                             .unused,
@@ -35293,12 +35235,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                             .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                             .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
                             .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
-                            .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divtf3" } } },
-                            .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
+                            .{ .type = .usize, .kind = .{ .extern_func = "__divtf3" } },
+                            .{ .type = .usize, .kind = .{ .extern_func = switch (direction) {
                                 else => unreachable,
                                 .zero => "truncq",
                                 .down => "floorq",
-                            } } } },
+                            } } },
                             .unused,
                             .unused,
                             .unused,
@@ -35333,12 +35275,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                             .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                             .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
                             .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
-                            .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divtf3" } } },
-                            .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
+                            .{ .type = .usize, .kind = .{ .extern_func = "__divtf3" } },
+                            .{ .type = .usize, .kind = .{ .extern_func = switch (direction) {
                                 else => unreachable,
                                 .zero => "truncq",
                                 .down => "floorq",
-                            } } } },
+                            } } },
                             .unused,
                             .unused,
                             .unused,
@@ -35525,9 +35467,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .extra_temps = .{
                             .{ .type = .i128, .kind = .{ .param_gpr_pair = .{ .cc = .ccc, .at = 0 } } },
                             .{ .type = .i64, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 3 } } },
-                            .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__modti3" } } },
+                            .{ .type = .usize, .kind = .{ .extern_func = "__modti3" } },
                             .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
-                            .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divti3" } } },
+                            .{ .type = .usize, .kind = .{ .extern_func = "__divti3" } },
                             .unused,
                             .unused,
                             .unused,
@@ -35576,9 +35518,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                             .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 2 } } },
                             .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 3 } } },
                             .{ .type = .i32, .kind = .{ .rc = .general_purpose } },
-                            .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divei4" } } },
+                            .{ .type = .usize, .kind = .{ .extern_func = "__divei4" } },
                             .{ .kind = .{ .mem_of_type = .dst0 } },
-                            .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__modei4" } } },
+                            .{ .type = .usize, .kind = .{ .extern_func = "__modei4" } },
                             .unused,
                             .unused,
                             .unused,
@@ -35657,8 +35599,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     },
                     .call_frame = .{ .alignment = .@"16" },
                     .extra_temps = .{
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divhf3" } } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floorh" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__divhf3" } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__floorh" } },
                         .unused,
                         .unused,
                         .unused,
@@ -35799,8 +35741,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
                         .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divhf3" } } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floorh" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__divhf3" } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__floorh" } },
                         .unused,
                         .unused,
                         .unused,
@@ -35836,8 +35778,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
                         .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divhf3" } } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floorh" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__divhf3" } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__floorh" } },
                         .unused,
                         .unused,
                         .unused,
@@ -35874,8 +35816,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
                         .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divhf3" } } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floorh" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__divhf3" } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__floorh" } },
                         .{ .type = .f16, .kind = .{ .reg = .ax } },
                         .unused,
                         .unused,
@@ -35915,8 +35857,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .f32, .kind = .mem },
                         .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
                         .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divhf3" } } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floorh" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__divhf3" } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__floorh" } },
                         .unused,
                         .unused,
                         .unused,
@@ -35984,7 +35926,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     },
                     .call_frame = .{ .alignment = .@"16" },
                     .extra_temps = .{
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "floorf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "floorf" } },
                         .unused,
                         .unused,
                         .unused,
@@ -36048,7 +35990,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "floorf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "floorf" } },
                         .unused,
                         .unused,
                         .unused,
@@ -36197,7 +36139,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     },
                     .call_frame = .{ .alignment = .@"16" },
                     .extra_temps = .{
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "floor" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "floor" } },
                         .unused,
                         .unused,
                         .unused,
@@ -36227,8 +36169,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     },
                     .call_frame = .{ .alignment = .@"16" },
                     .extra_temps = .{
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divdf3" } } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "floor" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__divdf3" } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "floor" } },
                         .unused,
                         .unused,
                         .unused,
@@ -36375,7 +36317,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "floor" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "floor" } },
                         .unused,
                         .unused,
                         .unused,
@@ -36411,8 +36353,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
                         .{ .type = .f64, .kind = .{ .reg = .xmm1 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divdf3" } } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "floor" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__divdf3" } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "floor" } },
                         .unused,
                         .unused,
                         .unused,
@@ -36449,7 +36391,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .f80, .kind = .{ .reg = .st6 } },
                         .{ .type = .f80, .kind = .{ .reg = .st7 } },
                         .{ .type = .f80, .kind = .{ .frame = .call_frame } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floorx" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__floorx" } },
                         .unused,
                         .unused,
                         .unused,
@@ -36483,7 +36425,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .f80, .kind = .{ .reg = .st6 } },
                         .{ .type = .f80, .kind = .{ .reg = .st7 } },
                         .{ .type = .f80, .kind = .{ .frame = .call_frame } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floorx" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__floorx" } },
                         .unused,
                         .unused,
                         .unused,
@@ -36517,8 +36459,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     },
                     .call_frame = .{ .alignment = .@"16" },
                     .extra_temps = .{
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divtf3" } } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "floorq" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__divtf3" } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "floorq" } },
                         .unused,
                         .unused,
                         .unused,
@@ -36550,8 +36492,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
                         .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divtf3" } } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "floorq" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__divtf3" } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "floorq" } },
                         .unused,
                         .unused,
                         .unused,
@@ -36586,8 +36528,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
                         .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divtf3" } } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "floorq" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__divtf3" } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "floorq" } },
                         .unused,
                         .unused,
                         .unused,
@@ -36622,8 +36564,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
                         .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divtf3" } } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "floorq" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__divtf3" } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "floorq" } },
                         .unused,
                         .unused,
                         .unused,
@@ -36779,7 +36721,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     },
                     .call_frame = .{ .alignment = .@"16" },
                     .extra_temps = .{
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__modti3" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__modti3" } },
                         .unused,
                         .unused,
                         .unused,
@@ -36808,7 +36750,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     },
                     .call_frame = .{ .alignment = .@"16" },
                     .extra_temps = .{
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__umodti3" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__umodti3" } },
                         .unused,
                         .unused,
                         .unused,
@@ -36841,7 +36783,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 1 } } },
                         .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 2 } } },
                         .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 3 } } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__modei4" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__modei4" } },
                         .unused,
                         .unused,
                         .unused,
@@ -36874,7 +36816,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 1 } } },
                         .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 2 } } },
                         .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 3 } } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__umodei4" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__umodei4" } },
                         .unused,
                         .unused,
                         .unused,
@@ -37238,7 +37180,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .i64, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 1 } } },
                         .{ .type = .u64, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 2 } } },
                         .{ .type = .i64, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 3 } } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__modti3" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__modti3" } },
                         .{ .type = .u64, .kind = .{ .ret_gpr = .{ .cc = .ccc, .at = 0 } } },
                         .unused,
                         .unused,
@@ -37276,7 +37218,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .u64, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 1 } } },
                         .{ .type = .u64, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 2 } } },
                         .{ .type = .u64, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 3 } } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__umodti3" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__umodti3" } },
                         .{ .type = .u64, .kind = .{ .ret_gpr = .{ .cc = .ccc, .at = 0 } } },
                         .unused,
                         .unused,
@@ -37314,7 +37256,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 1 } } },
                         .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 2 } } },
                         .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 3 } } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__modei4" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__modei4" } },
                         .unused,
                         .unused,
                         .unused,
@@ -37350,7 +37292,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 1 } } },
                         .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 2 } } },
                         .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 3 } } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__umodei4" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__umodei4" } },
                         .unused,
                         .unused,
                         .unused,
@@ -37381,7 +37323,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     },
                     .call_frame = .{ .alignment = .@"16" },
                     .extra_temps = .{
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodh" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fmodh" } },
                         .unused,
                         .unused,
                         .unused,
@@ -37413,7 +37355,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
                         .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodh" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fmodh" } },
                         .unused,
                         .unused,
                         .unused,
@@ -37449,7 +37391,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
                         .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodh" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fmodh" } },
                         .unused,
                         .unused,
                         .unused,
@@ -37486,7 +37428,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
                         .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodh" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fmodh" } },
                         .{ .type = .f16, .kind = .{ .reg = .ax } },
                         .unused,
                         .unused,
@@ -37526,7 +37468,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .f32, .kind = .mem },
                         .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
                         .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodh" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fmodh" } },
                         .unused,
                         .unused,
                         .unused,
@@ -37562,7 +37504,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     },
                     .call_frame = .{ .alignment = .@"16" },
                     .extra_temps = .{
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmodf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "fmodf" } },
                         .unused,
                         .unused,
                         .unused,
@@ -37594,7 +37536,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
                         .{ .type = .f32, .kind = .{ .reg = .xmm1 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmodf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "fmodf" } },
                         .unused,
                         .unused,
                         .unused,
@@ -37629,7 +37571,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
                         .{ .type = .f32, .kind = .{ .reg = .xmm1 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmodf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "fmodf" } },
                         .unused,
                         .unused,
                         .unused,
@@ -37661,7 +37603,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     },
                     .call_frame = .{ .alignment = .@"16" },
                     .extra_temps = .{
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmod" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "fmod" } },
                         .unused,
                         .unused,
                         .unused,
@@ -37693,7 +37635,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
                         .{ .type = .f64, .kind = .{ .reg = .xmm1 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmod" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "fmod" } },
                         .unused,
                         .unused,
                         .unused,
@@ -37728,7 +37670,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
                         .{ .type = .f64, .kind = .{ .reg = .xmm1 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmod" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "fmod" } },
                         .unused,
                         .unused,
                         .unused,
@@ -37763,7 +37705,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
                         .{ .type = .f64, .kind = .{ .reg = .xmm1 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmod" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "fmod" } },
                         .unused,
                         .unused,
                         .unused,
@@ -37799,7 +37741,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
                         .{ .type = .f80, .kind = .{ .frame = .call_frame } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodx" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fmodx" } },
                         .unused,
                         .unused,
                         .unused,
@@ -37832,7 +37774,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
                         .{ .type = .f80, .kind = .{ .frame = .call_frame } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodx" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fmodx" } },
                         .unused,
                         .unused,
                         .unused,
@@ -37865,7 +37807,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
                         .{ .type = .f80, .kind = .{ .frame = .call_frame } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodx" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fmodx" } },
                         .unused,
                         .unused,
                         .unused,
@@ -37899,7 +37841,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
                         .{ .type = .f80, .kind = .{ .frame = .call_frame } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodx" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fmodx" } },
                         .unused,
                         .unused,
                         .unused,
@@ -37937,7 +37879,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
                         .{ .type = .f80, .kind = .{ .frame = .call_frame } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodx" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fmodx" } },
                         .unused,
                         .unused,
                         .unused,
@@ -37975,7 +37917,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
                         .{ .type = .f80, .kind = .{ .frame = .call_frame } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodx" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fmodx" } },
                         .unused,
                         .unused,
                         .unused,
@@ -38010,7 +37952,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     },
                     .call_frame = .{ .alignment = .@"16" },
                     .extra_temps = .{
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmodq" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "fmodq" } },
                         .unused,
                         .unused,
                         .unused,
@@ -38042,7 +37984,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
                         .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmodq" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "fmodq" } },
                         .unused,
                         .unused,
                         .unused,
@@ -38077,7 +38019,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
                         .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmodq" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "fmodq" } },
                         .unused,
                         .unused,
                         .unused,
@@ -38112,7 +38054,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
                         .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmodq" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "fmodq" } },
                         .unused,
                         .unused,
                         .unused,
@@ -38447,7 +38389,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .call_frame = .{ .alignment = .@"16" },
                     .extra_temps = .{
                         .{ .type = .i64, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 3 } } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__modti3" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__modti3" } },
                         .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
                         .unused,
                         .unused,
@@ -38486,7 +38428,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .call_frame = .{ .alignment = .@"16" },
                     .extra_temps = .{
                         .{ .type = .i64, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 3 } } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__modti3" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__modti3" } },
                         .unused,
                         .unused,
                         .unused,
@@ -38526,7 +38468,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     },
                     .call_frame = .{ .alignment = .@"16" },
                     .extra_temps = .{
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__umodti3" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__umodti3" } },
                         .unused,
                         .unused,
                         .unused,
@@ -38560,7 +38502,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 2 } } },
                         .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 3 } } },
                         .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__modei4" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__modei4" } },
                         .unused,
                         .unused,
                         .unused,
@@ -38617,7 +38559,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 1 } } },
                         .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 2 } } },
                         .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 3 } } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__umodei4" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__umodei4" } },
                         .unused,
                         .unused,
                         .unused,
@@ -38647,7 +38589,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .call_frame = .{ .alignment = .@"16" },
                     .extra_temps = .{
                         .{ .type = .f16, .kind = .{ .rc = .general_purpose } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodh" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fmodh" } },
                         .{ .type = .f16, .kind = .{ .reg = .dx } },
                         .{ .type = .f16, .kind = .{ .reg = .ax } },
                         .unused,
@@ -38688,7 +38630,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .call_frame = .{ .alignment = .@"16" },
                     .extra_temps = .{
                         .{ .type = .f16, .kind = .{ .rc = .general_purpose } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodh" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fmodh" } },
                         .{ .type = .f16, .kind = .{ .reg = .dx } },
                         .{ .type = .f16, .kind = .{ .reg = .ax } },
                         .unused,
@@ -38729,10 +38671,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .call_frame = .{ .alignment = .@"16" },
                     .extra_temps = .{
                         .{ .type = .f16, .kind = .{ .rc = .general_purpose } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodh" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fmodh" } },
                         .{ .type = .f16, .kind = .{ .reg = .dx } },
                         .{ .type = .f16, .kind = .{ .reg = .ax } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addhf3" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__addhf3" } },
                         .unused,
                         .unused,
                         .unused,
@@ -38767,10 +38709,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .call_frame = .{ .alignment = .@"16" },
                     .extra_temps = .{
                         .{ .type = .f16, .kind = .{ .rc = .general_purpose } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodh" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fmodh" } },
                         .{ .type = .f16, .kind = .{ .reg = .dx } },
                         .{ .type = .f16, .kind = .{ .reg = .ax } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addhf3" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__addhf3" } },
                         .unused,
                         .unused,
                         .unused,
@@ -38805,10 +38747,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .call_frame = .{ .alignment = .@"16" },
                     .extra_temps = .{
                         .{ .type = .f16, .kind = .{ .rc = .general_purpose } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodh" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fmodh" } },
                         .{ .type = .f16, .kind = .{ .reg = .dx } },
                         .{ .type = .f16, .kind = .{ .reg = .ax } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addhf3" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__addhf3" } },
                         .unused,
                         .unused,
                         .unused,
@@ -38843,10 +38785,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .call_frame = .{ .alignment = .@"16" },
                     .extra_temps = .{
                         .{ .type = .f16, .kind = .{ .rc = .general_purpose } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodh" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fmodh" } },
                         .{ .type = .f16, .kind = .{ .reg = .dx } },
                         .{ .type = .f16, .kind = .{ .reg = .ax } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addhf3" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__addhf3" } },
                         .unused,
                         .unused,
                         .unused,
@@ -38881,10 +38823,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .call_frame = .{ .alignment = .@"16" },
                     .extra_temps = .{
                         .{ .type = .f32, .kind = .mem },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodh" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fmodh" } },
                         .{ .type = .f32, .kind = .mem },
                         .{ .type = .f16, .kind = .{ .reg = .ax } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addhf3" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__addhf3" } },
                         .unused,
                         .unused,
                         .unused,
@@ -38919,10 +38861,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .call_frame = .{ .alignment = .@"16" },
                     .extra_temps = .{
                         .{ .type = .f32, .kind = .mem },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodh" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fmodh" } },
                         .{ .type = .f32, .kind = .mem },
                         .{ .type = .f16, .kind = .{ .reg = .ax } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addhf3" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__addhf3" } },
                         .unused,
                         .unused,
                         .unused,
@@ -38960,7 +38902,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
                         .{ .type = .f16, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodh" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fmodh" } },
                         .{ .type = .f16, .kind = .{ .reg = .dx } },
                         .{ .type = .f16, .kind = .{ .reg = .ax } },
                         .unused,
@@ -39008,7 +38950,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
                         .{ .type = .f16, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodh" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fmodh" } },
                         .{ .type = .f16, .kind = .{ .reg = .dx } },
                         .{ .type = .f16, .kind = .{ .reg = .ax } },
                         .unused,
@@ -39056,10 +38998,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
                         .{ .type = .f16, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodh" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fmodh" } },
                         .{ .type = .f16, .kind = .{ .reg = .dx } },
                         .{ .type = .f16, .kind = .{ .reg = .ax } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addhf3" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__addhf3" } },
                         .unused,
                         .unused,
                         .unused,
@@ -39101,10 +39043,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
                         .{ .type = .f16, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodh" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fmodh" } },
                         .{ .type = .f16, .kind = .{ .reg = .dx } },
                         .{ .type = .f16, .kind = .{ .reg = .ax } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addhf3" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__addhf3" } },
                         .unused,
                         .unused,
                         .unused,
@@ -39146,10 +39088,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
                         .{ .type = .f16, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodh" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fmodh" } },
                         .{ .type = .f16, .kind = .{ .reg = .dx } },
                         .{ .type = .f16, .kind = .{ .reg = .ax } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addhf3" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__addhf3" } },
                         .unused,
                         .unused,
                         .unused,
@@ -39191,10 +39133,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
                         .{ .type = .f16, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodh" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fmodh" } },
                         .{ .type = .f16, .kind = .{ .reg = .dx } },
                         .{ .type = .f16, .kind = .{ .reg = .ax } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addhf3" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__addhf3" } },
                         .unused,
                         .unused,
                         .unused,
@@ -39236,10 +39178,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
                         .{ .type = .f16, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodh" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fmodh" } },
                         .{ .type = .f16, .kind = .{ .reg = .dx } },
                         .{ .type = .f16, .kind = .{ .reg = .ax } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addhf3" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__addhf3" } },
                         .unused,
                         .unused,
                         .unused,
@@ -39282,10 +39224,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
                         .{ .type = .f16, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodh" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fmodh" } },
                         .{ .type = .f16, .kind = .{ .reg = .dx } },
                         .{ .type = .f16, .kind = .{ .reg = .ax } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addhf3" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__addhf3" } },
                         .unused,
                         .unused,
                         .unused,
@@ -39329,9 +39271,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .f32, .kind = .mem },
                         .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
                         .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodh" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fmodh" } },
                         .{ .type = .f32, .kind = .mem },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addhf3" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__addhf3" } },
                         .unused,
                         .unused,
                         .unused,
@@ -39378,9 +39320,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .f32, .kind = .mem },
                         .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
                         .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodh" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fmodh" } },
                         .{ .type = .f32, .kind = .mem },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addhf3" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__addhf3" } },
                         .unused,
                         .unused,
                         .unused,
@@ -39423,7 +39365,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .call_frame = .{ .alignment = .@"16" },
                     .extra_temps = .{
                         .{ .type = .f32, .kind = .{ .rc = .general_purpose } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmodf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "fmodf" } },
                         .{ .type = .f32, .kind = .{ .reg = .edx } },
                         .{ .type = .f32, .kind = .{ .reg = .eax } },
                         .unused,
@@ -39461,7 +39403,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .call_frame = .{ .alignment = .@"16" },
                     .extra_temps = .{
                         .{ .type = .f32, .kind = .{ .rc = .general_purpose } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmodf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "fmodf" } },
                         .{ .type = .f32, .kind = .{ .reg = .edx } },
                         .{ .type = .f32, .kind = .{ .reg = .eax } },
                         .unused,
@@ -39499,7 +39441,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .call_frame = .{ .alignment = .@"16" },
                     .extra_temps = .{
                         .{ .type = .f32, .kind = .mem },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmodf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "fmodf" } },
                         .{ .type = .f32, .kind = .mem },
                         .{ .type = .f32, .kind = .{ .reg = .eax } },
                         .unused,
@@ -39539,7 +39481,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
                         .{ .type = .f32, .kind = .{ .reg = .xmm1 } },
                         .{ .type = .f32, .kind = .{ .rc = .general_purpose } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmodf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "fmodf" } },
                         .{ .type = .f32, .kind = .{ .reg = .edx } },
                         .{ .type = .f32, .kind = .{ .reg = .eax } },
                         .unused,
@@ -39583,7 +39525,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
                         .{ .type = .f32, .kind = .{ .reg = .xmm1 } },
                         .{ .type = .f32, .kind = .{ .rc = .general_purpose } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmodf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "fmodf" } },
                         .{ .type = .f32, .kind = .{ .reg = .edx } },
                         .{ .type = .f32, .kind = .{ .reg = .eax } },
                         .unused,
@@ -39626,7 +39568,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
                         .{ .type = .f32, .kind = .{ .reg = .xmm1 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmodf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "fmodf" } },
                         .{ .type = .f32, .kind = .mem },
                         .{ .type = .f32, .kind = .{ .reg = .eax } },
                         .unused,
@@ -39666,7 +39608,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .call_frame = .{ .alignment = .@"16" },
                     .extra_temps = .{
                         .{ .type = .f64, .kind = .{ .rc = .general_purpose } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmod" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "fmod" } },
                         .{ .type = .f64, .kind = .{ .reg = .rcx } },
                         .{ .type = .f64, .kind = .{ .reg = .rdx } },
                         .{ .type = .f64, .kind = .{ .reg = .rax } },
@@ -39705,7 +39647,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .call_frame = .{ .alignment = .@"16" },
                     .extra_temps = .{
                         .{ .type = .f64, .kind = .{ .rc = .general_purpose } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmod" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "fmod" } },
                         .{ .type = .f64, .kind = .{ .reg = .rcx } },
                         .{ .type = .f64, .kind = .{ .reg = .rdx } },
                         .{ .type = .f64, .kind = .{ .reg = .rax } },
@@ -39744,7 +39686,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .call_frame = .{ .alignment = .@"16" },
                     .extra_temps = .{
                         .{ .type = .f64, .kind = .mem },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmod" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "fmod" } },
                         .{ .type = .f64, .kind = .mem },
                         .{ .type = .f64, .kind = .{ .reg = .rdx } },
                         .{ .type = .f64, .kind = .{ .reg = .rax } },
@@ -39789,7 +39731,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
                         .{ .type = .f64, .kind = .{ .reg = .xmm1 } },
                         .{ .type = .f64, .kind = .{ .rc = .general_purpose } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmod" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "fmod" } },
                         .{ .type = .f64, .kind = .{ .reg = .rcx } },
                         .{ .type = .f64, .kind = .{ .reg = .rdx } },
                         .{ .type = .f64, .kind = .{ .reg = .rax } },
@@ -39834,7 +39776,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
                         .{ .type = .f64, .kind = .{ .reg = .xmm1 } },
                         .{ .type = .f64, .kind = .{ .rc = .general_purpose } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmod" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "fmod" } },
                         .{ .type = .f64, .kind = .{ .reg = .rcx } },
                         .{ .type = .f64, .kind = .{ .reg = .rdx } },
                         .{ .type = .f64, .kind = .{ .reg = .rax } },
@@ -39878,7 +39820,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
                         .{ .type = .f64, .kind = .{ .reg = .xmm1 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmod" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "fmod" } },
                         .{ .type = .f64, .kind = .{ .reg = .rdx } },
                         .{ .type = .f64, .kind = .mem },
                         .{ .type = .f64, .kind = .{ .reg = .rax } },
@@ -39926,7 +39868,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
                         .{ .type = .f80, .kind = .{ .frame = .call_frame } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodx" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fmodx" } },
                         .{ .type = .f80, .kind = .{ .reg = .st7 } },
                         .{ .type = .f80, .kind = .{ .reg = .rax } },
                         .unused,
@@ -39969,7 +39911,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
                         .{ .type = .f80, .kind = .{ .frame = .call_frame } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodx" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fmodx" } },
                         .{ .type = .f80, .kind = .{ .reg = .st7 } },
                         .{ .type = .f80, .kind = .{ .reg = .rax } },
                         .unused,
@@ -40012,7 +39954,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
                         .{ .type = .f80, .kind = .{ .frame = .call_frame } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodx" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fmodx" } },
                         .{ .type = .f80, .kind = .{ .reg = .st7 } },
                         .{ .type = .f80, .kind = .{ .reg = .rax } },
                         .unused,
@@ -40055,7 +39997,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
                         .{ .type = .f80, .kind = .{ .frame = .call_frame } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodx" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fmodx" } },
                         .{ .type = .f80, .kind = .{ .reg = .st7 } },
                         .{ .type = .f80, .kind = .{ .reg = .rax } },
                         .unused,
@@ -40098,7 +40040,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
                         .{ .type = .f80, .kind = .{ .frame = .call_frame } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodx" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fmodx" } },
                         .{ .type = .f80, .kind = .{ .reg = .st7 } },
                         .{ .type = .f80, .kind = .{ .reg = .rax } },
                         .unused,
@@ -40141,7 +40083,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
                         .{ .type = .f80, .kind = .{ .frame = .call_frame } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodx" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fmodx" } },
                         .{ .type = .f80, .kind = .{ .reg = .st7 } },
                         .{ .type = .f80, .kind = .{ .reg = .rax } },
                         .unused,
@@ -40185,7 +40127,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
                         .{ .type = .f80, .kind = .{ .frame = .call_frame } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodx" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fmodx" } },
                         .{ .type = .f80, .kind = .{ .reg = .st7 } },
                         .{ .type = .f80, .kind = .{ .reg = .rax } },
                         .unused,
@@ -40233,7 +40175,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
                         .{ .type = .f80, .kind = .{ .frame = .call_frame } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodx" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fmodx" } },
                         .{ .type = .f80, .kind = .{ .reg = .st7 } },
                         .{ .type = .f80, .kind = .{ .reg = .rax } },
                         .unused,
@@ -40281,7 +40223,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
                         .{ .type = .f80, .kind = .{ .frame = .call_frame } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodx" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fmodx" } },
                         .{ .type = .f80, .kind = .{ .reg = .st7 } },
                         .{ .type = .f80, .kind = .{ .reg = .rax } },
                         .unused,
@@ -40329,7 +40271,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
                         .{ .type = .f80, .kind = .{ .frame = .call_frame } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodx" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fmodx" } },
                         .{ .type = .f80, .kind = .{ .reg = .st7 } },
                         .{ .type = .f80, .kind = .{ .reg = .rax } },
                         .unused,
@@ -40377,7 +40319,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
                         .{ .type = .f80, .kind = .{ .frame = .call_frame } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodx" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fmodx" } },
                         .{ .type = .f80, .kind = .{ .reg = .st7 } },
                         .{ .type = .f80, .kind = .{ .reg = .rax } },
                         .unused,
@@ -40425,7 +40367,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
                         .{ .type = .f80, .kind = .{ .frame = .call_frame } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmodx" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fmodx" } },
                         .{ .type = .f80, .kind = .{ .reg = .st7 } },
                         .{ .type = .f80, .kind = .{ .reg = .rax } },
                         .unused,
@@ -40471,11 +40413,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .call_frame = .{ .alignment = .@"16" },
                     .extra_temps = .{
                         .{ .type = .f128, .kind = .mem },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmodq" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "fmodq" } },
                         .{ .type = .f128, .kind = .{ .reg = .rcx } },
                         .{ .type = .f128, .kind = .{ .reg = .rdx } },
                         .{ .type = .f128, .kind = .{ .reg = .rax } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addtf3" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__addtf3" } },
                         .unused,
                         .unused,
                         .unused,
@@ -40512,11 +40454,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .call_frame = .{ .alignment = .@"16" },
                     .extra_temps = .{
                         .{ .type = .f128, .kind = .mem },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmodq" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "fmodq" } },
                         .{ .type = .f128, .kind = .{ .reg = .rcx } },
                         .{ .type = .f128, .kind = .{ .reg = .rdx } },
                         .{ .type = .f128, .kind = .{ .reg = .rax } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addtf3" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__addtf3" } },
                         .unused,
                         .unused,
                         .unused,
@@ -40553,11 +40495,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .call_frame = .{ .alignment = .@"16" },
                     .extra_temps = .{
                         .{ .type = .f128, .kind = .mem },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmodq" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "fmodq" } },
                         .{ .type = .f128, .kind = .{ .reg = .rcx } },
                         .{ .type = .f128, .kind = .{ .reg = .rdx } },
                         .{ .type = .f128, .kind = .{ .reg = .rax } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addtf3" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__addtf3" } },
                         .unused,
                         .unused,
                         .unused,
@@ -40595,11 +40537,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .call_frame = .{ .alignment = .@"16" },
                     .extra_temps = .{
                         .{ .type = .f128, .kind = .mem },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmodq" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "fmodq" } },
                         .{ .type = .f128, .kind = .{ .reg = .rdx } },
                         .{ .type = .f128, .kind = .mem },
                         .{ .type = .f128, .kind = .{ .reg = .rax } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addtf3" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__addtf3" } },
                         .unused,
                         .unused,
                         .unused,
@@ -40637,11 +40579,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
                         .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmodq" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "fmodq" } },
                         .{ .type = .f128, .kind = .{ .reg = .rcx } },
                         .{ .type = .f128, .kind = .{ .reg = .rdx } },
                         .{ .type = .f128, .kind = .{ .reg = .rax } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addtf3" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__addtf3" } },
                         .unused,
                         .unused,
                         .unused,
@@ -40683,11 +40625,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
                         .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmodq" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "fmodq" } },
                         .{ .type = .f128, .kind = .{ .reg = .rcx } },
                         .{ .type = .f128, .kind = .{ .reg = .rdx } },
                         .{ .type = .f128, .kind = .{ .reg = .rax } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addtf3" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__addtf3" } },
                         .unused,
                         .unused,
                         .unused,
@@ -40729,11 +40671,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
                         .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmodq" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "fmodq" } },
                         .{ .type = .f128, .kind = .{ .reg = .rcx } },
                         .{ .type = .f128, .kind = .{ .reg = .rdx } },
                         .{ .type = .f128, .kind = .{ .reg = .rax } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addtf3" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__addtf3" } },
                         .unused,
                         .unused,
                         .unused,
@@ -40776,11 +40718,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
                         .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmodq" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "fmodq" } },
                         .{ .type = .f128, .kind = .{ .reg = .rdx } },
                         .{ .type = .f128, .kind = .mem },
                         .{ .type = .f128, .kind = .{ .reg = .rax } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addtf3" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__addtf3" } },
                         .unused,
                         .unused,
                         .unused,
@@ -43870,7 +43812,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     },
                     .call_frame = .{ .alignment = .@"16" },
                     .extra_temps = .{
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmaxh" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fmaxh" } },
                         .unused,
                         .unused,
                         .unused,
@@ -44008,7 +43950,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
                         .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmaxh" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fmaxh" } },
                         .unused,
                         .unused,
                         .unused,
@@ -44044,7 +43986,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
                         .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmaxh" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fmaxh" } },
                         .unused,
                         .unused,
                         .unused,
@@ -44081,7 +44023,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
                         .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmaxh" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fmaxh" } },
                         .{ .type = .f16, .kind = .{ .reg = .ax } },
                         .unused,
                         .unused,
@@ -44121,7 +44063,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .f32, .kind = .mem },
                         .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
                         .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmaxh" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fmaxh" } },
                         .unused,
                         .unused,
                         .unused,
@@ -44536,7 +44478,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     },
                     .call_frame = .{ .alignment = .@"16" },
                     .extra_temps = .{
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmax" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "fmax" } },
                         .unused,
                         .unused,
                         .unused,
@@ -44791,7 +44733,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
                         .{ .type = .f64, .kind = .{ .reg = .xmm1 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmax" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "fmax" } },
                         .unused,
                         .unused,
                         .unused,
@@ -45080,7 +45022,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     },
                     .call_frame = .{ .alignment = .@"16" },
                     .extra_temps = .{
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmaxq" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "fmaxq" } },
                         .unused,
                         .unused,
                         .unused,
@@ -45112,7 +45054,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
                         .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmaxq" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "fmaxq" } },
                         .unused,
                         .unused,
                         .unused,
@@ -45147,7 +45089,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
                         .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmaxq" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "fmaxq" } },
                         .unused,
                         .unused,
                         .unused,
@@ -45182,7 +45124,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
                         .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmaxq" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "fmaxq" } },
                         .unused,
                         .unused,
                         .unused,
@@ -48029,7 +47971,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     },
                     .call_frame = .{ .alignment = .@"16" },
                     .extra_temps = .{
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fminh" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fminh" } },
                         .unused,
                         .unused,
                         .unused,
@@ -48167,7 +48109,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
                         .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fminh" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fminh" } },
                         .unused,
                         .unused,
                         .unused,
@@ -48203,7 +48145,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
                         .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fminh" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fminh" } },
                         .unused,
                         .unused,
                         .unused,
@@ -48240,7 +48182,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
                         .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fminh" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fminh" } },
                         .{ .type = .f16, .kind = .{ .reg = .ax } },
                         .unused,
                         .unused,
@@ -48280,7 +48222,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .f32, .kind = .mem },
                         .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
                         .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fminh" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fminh" } },
                         .unused,
                         .unused,
                         .unused,
@@ -48695,7 +48637,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     },
                     .call_frame = .{ .alignment = .@"16" },
                     .extra_temps = .{
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmin" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "fmin" } },
                         .unused,
                         .unused,
                         .unused,
@@ -48950,7 +48892,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
                         .{ .type = .f64, .kind = .{ .reg = .xmm1 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmin" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "fmin" } },
                         .unused,
                         .unused,
                         .unused,
@@ -49227,7 +49169,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     },
                     .call_frame = .{ .alignment = .@"16" },
                     .extra_temps = .{
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fminq" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "fminq" } },
                         .unused,
                         .unused,
                         .unused,
@@ -49259,7 +49201,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
                         .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fminq" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "fminq" } },
                         .unused,
                         .unused,
                         .unused,
@@ -49294,7 +49236,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
                         .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fminq" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "fminq" } },
                         .unused,
                         .unused,
                         .unused,
@@ -49329,7 +49271,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
                         .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fminq" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "fminq" } },
                         .unused,
                         .unused,
                         .unused,
@@ -72269,7 +72211,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     },
                     .call_frame = .{ .alignment = .@"16" },
                     .extra_temps = .{
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__sqrth" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__sqrth" } },
                         .unused,
                         .unused,
                         .unused,
@@ -72351,7 +72293,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__sqrth" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__sqrth" } },
                         .unused,
                         .unused,
                         .unused,
@@ -72382,7 +72324,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__sqrth" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__sqrth" } },
                         .unused,
                         .unused,
                         .unused,
@@ -72413,7 +72355,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__sqrth" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__sqrth" } },
                         .{ .type = .f16, .kind = .{ .reg = .ax } },
                         .unused,
                         .unused,
@@ -72447,7 +72389,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .f16, .kind = .{ .reg = .ax } },
                         .{ .type = .f32, .kind = .mem },
                         .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__sqrth" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__sqrth" } },
                         .unused,
                         .unused,
                         .unused,
@@ -72519,7 +72461,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     },
                     .call_frame = .{ .alignment = .@"16" },
                     .extra_temps = .{
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "sqrtf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "sqrtf" } },
                         .unused,
                         .unused,
                         .unused,
@@ -72635,7 +72577,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "sqrtf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "sqrtf" } },
                         .unused,
                         .unused,
                         .unused,
@@ -72665,7 +72607,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "sqrtf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "sqrtf" } },
                         .unused,
                         .unused,
                         .unused,
@@ -72735,7 +72677,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     },
                     .call_frame = .{ .alignment = .@"16" },
                     .extra_temps = .{
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "sqrt" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "sqrt" } },
                         .unused,
                         .unused,
                         .unused,
@@ -72851,7 +72793,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "sqrt" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "sqrt" } },
                         .unused,
                         .unused,
                         .unused,
@@ -72881,7 +72823,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "sqrt" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "sqrt" } },
                         .unused,
                         .unused,
                         .unused,
@@ -72911,7 +72853,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "sqrt" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "sqrt" } },
                         .unused,
                         .unused,
                         .unused,
@@ -72995,7 +72937,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     },
                     .call_frame = .{ .alignment = .@"16" },
                     .extra_temps = .{
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "sqrtq" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "sqrtq" } },
                         .unused,
                         .unused,
                         .unused,
@@ -73022,7 +72964,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "sqrtq" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "sqrtq" } },
                         .unused,
                         .unused,
                         .unused,
@@ -73052,7 +72994,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "sqrtq" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "sqrtq" } },
                         .unused,
                         .unused,
                         .unused,
@@ -73082,7 +73024,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "sqrtq" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "sqrtq" } },
                         .unused,
                         .unused,
                         .unused,
@@ -73126,7 +73068,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         },
                         .call_frame = .{ .alignment = .@"16" },
                         .extra_temps = .{
-                            .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__" ++ @tagName(name) ++ "h" } } },
+                            .{ .type = .usize, .kind = .{ .extern_func = "__" ++ @tagName(name) ++ "h" } },
                             .unused,
                             .unused,
                             .unused,
@@ -73153,7 +73095,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .extra_temps = .{
                             .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                             .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
-                            .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__" ++ @tagName(name) ++ "h" } } },
+                            .{ .type = .usize, .kind = .{ .extern_func = "__" ++ @tagName(name) ++ "h" } },
                             .unused,
                             .unused,
                             .unused,
@@ -73184,7 +73126,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .extra_temps = .{
                             .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                             .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
-                            .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__" ++ @tagName(name) ++ "h" } } },
+                            .{ .type = .usize, .kind = .{ .extern_func = "__" ++ @tagName(name) ++ "h" } },
                             .unused,
                             .unused,
                             .unused,
@@ -73215,7 +73157,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .extra_temps = .{
                             .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                             .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
-                            .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__" ++ @tagName(name) ++ "h" } } },
+                            .{ .type = .usize, .kind = .{ .extern_func = "__" ++ @tagName(name) ++ "h" } },
                             .{ .type = .f16, .kind = .{ .reg = .ax } },
                             .unused,
                             .unused,
@@ -73249,7 +73191,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                             .{ .type = .f16, .kind = .{ .reg = .ax } },
                             .{ .type = .f32, .kind = .mem },
                             .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
-                            .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__" ++ @tagName(name) ++ "h" } } },
+                            .{ .type = .usize, .kind = .{ .extern_func = "__" ++ @tagName(name) ++ "h" } },
                             .unused,
                             .unused,
                             .unused,
@@ -73279,7 +73221,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         },
                         .call_frame = .{ .alignment = .@"16" },
                         .extra_temps = .{
-                            .{ .type = .usize, .kind = .{ .symbol = &.{ .name = @tagName(name) ++ "f" } } },
+                            .{ .type = .usize, .kind = .{ .extern_func = @tagName(name) ++ "f" } },
                             .unused,
                             .unused,
                             .unused,
@@ -73306,7 +73248,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .extra_temps = .{
                             .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                             .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
-                            .{ .type = .usize, .kind = .{ .symbol = &.{ .name = @tagName(name) ++ "f" } } },
+                            .{ .type = .usize, .kind = .{ .extern_func = @tagName(name) ++ "f" } },
                             .unused,
                             .unused,
                             .unused,
@@ -73336,7 +73278,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .extra_temps = .{
                             .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                             .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
-                            .{ .type = .usize, .kind = .{ .symbol = &.{ .name = @tagName(name) ++ "f" } } },
+                            .{ .type = .usize, .kind = .{ .extern_func = @tagName(name) ++ "f" } },
                             .unused,
                             .unused,
                             .unused,
@@ -73364,7 +73306,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         },
                         .call_frame = .{ .alignment = .@"16" },
                         .extra_temps = .{
-                            .{ .type = .usize, .kind = .{ .symbol = &.{ .name = @tagName(name) } } },
+                            .{ .type = .usize, .kind = .{ .extern_func = @tagName(name) } },
                             .unused,
                             .unused,
                             .unused,
@@ -73391,7 +73333,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .extra_temps = .{
                             .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                             .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
-                            .{ .type = .usize, .kind = .{ .symbol = &.{ .name = @tagName(name) } } },
+                            .{ .type = .usize, .kind = .{ .extern_func = @tagName(name) } },
                             .unused,
                             .unused,
                             .unused,
@@ -73421,7 +73363,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .extra_temps = .{
                             .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                             .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
-                            .{ .type = .usize, .kind = .{ .symbol = &.{ .name = @tagName(name) } } },
+                            .{ .type = .usize, .kind = .{ .extern_func = @tagName(name) } },
                             .unused,
                             .unused,
                             .unused,
@@ -73451,7 +73393,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .extra_temps = .{
                             .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                             .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
-                            .{ .type = .usize, .kind = .{ .symbol = &.{ .name = @tagName(name) } } },
+                            .{ .type = .usize, .kind = .{ .extern_func = @tagName(name) } },
                             .unused,
                             .unused,
                             .unused,
@@ -73482,7 +73424,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .extra_temps = .{
                             .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
                             .{ .type = .f80, .kind = .{ .frame = .call_frame } },
-                            .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__" ++ @tagName(name) ++ "x" } } },
+                            .{ .type = .usize, .kind = .{ .extern_func = "__" ++ @tagName(name) ++ "x" } },
                             .unused,
                             .unused,
                             .unused,
@@ -73509,7 +73451,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .extra_temps = .{
                             .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
                             .{ .type = .f80, .kind = .{ .frame = .call_frame } },
-                            .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__" ++ @tagName(name) ++ "x" } } },
+                            .{ .type = .usize, .kind = .{ .extern_func = "__" ++ @tagName(name) ++ "x" } },
                             .unused,
                             .unused,
                             .unused,
@@ -73536,7 +73478,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .extra_temps = .{
                             .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
                             .{ .type = .f80, .kind = .{ .frame = .call_frame } },
-                            .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__" ++ @tagName(name) ++ "x" } } },
+                            .{ .type = .usize, .kind = .{ .extern_func = "__" ++ @tagName(name) ++ "x" } },
                             .unused,
                             .unused,
                             .unused,
@@ -73564,7 +73506,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                             .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                             .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
                             .{ .type = .f80, .kind = .{ .frame = .call_frame } },
-                            .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__" ++ @tagName(name) ++ "x" } } },
+                            .{ .type = .usize, .kind = .{ .extern_func = "__" ++ @tagName(name) ++ "x" } },
                             .unused,
                             .unused,
                             .unused,
@@ -73596,7 +73538,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                             .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                             .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
                             .{ .type = .f80, .kind = .{ .frame = .call_frame } },
-                            .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__" ++ @tagName(name) ++ "x" } } },
+                            .{ .type = .usize, .kind = .{ .extern_func = "__" ++ @tagName(name) ++ "x" } },
                             .unused,
                             .unused,
                             .unused,
@@ -73628,7 +73570,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                             .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                             .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
                             .{ .type = .f80, .kind = .{ .frame = .call_frame } },
-                            .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__" ++ @tagName(name) ++ "x" } } },
+                            .{ .type = .usize, .kind = .{ .extern_func = "__" ++ @tagName(name) ++ "x" } },
                             .unused,
                             .unused,
                             .unused,
@@ -73657,7 +73599,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         },
                         .call_frame = .{ .alignment = .@"16" },
                         .extra_temps = .{
-                            .{ .type = .usize, .kind = .{ .symbol = &.{ .name = @tagName(name) ++ "q" } } },
+                            .{ .type = .usize, .kind = .{ .extern_func = @tagName(name) ++ "q" } },
                             .unused,
                             .unused,
                             .unused,
@@ -73684,7 +73626,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .extra_temps = .{
                             .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                             .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
-                            .{ .type = .usize, .kind = .{ .symbol = &.{ .name = @tagName(name) ++ "q" } } },
+                            .{ .type = .usize, .kind = .{ .extern_func = @tagName(name) ++ "q" } },
                             .unused,
                             .unused,
                             .unused,
@@ -73714,7 +73656,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .extra_temps = .{
                             .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                             .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
-                            .{ .type = .usize, .kind = .{ .symbol = &.{ .name = @tagName(name) ++ "q" } } },
+                            .{ .type = .usize, .kind = .{ .extern_func = @tagName(name) ++ "q" } },
                             .unused,
                             .unused,
                             .unused,
@@ -73744,7 +73686,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .extra_temps = .{
                             .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                             .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
-                            .{ .type = .usize, .kind = .{ .symbol = &.{ .name = @tagName(name) ++ "q" } } },
+                            .{ .type = .usize, .kind = .{ .extern_func = @tagName(name) ++ "q" } },
                             .unused,
                             .unused,
                             .unused,
@@ -75362,12 +75304,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         },
                         .call_frame = .{ .alignment = .@"16" },
                         .extra_temps = .{
-                            .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
+                            .{ .type = .usize, .kind = .{ .extern_func = switch (direction) {
                                 else => unreachable,
                                 .down => "__floorh",
                                 .up => "__ceilh",
                                 .zero => "__trunch",
-                            } } } },
+                            } } },
                             .unused,
                             .unused,
                             .unused,
@@ -75449,12 +75391,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .extra_temps = .{
                             .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                             .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
-                            .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
+                            .{ .type = .usize, .kind = .{ .extern_func = switch (direction) {
                                 else => unreachable,
                                 .down => "__floorh",
                                 .up => "__ceilh",
                                 .zero => "__trunch",
-                            } } } },
+                            } } },
                             .unused,
                             .unused,
                             .unused,
@@ -75485,12 +75427,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .extra_temps = .{
                             .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                             .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
-                            .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
+                            .{ .type = .usize, .kind = .{ .extern_func = switch (direction) {
                                 else => unreachable,
                                 .down => "__floorh",
                                 .up => "__ceilh",
                                 .zero => "__trunch",
-                            } } } },
+                            } } },
                             .unused,
                             .unused,
                             .unused,
@@ -75521,12 +75463,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .extra_temps = .{
                             .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                             .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
-                            .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
+                            .{ .type = .usize, .kind = .{ .extern_func = switch (direction) {
                                 else => unreachable,
                                 .down => "__floorh",
                                 .up => "__ceilh",
                                 .zero => "__trunch",
-                            } } } },
+                            } } },
                             .{ .type = .f16, .kind = .{ .reg = .ax } },
                             .unused,
                             .unused,
@@ -75560,12 +75502,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                             .{ .type = .f16, .kind = .{ .reg = .ax } },
                             .{ .type = .f32, .kind = .mem },
                             .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
-                            .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
+                            .{ .type = .usize, .kind = .{ .extern_func = switch (direction) {
                                 else => unreachable,
                                 .down => "__floorh",
                                 .up => "__ceilh",
                                 .zero => "__trunch",
-                            } } } },
+                            } } },
                             .unused,
                             .unused,
                             .unused,
@@ -75637,12 +75579,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         },
                         .call_frame = .{ .alignment = .@"16" },
                         .extra_temps = .{
-                            .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
+                            .{ .type = .usize, .kind = .{ .extern_func = switch (direction) {
                                 else => unreachable,
                                 .down => "floorf",
                                 .up => "ceilf",
                                 .zero => "truncf",
-                            } } } },
+                            } } },
                             .unused,
                             .unused,
                             .unused,
@@ -75764,12 +75706,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .extra_temps = .{
                             .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                             .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
-                            .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
+                            .{ .type = .usize, .kind = .{ .extern_func = switch (direction) {
                                 else => unreachable,
                                 .down => "floorf",
                                 .up => "ceilf",
                                 .zero => "truncf",
-                            } } } },
+                            } } },
                             .unused,
                             .unused,
                             .unused,
@@ -75799,12 +75741,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .extra_temps = .{
                             .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                             .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
-                            .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
+                            .{ .type = .usize, .kind = .{ .extern_func = switch (direction) {
                                 else => unreachable,
                                 .down => "floorf",
                                 .up => "ceilf",
                                 .zero => "truncf",
-                            } } } },
+                            } } },
                             .unused,
                             .unused,
                             .unused,
@@ -75874,12 +75816,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         },
                         .call_frame = .{ .alignment = .@"16" },
                         .extra_temps = .{
-                            .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
+                            .{ .type = .usize, .kind = .{ .extern_func = switch (direction) {
                                 else => unreachable,
                                 .down => "floor",
                                 .up => "ceil",
                                 .zero => "trunc",
-                            } } } },
+                            } } },
                             .unused,
                             .unused,
                             .unused,
@@ -76001,12 +75943,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .extra_temps = .{
                             .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                             .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
-                            .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
+                            .{ .type = .usize, .kind = .{ .extern_func = switch (direction) {
                                 else => unreachable,
                                 .down => "floor",
                                 .up => "ceil",
                                 .zero => "trunc",
-                            } } } },
+                            } } },
                             .unused,
                             .unused,
                             .unused,
@@ -76036,12 +75978,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .extra_temps = .{
                             .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                             .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
-                            .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
+                            .{ .type = .usize, .kind = .{ .extern_func = switch (direction) {
                                 else => unreachable,
                                 .down => "floor",
                                 .up => "ceil",
                                 .zero => "trunc",
-                            } } } },
+                            } } },
                             .unused,
                             .unused,
                             .unused,
@@ -76071,12 +76013,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .extra_temps = .{
                             .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                             .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
-                            .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
+                            .{ .type = .usize, .kind = .{ .extern_func = switch (direction) {
                                 else => unreachable,
                                 .down => "floor",
                                 .up => "ceil",
                                 .zero => "trunc",
-                            } } } },
+                            } } },
                             .unused,
                             .unused,
                             .unused,
@@ -76107,12 +76049,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .extra_temps = .{
                             .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
                             .{ .type = .f80, .kind = .{ .frame = .call_frame } },
-                            .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
+                            .{ .type = .usize, .kind = .{ .extern_func = switch (direction) {
                                 else => unreachable,
                                 .down => "__floorx",
                                 .up => "__ceilx",
                                 .zero => "__truncx",
-                            } } } },
+                            } } },
                             .unused,
                             .unused,
                             .unused,
@@ -76139,12 +76081,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .extra_temps = .{
                             .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
                             .{ .type = .f80, .kind = .{ .frame = .call_frame } },
-                            .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
+                            .{ .type = .usize, .kind = .{ .extern_func = switch (direction) {
                                 else => unreachable,
                                 .down => "__floorx",
                                 .up => "__ceilx",
                                 .zero => "__truncx",
-                            } } } },
+                            } } },
                             .unused,
                             .unused,
                             .unused,
@@ -76171,12 +76113,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .extra_temps = .{
                             .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
                             .{ .type = .f80, .kind = .{ .frame = .call_frame } },
-                            .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
+                            .{ .type = .usize, .kind = .{ .extern_func = switch (direction) {
                                 else => unreachable,
                                 .down => "__floorx",
                                 .up => "__ceilx",
                                 .zero => "__truncx",
-                            } } } },
+                            } } },
                             .unused,
                             .unused,
                             .unused,
@@ -76204,12 +76146,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                             .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                             .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
                             .{ .type = .f80, .kind = .{ .frame = .call_frame } },
-                            .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
+                            .{ .type = .usize, .kind = .{ .extern_func = switch (direction) {
                                 else => unreachable,
                                 .down => "__floorx",
                                 .up => "__ceilx",
                                 .zero => "__truncx",
-                            } } } },
+                            } } },
                             .unused,
                             .unused,
                             .unused,
@@ -76241,12 +76183,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                             .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                             .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
                             .{ .type = .f80, .kind = .{ .frame = .call_frame } },
-                            .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
+                            .{ .type = .usize, .kind = .{ .extern_func = switch (direction) {
                                 else => unreachable,
                                 .down => "__floorx",
                                 .up => "__ceilx",
                                 .zero => "__truncx",
-                            } } } },
+                            } } },
                             .unused,
                             .unused,
                             .unused,
@@ -76278,12 +76220,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                             .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                             .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
                             .{ .type = .f80, .kind = .{ .frame = .call_frame } },
-                            .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
+                            .{ .type = .usize, .kind = .{ .extern_func = switch (direction) {
                                 else => unreachable,
                                 .down => "__floorx",
                                 .up => "__ceilx",
                                 .zero => "__truncx",
-                            } } } },
+                            } } },
                             .unused,
                             .unused,
                             .unused,
@@ -76312,12 +76254,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         },
                         .call_frame = .{ .alignment = .@"16" },
                         .extra_temps = .{
-                            .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
+                            .{ .type = .usize, .kind = .{ .extern_func = switch (direction) {
                                 else => unreachable,
                                 .down => "floorq",
                                 .up => "ceilq",
                                 .zero => "truncq",
-                            } } } },
+                            } } },
                             .unused,
                             .unused,
                             .unused,
@@ -76344,12 +76286,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .extra_temps = .{
                             .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                             .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
-                            .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
+                            .{ .type = .usize, .kind = .{ .extern_func = switch (direction) {
                                 else => unreachable,
                                 .down => "floorq",
                                 .up => "ceilq",
                                 .zero => "truncq",
-                            } } } },
+                            } } },
                             .unused,
                             .unused,
                             .unused,
@@ -76379,12 +76321,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .extra_temps = .{
                             .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                             .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
-                            .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
+                            .{ .type = .usize, .kind = .{ .extern_func = switch (direction) {
                                 else => unreachable,
                                 .down => "floorq",
                                 .up => "ceilq",
                                 .zero => "truncq",
-                            } } } },
+                            } } },
                             .unused,
                             .unused,
                             .unused,
@@ -76414,12 +76356,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .extra_temps = .{
                             .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                             .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
-                            .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
+                            .{ .type = .usize, .kind = .{ .extern_func = switch (direction) {
                                 else => unreachable,
                                 .down => "floorq",
                                 .up => "ceilq",
                                 .zero => "truncq",
-                            } } } },
+                            } } },
                             .unused,
                             .unused,
                             .unused,
@@ -77051,7 +76993,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                             },
                             .call_frame = .{ .alignment = .@"16" },
                             .extra_temps = .{
-                                .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } },
+                                .{ .type = .usize, .kind = .{ .extern_func = "__cmphf2" } },
                                 .{ .type = .i32, .kind = .{ .reg = .eax } },
                                 .unused,
                                 .unused,
@@ -77394,7 +77336,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                             },
                             .call_frame = .{ .alignment = .@"16" },
                             .extra_temps = .{
-                                .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } },
+                                .{ .type = .usize, .kind = .{ .extern_func = "__cmptf2" } },
                                 .{ .type = .i32, .kind = .{ .reg = .eax } },
                                 .unused,
                                 .unused,
@@ -77555,7 +77497,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                                 },
                                 .call_frame = .{ .alignment = .@"16" },
                                 .extra_temps = .{
-                                    .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } },
+                                    .{ .type = .usize, .kind = .{ .extern_func = "__cmphf2" } },
                                     .{ .type = .i32, .kind = .{ .reg = .eax } },
                                     .unused,
                                     .unused,
@@ -77922,7 +77864,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                                 },
                                 .call_frame = .{ .alignment = .@"16" },
                                 .extra_temps = .{
-                                    .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } },
+                                    .{ .type = .usize, .kind = .{ .extern_func = "__cmptf2" } },
                                     .{ .type = .i32, .kind = .{ .reg = .eax } },
                                     .unused,
                                     .unused,
@@ -78591,7 +78533,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                                     .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
                                     .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
                                     .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
-                                    .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } },
+                                    .{ .type = .usize, .kind = .{ .extern_func = "__cmphf2" } },
                                     .{ .type = .i32, .kind = .{ .reg = .eax } },
                                     .{ .type = .u8, .kind = .{ .reg = .cl } },
                                     .{ .type = .u32, .kind = .{ .reg = .edx } },
@@ -78635,7 +78577,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                                     .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
                                     .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
                                     .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
-                                    .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } },
+                                    .{ .type = .usize, .kind = .{ .extern_func = "__cmphf2" } },
                                     .{ .type = .i32, .kind = .{ .reg = .eax } },
                                     .{ .type = .u8, .kind = .{ .reg = .cl } },
                                     .{ .type = .u32, .kind = .{ .reg = .edx } },
@@ -78679,7 +78621,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                                     .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
                                     .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
                                     .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
-                                    .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } },
+                                    .{ .type = .usize, .kind = .{ .extern_func = "__cmphf2" } },
                                     .{ .type = .i32, .kind = .{ .reg = .eax } },
                                     .{ .type = .u8, .kind = .{ .reg = .cl } },
                                     .{ .type = .u32, .kind = .{ .reg = .edx } },
@@ -78724,7 +78666,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                                     .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
                                     .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
                                     .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
-                                    .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } },
+                                    .{ .type = .usize, .kind = .{ .extern_func = "__cmphf2" } },
                                     .{ .type = .i32, .kind = .{ .reg = .eax } },
                                     .{ .type = .u8, .kind = .{ .reg = .cl } },
                                     .{ .type = .u32, .kind = .{ .reg = .edx } },
@@ -78769,7 +78711,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                                     .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
                                     .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
                                     .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
-                                    .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } },
+                                    .{ .type = .usize, .kind = .{ .extern_func = "__cmphf2" } },
                                     .{ .type = .i32, .kind = .{ .reg = .eax } },
                                     .{ .type = .u8, .kind = .{ .reg = .cl } },
                                     .{ .type = .u32, .kind = .{ .reg = .edx } },
@@ -78816,7 +78758,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                                     .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
                                     .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
                                     .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
-                                    .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } },
+                                    .{ .type = .usize, .kind = .{ .extern_func = "__cmphf2" } },
                                     .{ .type = .i32, .kind = .{ .reg = .eax } },
                                     .{ .type = .u8, .kind = .{ .reg = .cl } },
                                     .{ .type = .u32, .kind = .{ .reg = .edx } },
@@ -78863,7 +78805,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                                     .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
                                     .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
                                     .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
-                                    .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } },
+                                    .{ .type = .usize, .kind = .{ .extern_func = "__cmphf2" } },
                                     .{ .type = .i32, .kind = .{ .reg = .eax } },
                                     .{ .type = .u8, .kind = .{ .reg = .cl } },
                                     .{ .type = .u64, .kind = .{ .reg = .rdx } },
@@ -78916,7 +78858,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                                     .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
                                     .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
                                     .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
-                                    .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } },
+                                    .{ .type = .usize, .kind = .{ .extern_func = "__cmphf2" } },
                                     .{ .type = .i32, .kind = .{ .reg = .eax } },
                                     .{ .type = .u8, .kind = .{ .reg = .cl } },
                                     .{ .type = .u64, .kind = .{ .reg = .rdx } },
@@ -78969,7 +78911,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                                     .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
                                     .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
                                     .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
-                                    .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } },
+                                    .{ .type = .usize, .kind = .{ .extern_func = "__cmphf2" } },
                                     .{ .type = .i32, .kind = .{ .reg = .eax } },
                                     .{ .type = .u8, .kind = .{ .reg = .cl } },
                                     .{ .type = .u64, .kind = .{ .reg = .rdx } },
@@ -79023,7 +78965,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                                     .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
                                     .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
                                     .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
-                                    .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } },
+                                    .{ .type = .usize, .kind = .{ .extern_func = "__cmphf2" } },
                                     .{ .type = .i32, .kind = .{ .reg = .eax } },
                                     .{ .type = .u8, .kind = .{ .reg = .cl } },
                                     .{ .type = .u64, .kind = .{ .reg = .rdx } },
@@ -79077,7 +79019,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                                     .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
                                     .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
                                     .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
-                                    .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } },
+                                    .{ .type = .usize, .kind = .{ .extern_func = "__cmphf2" } },
                                     .{ .type = .i32, .kind = .{ .reg = .eax } },
                                     .{ .type = .u8, .kind = .{ .reg = .cl } },
                                     .{ .type = .u64, .kind = .{ .reg = .rdx } },
@@ -79133,7 +79075,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                                     .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
                                     .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
                                     .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
-                                    .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } },
+                                    .{ .type = .usize, .kind = .{ .extern_func = "__cmphf2" } },
                                     .{ .type = .i32, .kind = .{ .reg = .eax } },
                                     .{ .type = .u8, .kind = .{ .reg = .cl } },
                                     .{ .type = .u64, .kind = .{ .reg = .rdx } },
@@ -79960,7 +79902,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                                     .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
                                     .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
                                     .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
-                                    .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } },
+                                    .{ .type = .usize, .kind = .{ .extern_func = "__cmptf2" } },
                                     .{ .type = .i32, .kind = .{ .reg = .eax } },
                                     .{ .type = .u8, .kind = .{ .reg = .cl } },
                                     .{ .type = .u32, .kind = .{ .reg = .edx } },
@@ -80004,7 +79946,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                                     .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
                                     .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
                                     .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
-                                    .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } },
+                                    .{ .type = .usize, .kind = .{ .extern_func = "__cmptf2" } },
                                     .{ .type = .i32, .kind = .{ .reg = .eax } },
                                     .{ .type = .u8, .kind = .{ .reg = .cl } },
                                     .{ .type = .u32, .kind = .{ .reg = .edx } },
@@ -80048,7 +79990,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                                     .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
                                     .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
                                     .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
-                                    .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } },
+                                    .{ .type = .usize, .kind = .{ .extern_func = "__cmptf2" } },
                                     .{ .type = .i32, .kind = .{ .reg = .eax } },
                                     .{ .type = .u8, .kind = .{ .reg = .cl } },
                                     .{ .type = .u32, .kind = .{ .reg = .edx } },
@@ -80092,7 +80034,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                                     .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
                                     .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
                                     .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
-                                    .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } },
+                                    .{ .type = .usize, .kind = .{ .extern_func = "__cmptf2" } },
                                     .{ .type = .i32, .kind = .{ .reg = .eax } },
                                     .{ .type = .u8, .kind = .{ .reg = .cl } },
                                     .{ .type = .u32, .kind = .{ .reg = .edx } },
@@ -80136,7 +80078,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                                     .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
                                     .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
                                     .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
-                                    .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } },
+                                    .{ .type = .usize, .kind = .{ .extern_func = "__cmptf2" } },
                                     .{ .type = .i32, .kind = .{ .reg = .eax } },
                                     .{ .type = .u8, .kind = .{ .reg = .cl } },
                                     .{ .type = .u32, .kind = .{ .reg = .edx } },
@@ -80180,7 +80122,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                                     .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
                                     .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
                                     .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
-                                    .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } },
+                                    .{ .type = .usize, .kind = .{ .extern_func = "__cmptf2" } },
                                     .{ .type = .i32, .kind = .{ .reg = .eax } },
                                     .{ .type = .u8, .kind = .{ .reg = .cl } },
                                     .{ .type = .u32, .kind = .{ .reg = .edx } },
@@ -80224,7 +80166,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                                     .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
                                     .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
                                     .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
-                                    .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } },
+                                    .{ .type = .usize, .kind = .{ .extern_func = "__cmptf2" } },
                                     .{ .type = .i32, .kind = .{ .reg = .eax } },
                                     .{ .type = .u8, .kind = .{ .reg = .cl } },
                                     .{ .type = .u64, .kind = .{ .reg = .rdx } },
@@ -80277,7 +80219,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                                     .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
                                     .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
                                     .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
-                                    .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } },
+                                    .{ .type = .usize, .kind = .{ .extern_func = "__cmptf2" } },
                                     .{ .type = .i32, .kind = .{ .reg = .eax } },
                                     .{ .type = .u8, .kind = .{ .reg = .cl } },
                                     .{ .type = .u64, .kind = .{ .reg = .rdx } },
@@ -80330,7 +80272,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                                     .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
                                     .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
                                     .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
-                                    .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } },
+                                    .{ .type = .usize, .kind = .{ .extern_func = "__cmptf2" } },
                                     .{ .type = .i32, .kind = .{ .reg = .eax } },
                                     .{ .type = .u8, .kind = .{ .reg = .cl } },
                                     .{ .type = .u64, .kind = .{ .reg = .rdx } },
@@ -80383,7 +80325,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                                     .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
                                     .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
                                     .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
-                                    .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } },
+                                    .{ .type = .usize, .kind = .{ .extern_func = "__cmptf2" } },
                                     .{ .type = .i32, .kind = .{ .reg = .eax } },
                                     .{ .type = .u8, .kind = .{ .reg = .cl } },
                                     .{ .type = .u64, .kind = .{ .reg = .rdx } },
@@ -80436,7 +80378,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                                     .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
                                     .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
                                     .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
-                                    .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } },
+                                    .{ .type = .usize, .kind = .{ .extern_func = "__cmptf2" } },
                                     .{ .type = .i32, .kind = .{ .reg = .eax } },
                                     .{ .type = .u8, .kind = .{ .reg = .cl } },
                                     .{ .type = .u64, .kind = .{ .reg = .rdx } },
@@ -80489,7 +80431,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                                     .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
                                     .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
                                     .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
-                                    .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } },
+                                    .{ .type = .usize, .kind = .{ .extern_func = "__cmptf2" } },
                                     .{ .type = .i32, .kind = .{ .reg = .eax } },
                                     .{ .type = .u8, .kind = .{ .reg = .cl } },
                                     .{ .type = .u64, .kind = .{ .reg = .rdx } },
@@ -83099,7 +83041,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                                 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
                                 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
                                 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
-                                .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } },
+                                .{ .type = .usize, .kind = .{ .extern_func = "__cmphf2" } },
                                 .{ .type = .i32, .kind = .{ .reg = .eax } },
                                 .{ .type = .u8, .kind = .{ .reg = .cl } },
                                 .{ .type = .u32, .kind = .{ .reg = .edx } },
@@ -83143,7 +83085,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                                 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
                                 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
                                 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
-                                .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } },
+                                .{ .type = .usize, .kind = .{ .extern_func = "__cmphf2" } },
                                 .{ .type = .i32, .kind = .{ .reg = .eax } },
                                 .{ .type = .u8, .kind = .{ .reg = .cl } },
                                 .{ .type = .u32, .kind = .{ .reg = .edx } },
@@ -83187,7 +83129,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                                 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
                                 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
                                 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
-                                .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } },
+                                .{ .type = .usize, .kind = .{ .extern_func = "__cmphf2" } },
                                 .{ .type = .i32, .kind = .{ .reg = .eax } },
                                 .{ .type = .u8, .kind = .{ .reg = .cl } },
                                 .{ .type = .u32, .kind = .{ .reg = .edx } },
@@ -83232,7 +83174,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                                 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
                                 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
                                 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
-                                .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } },
+                                .{ .type = .usize, .kind = .{ .extern_func = "__cmphf2" } },
                                 .{ .type = .i32, .kind = .{ .reg = .eax } },
                                 .{ .type = .u8, .kind = .{ .reg = .cl } },
                                 .{ .type = .u32, .kind = .{ .reg = .edx } },
@@ -83277,7 +83219,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                                 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
                                 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
                                 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
-                                .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } },
+                                .{ .type = .usize, .kind = .{ .extern_func = "__cmphf2" } },
                                 .{ .type = .i32, .kind = .{ .reg = .eax } },
                                 .{ .type = .u8, .kind = .{ .reg = .cl } },
                                 .{ .type = .u32, .kind = .{ .reg = .edx } },
@@ -83324,7 +83266,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                                 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
                                 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
                                 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
-                                .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } },
+                                .{ .type = .usize, .kind = .{ .extern_func = "__cmphf2" } },
                                 .{ .type = .i32, .kind = .{ .reg = .eax } },
                                 .{ .type = .u8, .kind = .{ .reg = .cl } },
                                 .{ .type = .u32, .kind = .{ .reg = .edx } },
@@ -83371,7 +83313,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                                 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
                                 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
                                 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
-                                .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } },
+                                .{ .type = .usize, .kind = .{ .extern_func = "__cmphf2" } },
                                 .{ .type = .i32, .kind = .{ .reg = .eax } },
                                 .{ .type = .u8, .kind = .{ .reg = .cl } },
                                 .{ .type = .u64, .kind = .{ .reg = .rdx } },
@@ -83424,7 +83366,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                                 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
                                 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
                                 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
-                                .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } },
+                                .{ .type = .usize, .kind = .{ .extern_func = "__cmphf2" } },
                                 .{ .type = .i32, .kind = .{ .reg = .eax } },
                                 .{ .type = .u8, .kind = .{ .reg = .cl } },
                                 .{ .type = .u64, .kind = .{ .reg = .rdx } },
@@ -83477,7 +83419,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                                 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
                                 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
                                 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
-                                .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } },
+                                .{ .type = .usize, .kind = .{ .extern_func = "__cmphf2" } },
                                 .{ .type = .i32, .kind = .{ .reg = .eax } },
                                 .{ .type = .u8, .kind = .{ .reg = .cl } },
                                 .{ .type = .u64, .kind = .{ .reg = .rdx } },
@@ -83531,7 +83473,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                                 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
                                 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
                                 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
-                                .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } },
+                                .{ .type = .usize, .kind = .{ .extern_func = "__cmphf2" } },
                                 .{ .type = .i32, .kind = .{ .reg = .eax } },
                                 .{ .type = .u8, .kind = .{ .reg = .cl } },
                                 .{ .type = .u64, .kind = .{ .reg = .rdx } },
@@ -83585,7 +83527,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                                 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
                                 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
                                 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
-                                .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } },
+                                .{ .type = .usize, .kind = .{ .extern_func = "__cmphf2" } },
                                 .{ .type = .i32, .kind = .{ .reg = .eax } },
                                 .{ .type = .u8, .kind = .{ .reg = .cl } },
                                 .{ .type = .u64, .kind = .{ .reg = .rdx } },
@@ -83641,7 +83583,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                                 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
                                 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
                                 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
-                                .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } },
+                                .{ .type = .usize, .kind = .{ .extern_func = "__cmphf2" } },
                                 .{ .type = .i32, .kind = .{ .reg = .eax } },
                                 .{ .type = .u8, .kind = .{ .reg = .cl } },
                                 .{ .type = .u64, .kind = .{ .reg = .rdx } },
@@ -84482,7 +84424,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                                 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
                                 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
                                 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
-                                .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } },
+                                .{ .type = .usize, .kind = .{ .extern_func = "__cmptf2" } },
                                 .{ .type = .i32, .kind = .{ .reg = .eax } },
                                 .{ .type = .u8, .kind = .{ .reg = .cl } },
                                 .{ .type = .u32, .kind = .{ .reg = .edx } },
@@ -84526,7 +84468,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                                 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
                                 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
                                 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
-                                .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } },
+                                .{ .type = .usize, .kind = .{ .extern_func = "__cmptf2" } },
                                 .{ .type = .i32, .kind = .{ .reg = .eax } },
                                 .{ .type = .u8, .kind = .{ .reg = .cl } },
                                 .{ .type = .u32, .kind = .{ .reg = .edx } },
@@ -84570,7 +84512,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                                 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
                                 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
                                 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
-                                .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } },
+                                .{ .type = .usize, .kind = .{ .extern_func = "__cmptf2" } },
                                 .{ .type = .i32, .kind = .{ .reg = .eax } },
                                 .{ .type = .u8, .kind = .{ .reg = .cl } },
                                 .{ .type = .u32, .kind = .{ .reg = .edx } },
@@ -84614,7 +84556,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                                 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
                                 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
                                 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
-                                .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } },
+                                .{ .type = .usize, .kind = .{ .extern_func = "__cmptf2" } },
                                 .{ .type = .i32, .kind = .{ .reg = .eax } },
                                 .{ .type = .u8, .kind = .{ .reg = .cl } },
                                 .{ .type = .u32, .kind = .{ .reg = .edx } },
@@ -84658,7 +84600,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                                 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
                                 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
                                 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
-                                .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } },
+                                .{ .type = .usize, .kind = .{ .extern_func = "__cmptf2" } },
                                 .{ .type = .i32, .kind = .{ .reg = .eax } },
                                 .{ .type = .u8, .kind = .{ .reg = .cl } },
                                 .{ .type = .u32, .kind = .{ .reg = .edx } },
@@ -84702,7 +84644,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                                 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
                                 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
                                 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
-                                .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } },
+                                .{ .type = .usize, .kind = .{ .extern_func = "__cmptf2" } },
                                 .{ .type = .i32, .kind = .{ .reg = .eax } },
                                 .{ .type = .u8, .kind = .{ .reg = .cl } },
                                 .{ .type = .u32, .kind = .{ .reg = .edx } },
@@ -84746,7 +84688,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                                 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
                                 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
                                 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
-                                .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } },
+                                .{ .type = .usize, .kind = .{ .extern_func = "__cmptf2" } },
                                 .{ .type = .i32, .kind = .{ .reg = .eax } },
                                 .{ .type = .u8, .kind = .{ .reg = .cl } },
                                 .{ .type = .u64, .kind = .{ .reg = .rdx } },
@@ -84799,7 +84741,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                                 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
                                 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
                                 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
-                                .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } },
+                                .{ .type = .usize, .kind = .{ .extern_func = "__cmptf2" } },
                                 .{ .type = .i32, .kind = .{ .reg = .eax } },
                                 .{ .type = .u8, .kind = .{ .reg = .cl } },
                                 .{ .type = .u64, .kind = .{ .reg = .rdx } },
@@ -84852,7 +84794,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                                 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
                                 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
                                 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
-                                .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } },
+                                .{ .type = .usize, .kind = .{ .extern_func = "__cmptf2" } },
                                 .{ .type = .i32, .kind = .{ .reg = .eax } },
                                 .{ .type = .u8, .kind = .{ .reg = .cl } },
                                 .{ .type = .u64, .kind = .{ .reg = .rdx } },
@@ -84905,7 +84847,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                                 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
                                 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
                                 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
-                                .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } },
+                                .{ .type = .usize, .kind = .{ .extern_func = "__cmptf2" } },
                                 .{ .type = .i32, .kind = .{ .reg = .eax } },
                                 .{ .type = .u8, .kind = .{ .reg = .cl } },
                                 .{ .type = .u64, .kind = .{ .reg = .rdx } },
@@ -84958,7 +84900,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                                 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
                                 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
                                 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
-                                .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } },
+                                .{ .type = .usize, .kind = .{ .extern_func = "__cmptf2" } },
                                 .{ .type = .i32, .kind = .{ .reg = .eax } },
                                 .{ .type = .u8, .kind = .{ .reg = .cl } },
                                 .{ .type = .u64, .kind = .{ .reg = .rdx } },
@@ -85011,7 +84953,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                                 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
                                 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
                                 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
-                                .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } },
+                                .{ .type = .usize, .kind = .{ .extern_func = "__cmptf2" } },
                                 .{ .type = .i32, .kind = .{ .reg = .eax } },
                                 .{ .type = .u8, .kind = .{ .reg = .cl } },
                                 .{ .type = .u64, .kind = .{ .reg = .rdx } },
@@ -85109,6 +85051,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
             .dbg_arg_inline,
             => |air_tag| if (use_old) try cg.airDbgVar(inst) else if (!cg.mod.strip) {
                 const pl_op = air_datas[@intFromEnum(inst)].pl_op;
+                const air_name: Air.NullTerminatedString = @enumFromInt(pl_op.payload);
+                const ty = cg.typeOf(pl_op.operand);
                 var ops = try cg.tempsFromOperands(inst, .{pl_op.operand});
                 var mcv = ops[0].tracking(cg).short;
                 switch (mcv) {
@@ -85124,13 +85068,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     },
                 }
 
-                const name_nts: Air.NullTerminatedString = @enumFromInt(pl_op.payload);
-                assert(name_nts != .none);
-                const name = name_nts.toSlice(cg.air);
-                try cg.mir_local_name_bytes.appendSlice(cg.gpa, name[0 .. name.len + 1]);
-
-                const ty = cg.typeOf(pl_op.operand);
-                try cg.mir_local_types.append(cg.gpa, ty.toIntern());
+                try cg.mir_locals.append(cg.gpa, .{
+                    .name = switch (air_name) {
+                        .none => switch (air_tag) {
+                            else => unreachable,
+                            .dbg_arg_inline => .none,
+                        },
+                        else => try cg.addString(air_name.toSlice(cg.air)),
+                    },
+                    .type = ty.toIntern(),
+                });
 
                 try cg.genLocalDebugInfo(air_tag, ty, ops[0].tracking(cg).short);
                 try ops[0].die(cg);
@@ -85398,7 +85345,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     },
                     .call_frame = .{ .alignment = .@"16" },
                     .extra_temps = .{
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__truncsfhf2" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__truncsfhf2" } },
                         .unused,
                         .unused,
                         .unused,
@@ -85455,7 +85402,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__truncsfhf2" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__truncsfhf2" } },
                         .unused,
                         .unused,
                         .unused,
@@ -85486,7 +85433,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__truncsfhf2" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__truncsfhf2" } },
                         .unused,
                         .unused,
                         .unused,
@@ -85517,7 +85464,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__truncsfhf2" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__truncsfhf2" } },
                         .{ .type = .f16, .kind = .{ .reg = .ax } },
                         .unused,
                         .unused,
@@ -85549,7 +85496,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__truncsfhf2" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__truncsfhf2" } },
                         .{ .type = .f32, .kind = .mem },
                         .{ .type = .f16, .kind = .{ .reg = .ax } },
                         .unused,
@@ -85580,7 +85527,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     },
                     .call_frame = .{ .alignment = .@"16" },
                     .extra_temps = .{
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__truncdfhf2" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__truncdfhf2" } },
                         .unused,
                         .unused,
                         .unused,
@@ -85608,7 +85555,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__truncdfhf2" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__truncdfhf2" } },
                         .unused,
                         .unused,
                         .unused,
@@ -85639,7 +85586,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__truncdfhf2" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__truncdfhf2" } },
                         .unused,
                         .unused,
                         .unused,
@@ -85670,7 +85617,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__truncdfhf2" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__truncdfhf2" } },
                         .{ .type = .f16, .kind = .{ .reg = .ax } },
                         .unused,
                         .unused,
@@ -85702,7 +85649,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__truncdfhf2" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__truncdfhf2" } },
                         .{ .type = .f32, .kind = .mem },
                         .{ .type = .f16, .kind = .{ .reg = .ax } },
                         .unused,
@@ -85919,7 +85866,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .call_frame = .{ .size = 16, .alignment = .@"16" },
                     .extra_temps = .{
                         .{ .type = .f80, .kind = .{ .frame = .call_frame } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__truncxfhf2" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__truncxfhf2" } },
                         .unused,
                         .unused,
                         .unused,
@@ -85947,7 +85894,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .call_frame = .{ .size = 16, .alignment = .@"16" },
                     .extra_temps = .{
                         .{ .type = .f80, .kind = .{ .frame = .call_frame } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__truncxfhf2" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__truncxfhf2" } },
                         .unused,
                         .unused,
                         .unused,
@@ -85975,7 +85922,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .call_frame = .{ .size = 16, .alignment = .@"16" },
                     .extra_temps = .{
                         .{ .type = .f80, .kind = .{ .frame = .call_frame } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__truncxfhf2" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__truncxfhf2" } },
                         .unused,
                         .unused,
                         .unused,
@@ -86005,7 +85952,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
                         .{ .type = .f80, .kind = .{ .frame = .call_frame } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__truncxfhf2" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__truncxfhf2" } },
                         .unused,
                         .unused,
                         .unused,
@@ -86037,7 +85984,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
                         .{ .type = .f80, .kind = .{ .frame = .call_frame } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__truncxfhf2" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__truncxfhf2" } },
                         .unused,
                         .unused,
                         .unused,
@@ -86069,7 +86016,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
                         .{ .type = .f80, .kind = .{ .frame = .call_frame } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__truncxfhf2" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__truncxfhf2" } },
                         .{ .type = .f16, .kind = .{ .reg = .ax } },
                         .unused,
                         .unused,
@@ -86102,7 +86049,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
                         .{ .type = .f80, .kind = .{ .frame = .call_frame } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__truncxfhf2" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__truncxfhf2" } },
                         .{ .type = .f16, .kind = .{ .reg = .ax } },
                         .unused,
                         .unused,
@@ -86243,7 +86190,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     },
                     .call_frame = .{ .alignment = .@"16" },
                     .extra_temps = .{
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfhf2" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__trunctfhf2" } },
                         .unused,
                         .unused,
                         .unused,
@@ -86271,7 +86218,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfhf2" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__trunctfhf2" } },
                         .unused,
                         .unused,
                         .unused,
@@ -86302,7 +86249,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfhf2" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__trunctfhf2" } },
                         .unused,
                         .unused,
                         .unused,
@@ -86333,7 +86280,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfhf2" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__trunctfhf2" } },
                         .{ .type = .f16, .kind = .{ .reg = .ax } },
                         .unused,
                         .unused,
@@ -86365,7 +86312,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfhf2" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__trunctfhf2" } },
                         .{ .type = .f32, .kind = .mem },
                         .{ .type = .f16, .kind = .{ .reg = .ax } },
                         .unused,
@@ -86396,7 +86343,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     },
                     .call_frame = .{ .alignment = .@"16" },
                     .extra_temps = .{
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfsf2" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__trunctfsf2" } },
                         .unused,
                         .unused,
                         .unused,
@@ -86424,7 +86371,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfsf2" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__trunctfsf2" } },
                         .unused,
                         .unused,
                         .unused,
@@ -86455,7 +86402,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfsf2" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__trunctfsf2" } },
                         .unused,
                         .unused,
                         .unused,
@@ -86486,7 +86433,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfsf2" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__trunctfsf2" } },
                         .unused,
                         .unused,
                         .unused,
@@ -86515,7 +86462,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     },
                     .call_frame = .{ .alignment = .@"16" },
                     .extra_temps = .{
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfdf2" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__trunctfdf2" } },
                         .unused,
                         .unused,
                         .unused,
@@ -86543,7 +86490,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfdf2" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__trunctfdf2" } },
                         .unused,
                         .unused,
                         .unused,
@@ -86574,7 +86521,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfdf2" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__trunctfdf2" } },
                         .unused,
                         .unused,
                         .unused,
@@ -86605,7 +86552,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfdf2" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__trunctfdf2" } },
                         .unused,
                         .unused,
                         .unused,
@@ -86634,7 +86581,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     },
                     .call_frame = .{ .alignment = .@"16" },
                     .extra_temps = .{
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfxf2" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__trunctfxf2" } },
                         .unused,
                         .unused,
                         .unused,
@@ -86662,7 +86609,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfxf2" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__trunctfxf2" } },
                         .unused,
                         .unused,
                         .unused,
@@ -86694,7 +86641,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfxf2" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__trunctfxf2" } },
                         .unused,
                         .unused,
                         .unused,
@@ -86726,7 +86673,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__trunctfxf2" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__trunctfxf2" } },
                         .unused,
                         .unused,
                         .unused,
@@ -86806,7 +86753,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     },
                     .call_frame = .{ .alignment = .@"16" },
                     .extra_temps = .{
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendhfsf2" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__extendhfsf2" } },
                         .unused,
                         .unused,
                         .unused,
@@ -86863,7 +86810,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendhfsf2" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__extendhfsf2" } },
                         .unused,
                         .unused,
                         .unused,
@@ -86895,7 +86842,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendhfsf2" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__extendhfsf2" } },
                         .unused,
                         .unused,
                         .unused,
@@ -86929,7 +86876,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .f16, .kind = .{ .reg = .ax } },
                         .{ .type = .f32, .kind = .mem },
                         .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendhfsf2" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__extendhfsf2" } },
                         .unused,
                         .unused,
                         .unused,
@@ -87026,7 +86973,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     },
                     .call_frame = .{ .alignment = .@"16" },
                     .extra_temps = .{
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendhfdf2" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__extendhfdf2" } },
                         .unused,
                         .unused,
                         .unused,
@@ -87087,7 +87034,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendhfdf2" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__extendhfdf2" } },
                         .unused,
                         .unused,
                         .unused,
@@ -87119,7 +87066,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendhfdf2" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__extendhfdf2" } },
                         .unused,
                         .unused,
                         .unused,
@@ -87153,7 +87100,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .f16, .kind = .{ .reg = .ax } },
                         .{ .type = .f32, .kind = .mem },
                         .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendhfdf2" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__extendhfdf2" } },
                         .unused,
                         .unused,
                         .unused,
@@ -87209,7 +87156,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     },
                     .call_frame = .{ .alignment = .@"16" },
                     .extra_temps = .{
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendhfxf2" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__extendhfxf2" } },
                         .unused,
                         .unused,
                         .unused,
@@ -87237,7 +87184,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendhfxf2" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__extendhfxf2" } },
                         .unused,
                         .unused,
                         .unused,
@@ -87270,7 +87217,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendhfxf2" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__extendhfxf2" } },
                         .unused,
                         .unused,
                         .unused,
@@ -87305,7 +87252,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .f16, .kind = .{ .reg = .ax } },
                         .{ .type = .f32, .kind = .mem },
                         .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendhfxf2" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__extendhfxf2" } },
                         .unused,
                         .unused,
                         .unused,
@@ -87335,7 +87282,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     },
                     .call_frame = .{ .alignment = .@"16" },
                     .extra_temps = .{
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendhftf2" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__extendhftf2" } },
                         .unused,
                         .unused,
                         .unused,
@@ -87363,7 +87310,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendhftf2" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__extendhftf2" } },
                         .unused,
                         .unused,
                         .unused,
@@ -87395,7 +87342,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendhftf2" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__extendhftf2" } },
                         .unused,
                         .unused,
                         .unused,
@@ -87429,7 +87376,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .f16, .kind = .{ .reg = .ax } },
                         .{ .type = .f32, .kind = .mem },
                         .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendhftf2" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__extendhftf2" } },
                         .unused,
                         .unused,
                         .unused,
@@ -87696,7 +87643,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     },
                     .call_frame = .{ .alignment = .@"16" },
                     .extra_temps = .{
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendsftf2" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__extendsftf2" } },
                         .unused,
                         .unused,
                         .unused,
@@ -87724,7 +87671,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendsftf2" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__extendsftf2" } },
                         .unused,
                         .unused,
                         .unused,
@@ -87755,7 +87702,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendsftf2" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__extendsftf2" } },
                         .unused,
                         .unused,
                         .unused,
@@ -87786,7 +87733,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendsftf2" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__extendsftf2" } },
                         .unused,
                         .unused,
                         .unused,
@@ -87869,7 +87816,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     },
                     .call_frame = .{ .alignment = .@"16" },
                     .extra_temps = .{
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extenddftf2" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__extenddftf2" } },
                         .unused,
                         .unused,
                         .unused,
@@ -87897,7 +87844,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extenddftf2" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__extenddftf2" } },
                         .unused,
                         .unused,
                         .unused,
@@ -87928,7 +87875,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extenddftf2" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__extenddftf2" } },
                         .unused,
                         .unused,
                         .unused,
@@ -87959,7 +87906,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extenddftf2" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__extenddftf2" } },
                         .unused,
                         .unused,
                         .unused,
@@ -87990,7 +87937,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .call_frame = .{ .size = 16, .alignment = .@"16" },
                     .extra_temps = .{
                         .{ .type = .f80, .kind = .{ .frame = .call_frame } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendxftf2" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__extendxftf2" } },
                         .unused,
                         .unused,
                         .unused,
@@ -88018,7 +87965,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .call_frame = .{ .size = 16, .alignment = .@"16" },
                     .extra_temps = .{
                         .{ .type = .f80, .kind = .{ .frame = .call_frame } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendxftf2" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__extendxftf2" } },
                         .unused,
                         .unused,
                         .unused,
@@ -88046,7 +87993,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .call_frame = .{ .size = 16, .alignment = .@"16" },
                     .extra_temps = .{
                         .{ .type = .f80, .kind = .{ .frame = .call_frame } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendxftf2" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__extendxftf2" } },
                         .unused,
                         .unused,
                         .unused,
@@ -88076,7 +88023,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
                         .{ .type = .f80, .kind = .{ .frame = .call_frame } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendxftf2" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__extendxftf2" } },
                         .unused,
                         .unused,
                         .unused,
@@ -88108,7 +88055,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
                         .{ .type = .f80, .kind = .{ .frame = .call_frame } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendxftf2" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__extendxftf2" } },
                         .unused,
                         .unused,
                         .unused,
@@ -88140,7 +88087,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
                         .{ .type = .f80, .kind = .{ .frame = .call_frame } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__extendxftf2" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__extendxftf2" } },
                         .unused,
                         .unused,
                         .unused,
@@ -98891,9 +98838,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                 } }) catch |err| switch (err) {
                     error.SelectFailed => {
                         const elem_size = res_ty.abiSize(zcu);
-                        const base = try cg.tempAllocReg(.usize, abi.RegisterClass.gp);
+                        var base = try cg.tempAllocReg(.usize, abi.RegisterClass.gp);
                         while (try ops[0].toBase(false, cg) or
-                            try ops[1].toRegClass(true, .general_purpose, cg))
+                            try ops[1].toRegClass(true, .general_purpose, cg) or
+                            try base.toRegClass(true, .general_purpose, cg))
                         {}
                         const base_reg = base.tracking(cg).short.register.to64();
                         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 {
                     },
                     .call_frame = .{ .alignment = .@"16" },
                     .extra_temps = .{
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixhfsi" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fixhfsi" } },
                         .unused,
                         .unused,
                         .unused,
@@ -99360,7 +99308,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     },
                     .call_frame = .{ .alignment = .@"16" },
                     .extra_temps = .{
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunshfsi" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fixunshfsi" } },
                         .unused,
                         .unused,
                         .unused,
@@ -99386,7 +99334,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     },
                     .call_frame = .{ .alignment = .@"16" },
                     .extra_temps = .{
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixhfdi" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fixhfdi" } },
                         .unused,
                         .unused,
                         .unused,
@@ -99412,7 +99360,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     },
                     .call_frame = .{ .alignment = .@"16" },
                     .extra_temps = .{
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunshfdi" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fixunshfdi" } },
                         .unused,
                         .unused,
                         .unused,
@@ -99438,7 +99386,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     },
                     .call_frame = .{ .alignment = .@"16" },
                     .extra_temps = .{
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixhfti" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fixhfti" } },
                         .unused,
                         .unused,
                         .unused,
@@ -99464,7 +99412,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     },
                     .call_frame = .{ .alignment = .@"16" },
                     .extra_temps = .{
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunshfti" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fixunshfti" } },
                         .unused,
                         .unused,
                         .unused,
@@ -99490,7 +99438,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     },
                     .call_frame = .{ .alignment = .@"16" },
                     .extra_temps = .{
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixhfdi" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fixhfdi" } },
                         .{ .type = .i64, .kind = .{ .reg = .rax } },
                         .{ .type = .usize, .kind = .{ .reg = .rdi } },
                         .{ .type = .u32, .kind = .{ .reg = .ecx } },
@@ -99521,7 +99469,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     },
                     .call_frame = .{ .alignment = .@"16" },
                     .extra_temps = .{
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunshfdi" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fixunshfdi" } },
                         .{ .type = .i64, .kind = .{ .reg = .rax } },
                         .{ .type = .usize, .kind = .{ .reg = .rdi } },
                         .{ .type = .u32, .kind = .{ .reg = .ecx } },
@@ -99615,7 +99563,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixhfsi" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fixhfsi" } },
                         .{ .type = .i32, .kind = .{ .reg = .eax } },
                         .unused,
                         .unused,
@@ -99647,7 +99595,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixhfsi" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fixhfsi" } },
                         .{ .type = .i32, .kind = .{ .reg = .eax } },
                         .unused,
                         .unused,
@@ -99679,7 +99627,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixhfsi" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fixhfsi" } },
                         .{ .type = .i32, .kind = .{ .reg = .eax } },
                         .unused,
                         .unused,
@@ -99711,7 +99659,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixhfsi" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fixhfsi" } },
                         .{ .type = .i32, .kind = .{ .reg = .eax } },
                         .unused,
                         .unused,
@@ -99745,7 +99693,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .i32, .kind = .{ .reg = .eax } },
                         .{ .type = .f32, .kind = .mem },
                         .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixhfsi" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fixhfsi" } },
                         .unused,
                         .unused,
                         .unused,
@@ -99778,7 +99726,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .i32, .kind = .{ .reg = .eax } },
                         .{ .type = .f32, .kind = .mem },
                         .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixhfsi" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fixhfsi" } },
                         .unused,
                         .unused,
                         .unused,
@@ -99899,7 +99847,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixhfsi" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fixhfsi" } },
                         .{ .type = .i32, .kind = .{ .reg = .eax } },
                         .unused,
                         .unused,
@@ -99931,7 +99879,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixhfsi" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fixhfsi" } },
                         .{ .type = .i32, .kind = .{ .reg = .eax } },
                         .unused,
                         .unused,
@@ -99965,7 +99913,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .i32, .kind = .{ .reg = .eax } },
                         .{ .type = .f32, .kind = .mem },
                         .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixhfsi" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fixhfsi" } },
                         .unused,
                         .unused,
                         .unused,
@@ -100058,7 +100006,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixhfsi" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fixhfsi" } },
                         .{ .type = .i32, .kind = .{ .reg = .eax } },
                         .unused,
                         .unused,
@@ -100090,7 +100038,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunshfsi" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fixunshfsi" } },
                         .{ .type = .u32, .kind = .{ .reg = .eax } },
                         .unused,
                         .unused,
@@ -100122,7 +100070,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixhfsi" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fixhfsi" } },
                         .{ .type = .i32, .kind = .{ .reg = .eax } },
                         .unused,
                         .unused,
@@ -100154,7 +100102,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunshfsi" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fixunshfsi" } },
                         .{ .type = .u32, .kind = .{ .reg = .eax } },
                         .unused,
                         .unused,
@@ -100188,7 +100136,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .i32, .kind = .{ .reg = .eax } },
                         .{ .type = .f32, .kind = .mem },
                         .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixhfsi" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fixhfsi" } },
                         .unused,
                         .unused,
                         .unused,
@@ -100221,7 +100169,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .u32, .kind = .{ .reg = .eax } },
                         .{ .type = .f32, .kind = .mem },
                         .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunshfsi" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fixunshfsi" } },
                         .unused,
                         .unused,
                         .unused,
@@ -100284,7 +100232,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixhfdi" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fixhfdi" } },
                         .{ .type = .i64, .kind = .{ .reg = .rax } },
                         .unused,
                         .unused,
@@ -100316,7 +100264,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunshfdi" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fixunshfdi" } },
                         .{ .type = .u64, .kind = .{ .reg = .rax } },
                         .unused,
                         .unused,
@@ -100348,7 +100296,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixhfdi" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fixhfdi" } },
                         .{ .type = .i64, .kind = .{ .reg = .rax } },
                         .unused,
                         .unused,
@@ -100380,7 +100328,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunshfdi" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fixunshfdi" } },
                         .{ .type = .u64, .kind = .{ .reg = .rax } },
                         .unused,
                         .unused,
@@ -100414,7 +100362,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .i64, .kind = .{ .reg = .rax } },
                         .{ .type = .f32, .kind = .mem },
                         .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixhfdi" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fixhfdi" } },
                         .unused,
                         .unused,
                         .unused,
@@ -100447,7 +100395,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .u64, .kind = .{ .reg = .rax } },
                         .{ .type = .f32, .kind = .mem },
                         .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunshfdi" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fixunshfdi" } },
                         .unused,
                         .unused,
                         .unused,
@@ -100478,7 +100426,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixhfti" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fixhfti" } },
                         .{ .type = .u64, .kind = .{ .reg = .rax } },
                         .{ .type = .i64, .kind = .{ .reg = .rdx } },
                         .unused,
@@ -100511,7 +100459,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunshfti" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fixunshfti" } },
                         .{ .type = .u64, .kind = .{ .reg = .rax } },
                         .{ .type = .u64, .kind = .{ .reg = .rdx } },
                         .unused,
@@ -100544,7 +100492,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixhfti" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fixhfti" } },
                         .{ .type = .u64, .kind = .{ .reg = .rax } },
                         .{ .type = .i64, .kind = .{ .reg = .rdx } },
                         .unused,
@@ -100577,7 +100525,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunshfti" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fixunshfti" } },
                         .{ .type = .u64, .kind = .{ .reg = .rax } },
                         .{ .type = .u64, .kind = .{ .reg = .rdx } },
                         .unused,
@@ -100612,7 +100560,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .u64, .kind = .{ .reg = .rax } },
                         .{ .type = .f32, .kind = .mem },
                         .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixhfti" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fixhfti" } },
                         .{ .type = .i64, .kind = .{ .reg = .rdx } },
                         .unused,
                         .unused,
@@ -100646,7 +100594,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .u64, .kind = .{ .reg = .rax } },
                         .{ .type = .f32, .kind = .mem },
                         .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunshfti" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fixunshfti" } },
                         .{ .type = .u64, .kind = .{ .reg = .rdx } },
                         .unused,
                         .unused,
@@ -100681,7 +100629,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .usize, .kind = .{ .reg = .rdi } },
                         .{ .type = .usize, .kind = .{ .reg = .rsi } },
                         .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixhfei" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fixhfei" } },
                         .unused,
                         .unused,
                         .unused,
@@ -100716,7 +100664,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .usize, .kind = .{ .reg = .rdi } },
                         .{ .type = .usize, .kind = .{ .reg = .rsi } },
                         .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunshfei" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fixunshfei" } },
                         .unused,
                         .unused,
                         .unused,
@@ -100751,7 +100699,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .usize, .kind = .{ .reg = .rdi } },
                         .{ .type = .usize, .kind = .{ .reg = .rsi } },
                         .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixhfei" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fixhfei" } },
                         .unused,
                         .unused,
                         .unused,
@@ -100786,7 +100734,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .usize, .kind = .{ .reg = .rdi } },
                         .{ .type = .usize, .kind = .{ .reg = .rsi } },
                         .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunshfei" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fixunshfei" } },
                         .unused,
                         .unused,
                         .unused,
@@ -100822,7 +100770,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .usize, .kind = .{ .reg = .rsi } },
                         .{ .type = .f32, .kind = .mem },
                         .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixhfei" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fixhfei" } },
                         .unused,
                         .unused,
                         .unused,
@@ -100858,7 +100806,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .usize, .kind = .{ .reg = .rsi } },
                         .{ .type = .f32, .kind = .mem },
                         .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunshfei" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fixunshfei" } },
                         .unused,
                         .unused,
                         .unused,
@@ -101000,7 +100948,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     },
                     .call_frame = .{ .alignment = .@"16" },
                     .extra_temps = .{
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixsfti" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fixsfti" } },
                         .unused,
                         .unused,
                         .unused,
@@ -101026,7 +100974,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     },
                     .call_frame = .{ .alignment = .@"16" },
                     .extra_temps = .{
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunssfti" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fixunssfti" } },
                         .unused,
                         .unused,
                         .unused,
@@ -101055,7 +101003,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .i64, .kind = .{ .reg = .rax } },
                         .{ .type = .vector_4_f32, .kind = .{ .smax_mem = .{} } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunssfti" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fixunssfti" } },
                         .{ .type = .i64, .kind = .{ .reg = .rdx } },
                         .{ .type = .usize, .kind = .{ .reg = .rdi } },
                         .{ .type = .u32, .kind = .{ .reg = .ecx } },
@@ -101096,7 +101044,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .i64, .kind = .{ .reg = .rax } },
                         .{ .type = .vector_4_f32, .kind = .{ .smax_mem = .{} } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunssfti" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fixunssfti" } },
                         .{ .type = .i64, .kind = .{ .reg = .rdx } },
                         .{ .type = .usize, .kind = .{ .reg = .rdi } },
                         .{ .type = .u32, .kind = .{ .reg = .ecx } },
@@ -101137,7 +101085,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
                         .{ .type = .i64, .kind = .{ .reg = .rax } },
                         .{ .type = .vector_4_f32, .kind = .{ .smax_mem = .{} } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunssfti" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fixunssfti" } },
                         .{ .type = .u32, .kind = .{ .reg = .ecx } },
                         .{ .type = .i64, .kind = .{ .reg = .rdx } },
                         .{ .type = .usize, .kind = .{ .reg = .rdi } },
@@ -101175,7 +101123,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     },
                     .call_frame = .{ .alignment = .@"16" },
                     .extra_temps = .{
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunssfti" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fixunssfti" } },
                         .{ .type = .i64, .kind = .{ .reg = .rax } },
                         .{ .type = .i64, .kind = .{ .reg = .rdx } },
                         .{ .type = .usize, .kind = .{ .reg = .rdi } },
@@ -101385,7 +101333,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixsfsi" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fixsfsi" } },
                         .{ .type = .i32, .kind = .{ .reg = .eax } },
                         .unused,
                         .unused,
@@ -101416,7 +101364,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixsfsi" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fixsfsi" } },
                         .{ .type = .i32, .kind = .{ .reg = .eax } },
                         .unused,
                         .unused,
@@ -101447,7 +101395,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixsfsi" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fixsfsi" } },
                         .{ .type = .i32, .kind = .{ .reg = .eax } },
                         .unused,
                         .unused,
@@ -101478,7 +101426,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixsfsi" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fixsfsi" } },
                         .{ .type = .i32, .kind = .{ .reg = .eax } },
                         .unused,
                         .unused,
@@ -101681,7 +101629,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixsfsi" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fixsfsi" } },
                         .{ .type = .i32, .kind = .{ .reg = .eax } },
                         .unused,
                         .unused,
@@ -101712,7 +101660,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixsfsi" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fixsfsi" } },
                         .{ .type = .i32, .kind = .{ .reg = .eax } },
                         .unused,
                         .unused,
@@ -101825,7 +101773,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixsfsi" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fixsfsi" } },
                         .{ .type = .i32, .kind = .{ .reg = .eax } },
                         .unused,
                         .unused,
@@ -101856,7 +101804,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunssfsi" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fixunssfsi" } },
                         .{ .type = .u32, .kind = .{ .reg = .eax } },
                         .unused,
                         .unused,
@@ -101887,7 +101835,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixsfsi" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fixsfsi" } },
                         .{ .type = .i32, .kind = .{ .reg = .eax } },
                         .unused,
                         .unused,
@@ -101918,7 +101866,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunssfsi" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fixunssfsi" } },
                         .{ .type = .u32, .kind = .{ .reg = .eax } },
                         .unused,
                         .unused,
@@ -102007,7 +101955,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixsfdi" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fixsfdi" } },
                         .{ .type = .i64, .kind = .{ .reg = .rax } },
                         .unused,
                         .unused,
@@ -102038,7 +101986,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunssfdi" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fixunssfdi" } },
                         .{ .type = .u64, .kind = .{ .reg = .rax } },
                         .unused,
                         .unused,
@@ -102069,7 +102017,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixsfdi" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fixsfdi" } },
                         .{ .type = .i64, .kind = .{ .reg = .rax } },
                         .unused,
                         .unused,
@@ -102100,7 +102048,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunssfdi" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fixunssfdi" } },
                         .{ .type = .u64, .kind = .{ .reg = .rax } },
                         .unused,
                         .unused,
@@ -102131,7 +102079,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixsfti" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fixsfti" } },
                         .{ .type = .u64, .kind = .{ .reg = .rax } },
                         .{ .type = .i64, .kind = .{ .reg = .rdx } },
                         .unused,
@@ -102163,7 +102111,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunssfti" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fixunssfti" } },
                         .{ .type = .u64, .kind = .{ .reg = .rax } },
                         .{ .type = .u64, .kind = .{ .reg = .rdx } },
                         .unused,
@@ -102195,7 +102143,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixsfti" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fixsfti" } },
                         .{ .type = .u64, .kind = .{ .reg = .rax } },
                         .{ .type = .i64, .kind = .{ .reg = .rdx } },
                         .unused,
@@ -102227,7 +102175,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunssfti" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fixunssfti" } },
                         .{ .type = .u64, .kind = .{ .reg = .rax } },
                         .{ .type = .u64, .kind = .{ .reg = .rdx } },
                         .unused,
@@ -102262,7 +102210,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .usize, .kind = .{ .reg = .rdi } },
                         .{ .type = .usize, .kind = .{ .reg = .rsi } },
                         .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixsfei" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fixsfei" } },
                         .unused,
                         .unused,
                         .unused,
@@ -102296,7 +102244,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .usize, .kind = .{ .reg = .rdi } },
                         .{ .type = .usize, .kind = .{ .reg = .rsi } },
                         .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunssfei" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fixunssfei" } },
                         .unused,
                         .unused,
                         .unused,
@@ -102330,7 +102278,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .usize, .kind = .{ .reg = .rdi } },
                         .{ .type = .usize, .kind = .{ .reg = .rsi } },
                         .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixsfei" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fixsfei" } },
                         .unused,
                         .unused,
                         .unused,
@@ -102364,7 +102312,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .usize, .kind = .{ .reg = .rdi } },
                         .{ .type = .usize, .kind = .{ .reg = .rsi } },
                         .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunssfei" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fixunssfei" } },
                         .unused,
                         .unused,
                         .unused,
@@ -102703,7 +102651,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     },
                     .call_frame = .{ .alignment = .@"16" },
                     .extra_temps = .{
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixdfti" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fixdfti" } },
                         .unused,
                         .unused,
                         .unused,
@@ -102729,7 +102677,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     },
                     .call_frame = .{ .alignment = .@"16" },
                     .extra_temps = .{
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsdfti" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fixunsdfti" } },
                         .unused,
                         .unused,
                         .unused,
@@ -102757,7 +102705,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .usize, .kind = .{ .reg = .rdi } },
                         .{ .type = .usize, .kind = .{ .reg = .rsi } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixdfei" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fixdfei" } },
                         .unused,
                         .unused,
                         .unused,
@@ -102785,7 +102733,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .usize, .kind = .{ .reg = .rdi } },
                         .{ .type = .usize, .kind = .{ .reg = .rsi } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsdfei" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fixunsdfei" } },
                         .unused,
                         .unused,
                         .unused,
@@ -103090,7 +103038,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixdfsi" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fixdfsi" } },
                         .{ .type = .i32, .kind = .{ .reg = .eax } },
                         .unused,
                         .unused,
@@ -103121,7 +103069,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixdfsi" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fixdfsi" } },
                         .{ .type = .i32, .kind = .{ .reg = .eax } },
                         .unused,
                         .unused,
@@ -103152,7 +103100,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixdfsi" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fixdfsi" } },
                         .{ .type = .i32, .kind = .{ .reg = .eax } },
                         .unused,
                         .unused,
@@ -103183,7 +103131,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixsfsi" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fixsfsi" } },
                         .{ .type = .i32, .kind = .{ .reg = .eax } },
                         .unused,
                         .unused,
@@ -103214,7 +103162,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixdfsi" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fixdfsi" } },
                         .{ .type = .i32, .kind = .{ .reg = .eax } },
                         .unused,
                         .unused,
@@ -103246,7 +103194,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixsfsi" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fixsfsi" } },
                         .{ .type = .i32, .kind = .{ .reg = .eax } },
                         .unused,
                         .unused,
@@ -103577,7 +103525,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixdfsi" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fixdfsi" } },
                         .{ .type = .i32, .kind = .{ .reg = .eax } },
                         .unused,
                         .unused,
@@ -103608,7 +103556,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixdfsi" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fixdfsi" } },
                         .{ .type = .i32, .kind = .{ .reg = .eax } },
                         .unused,
                         .unused,
@@ -103639,7 +103587,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixdfsi" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fixdfsi" } },
                         .{ .type = .i32, .kind = .{ .reg = .eax } },
                         .unused,
                         .unused,
@@ -103837,7 +103785,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixdfsi" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fixdfsi" } },
                         .{ .type = .i32, .kind = .{ .reg = .eax } },
                         .unused,
                         .unused,
@@ -103868,7 +103816,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsdfsi" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fixunsdfsi" } },
                         .{ .type = .u32, .kind = .{ .reg = .eax } },
                         .unused,
                         .unused,
@@ -103899,7 +103847,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixdfsi" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fixdfsi" } },
                         .{ .type = .i32, .kind = .{ .reg = .eax } },
                         .unused,
                         .unused,
@@ -103930,7 +103878,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsdfsi" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fixunsdfsi" } },
                         .{ .type = .u32, .kind = .{ .reg = .eax } },
                         .unused,
                         .unused,
@@ -103961,7 +103909,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixdfsi" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fixdfsi" } },
                         .{ .type = .i32, .kind = .{ .reg = .eax } },
                         .unused,
                         .unused,
@@ -103993,7 +103941,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsdfsi" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fixunsdfsi" } },
                         .{ .type = .u32, .kind = .{ .reg = .eax } },
                         .unused,
                         .unused,
@@ -104118,7 +104066,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixdfdi" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fixdfdi" } },
                         .{ .type = .i64, .kind = .{ .reg = .rax } },
                         .unused,
                         .unused,
@@ -104149,7 +104097,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsdfdi" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fixunsdfdi" } },
                         .{ .type = .u64, .kind = .{ .reg = .rax } },
                         .unused,
                         .unused,
@@ -104180,7 +104128,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixdfdi" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fixdfdi" } },
                         .{ .type = .i64, .kind = .{ .reg = .rax } },
                         .unused,
                         .unused,
@@ -104211,7 +104159,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsdfdi" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fixunsdfdi" } },
                         .{ .type = .u64, .kind = .{ .reg = .rax } },
                         .unused,
                         .unused,
@@ -104242,7 +104190,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixdfdi" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fixdfdi" } },
                         .{ .type = .i64, .kind = .{ .reg = .rax } },
                         .unused,
                         .unused,
@@ -104274,7 +104222,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsdfdi" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fixunsdfdi" } },
                         .{ .type = .u64, .kind = .{ .reg = .rax } },
                         .unused,
                         .unused,
@@ -104306,7 +104254,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixdfti" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fixdfti" } },
                         .{ .type = .u64, .kind = .{ .reg = .rax } },
                         .{ .type = .i64, .kind = .{ .reg = .rdx } },
                         .unused,
@@ -104338,7 +104286,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsdfti" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fixunsdfti" } },
                         .{ .type = .u64, .kind = .{ .reg = .rax } },
                         .{ .type = .u64, .kind = .{ .reg = .rdx } },
                         .unused,
@@ -104370,7 +104318,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixdfti" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fixdfti" } },
                         .{ .type = .u64, .kind = .{ .reg = .rax } },
                         .{ .type = .i64, .kind = .{ .reg = .rdx } },
                         .unused,
@@ -104402,7 +104350,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsdfti" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fixunsdfti" } },
                         .{ .type = .u64, .kind = .{ .reg = .rax } },
                         .{ .type = .u64, .kind = .{ .reg = .rdx } },
                         .unused,
@@ -104434,7 +104382,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixdfti" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fixdfti" } },
                         .{ .type = .u64, .kind = .{ .reg = .rax } },
                         .{ .type = .i64, .kind = .{ .reg = .rdx } },
                         .unused,
@@ -104467,7 +104415,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsdfti" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fixunsdfti" } },
                         .{ .type = .u64, .kind = .{ .reg = .rax } },
                         .{ .type = .u64, .kind = .{ .reg = .rdx } },
                         .unused,
@@ -104503,7 +104451,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .usize, .kind = .{ .reg = .rdi } },
                         .{ .type = .usize, .kind = .{ .reg = .rsi } },
                         .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixdfei" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fixdfei" } },
                         .unused,
                         .unused,
                         .unused,
@@ -104537,7 +104485,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .usize, .kind = .{ .reg = .rdi } },
                         .{ .type = .usize, .kind = .{ .reg = .rsi } },
                         .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsdfei" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fixunsdfei" } },
                         .unused,
                         .unused,
                         .unused,
@@ -104571,7 +104519,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .usize, .kind = .{ .reg = .rdi } },
                         .{ .type = .usize, .kind = .{ .reg = .rsi } },
                         .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixdfei" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fixdfei" } },
                         .unused,
                         .unused,
                         .unused,
@@ -104605,7 +104553,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .usize, .kind = .{ .reg = .rdi } },
                         .{ .type = .usize, .kind = .{ .reg = .rsi } },
                         .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsdfei" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fixunsdfei" } },
                         .unused,
                         .unused,
                         .unused,
@@ -104639,7 +104587,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .usize, .kind = .{ .reg = .rdi } },
                         .{ .type = .usize, .kind = .{ .reg = .rsi } },
                         .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixdfei" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fixdfei" } },
                         .unused,
                         .unused,
                         .unused,
@@ -104674,7 +104622,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .usize, .kind = .{ .reg = .rdi } },
                         .{ .type = .usize, .kind = .{ .reg = .rsi } },
                         .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsdfei" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fixunsdfei" } },
                         .unused,
                         .unused,
                         .unused,
@@ -105695,7 +105643,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
                         .{ .type = .f80, .kind = .{ .frame = .call_frame } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsxfti" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fixunsxfti" } },
                         .{ .type = .u64, .kind = .{ .reg = .rax } },
                         .unused,
                         .unused,
@@ -105727,7 +105675,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
                         .{ .type = .f80, .kind = .{ .frame = .call_frame } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsxfti" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fixunsxfti" } },
                         .{ .type = .u64, .kind = .{ .reg = .rax } },
                         .unused,
                         .unused,
@@ -105759,7 +105707,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
                         .{ .type = .f80, .kind = .{ .frame = .call_frame } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsxfti" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fixunsxfti" } },
                         .{ .type = .u64, .kind = .{ .reg = .rax } },
                         .unused,
                         .unused,
@@ -105790,7 +105738,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
                         .{ .type = .f80, .kind = .{ .frame = .call_frame } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixxfti" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fixxfti" } },
                         .unused,
                         .unused,
                         .unused,
@@ -105818,7 +105766,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
                         .{ .type = .f80, .kind = .{ .frame = .call_frame } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsxfti" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fixunsxfti" } },
                         .unused,
                         .unused,
                         .unused,
@@ -105846,7 +105794,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
                         .{ .type = .f80, .kind = .{ .frame = .call_frame } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixxfti" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fixxfti" } },
                         .unused,
                         .unused,
                         .unused,
@@ -105874,7 +105822,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
                         .{ .type = .f80, .kind = .{ .frame = .call_frame } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsxfti" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fixunsxfti" } },
                         .unused,
                         .unused,
                         .unused,
@@ -105902,7 +105850,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
                         .{ .type = .f80, .kind = .{ .frame = .call_frame } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixxfti" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fixxfti" } },
                         .unused,
                         .unused,
                         .unused,
@@ -105930,7 +105878,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
                         .{ .type = .f80, .kind = .{ .frame = .call_frame } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsxfti" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fixunsxfti" } },
                         .unused,
                         .unused,
                         .unused,
@@ -105959,7 +105907,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
                         .{ .type = .f80, .kind = .{ .frame = .call_frame } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixxfti" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fixxfti" } },
                         .{ .type = .u64, .kind = .{ .reg = .rax } },
                         .{ .type = .i64, .kind = .{ .reg = .rdx } },
                         .unused,
@@ -105992,7 +105940,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
                         .{ .type = .f80, .kind = .{ .frame = .call_frame } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsxfti" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fixunsxfti" } },
                         .{ .type = .u64, .kind = .{ .reg = .rax } },
                         .{ .type = .u64, .kind = .{ .reg = .rdx } },
                         .unused,
@@ -106025,7 +105973,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
                         .{ .type = .f80, .kind = .{ .frame = .call_frame } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixxfti" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fixxfti" } },
                         .{ .type = .u64, .kind = .{ .reg = .rax } },
                         .{ .type = .i64, .kind = .{ .reg = .rdx } },
                         .unused,
@@ -106058,7 +106006,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
                         .{ .type = .f80, .kind = .{ .frame = .call_frame } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsxfti" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fixunsxfti" } },
                         .{ .type = .u64, .kind = .{ .reg = .rax } },
                         .{ .type = .u64, .kind = .{ .reg = .rdx } },
                         .unused,
@@ -106091,7 +106039,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
                         .{ .type = .f80, .kind = .{ .frame = .call_frame } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixxfti" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fixxfti" } },
                         .{ .type = .u64, .kind = .{ .reg = .rax } },
                         .{ .type = .i64, .kind = .{ .reg = .rdx } },
                         .unused,
@@ -106124,7 +106072,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
                         .{ .type = .f80, .kind = .{ .frame = .call_frame } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsxfti" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fixunsxfti" } },
                         .{ .type = .u64, .kind = .{ .reg = .rax } },
                         .{ .type = .u64, .kind = .{ .reg = .rdx } },
                         .unused,
@@ -106158,7 +106106,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .usize, .kind = .{ .reg = .rsi } },
                         .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
                         .{ .type = .f80, .kind = .{ .frame = .call_frame } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixxfei" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fixxfei" } },
                         .unused,
                         .unused,
                         .unused,
@@ -106188,7 +106136,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .usize, .kind = .{ .reg = .rsi } },
                         .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
                         .{ .type = .f80, .kind = .{ .frame = .call_frame } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsxfei" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fixunsxfei" } },
                         .unused,
                         .unused,
                         .unused,
@@ -106218,7 +106166,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .usize, .kind = .{ .reg = .rsi } },
                         .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
                         .{ .type = .f80, .kind = .{ .frame = .call_frame } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixxfei" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fixxfei" } },
                         .unused,
                         .unused,
                         .unused,
@@ -106248,7 +106196,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .usize, .kind = .{ .reg = .rsi } },
                         .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
                         .{ .type = .f80, .kind = .{ .frame = .call_frame } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsxfei" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fixunsxfei" } },
                         .unused,
                         .unused,
                         .unused,
@@ -106278,7 +106226,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .usize, .kind = .{ .reg = .rsi } },
                         .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
                         .{ .type = .f80, .kind = .{ .frame = .call_frame } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixxfei" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fixxfei" } },
                         .unused,
                         .unused,
                         .unused,
@@ -106308,7 +106256,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .usize, .kind = .{ .reg = .rsi } },
                         .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
                         .{ .type = .f80, .kind = .{ .frame = .call_frame } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsxfei" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fixunsxfei" } },
                         .unused,
                         .unused,
                         .unused,
@@ -106340,7 +106288,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .usize, .kind = .{ .reg = .rsi } },
                         .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
                         .{ .type = .f80, .kind = .{ .frame = .call_frame } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixxfei" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fixxfei" } },
                         .unused,
                         .unused,
                         .unused,
@@ -106375,7 +106323,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .usize, .kind = .{ .reg = .rsi } },
                         .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
                         .{ .type = .f80, .kind = .{ .frame = .call_frame } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsxfei" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fixunsxfei" } },
                         .unused,
                         .unused,
                         .unused,
@@ -106410,7 +106358,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .usize, .kind = .{ .reg = .rsi } },
                         .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
                         .{ .type = .f80, .kind = .{ .frame = .call_frame } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixxfei" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fixxfei" } },
                         .unused,
                         .unused,
                         .unused,
@@ -106445,7 +106393,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .usize, .kind = .{ .reg = .rsi } },
                         .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
                         .{ .type = .f80, .kind = .{ .frame = .call_frame } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsxfei" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fixunsxfei" } },
                         .unused,
                         .unused,
                         .unused,
@@ -106480,7 +106428,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .usize, .kind = .{ .reg = .rsi } },
                         .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
                         .{ .type = .f80, .kind = .{ .frame = .call_frame } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixxfei" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fixxfei" } },
                         .unused,
                         .unused,
                         .unused,
@@ -106515,7 +106463,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .usize, .kind = .{ .reg = .rsi } },
                         .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
                         .{ .type = .f80, .kind = .{ .frame = .call_frame } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsxfei" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fixunsxfei" } },
                         .unused,
                         .unused,
                         .unused,
@@ -106547,7 +106495,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixtfsi" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fixtfsi" } },
                         .{ .type = .i32, .kind = .{ .reg = .eax } },
                         .unused,
                         .unused,
@@ -106580,7 +106528,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixtfsi" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fixtfsi" } },
                         .{ .type = .i32, .kind = .{ .reg = .eax } },
                         .unused,
                         .unused,
@@ -106613,7 +106561,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixtfsi" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fixtfsi" } },
                         .{ .type = .i32, .kind = .{ .reg = .eax } },
                         .unused,
                         .unused,
@@ -106646,7 +106594,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixtfsi" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fixtfsi" } },
                         .{ .type = .i32, .kind = .{ .reg = .eax } },
                         .unused,
                         .unused,
@@ -106679,7 +106627,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixtfsi" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fixtfsi" } },
                         .{ .type = .i32, .kind = .{ .reg = .eax } },
                         .unused,
                         .unused,
@@ -106712,7 +106660,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixtfsi" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fixtfsi" } },
                         .{ .type = .i32, .kind = .{ .reg = .eax } },
                         .unused,
                         .unused,
@@ -106744,7 +106692,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixtfsi" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fixtfsi" } },
                         .{ .type = .i32, .kind = .{ .reg = .eax } },
                         .unused,
                         .unused,
@@ -106775,7 +106723,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixtfsi" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fixtfsi" } },
                         .{ .type = .i32, .kind = .{ .reg = .eax } },
                         .unused,
                         .unused,
@@ -106806,7 +106754,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixtfsi" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fixtfsi" } },
                         .{ .type = .i32, .kind = .{ .reg = .eax } },
                         .unused,
                         .unused,
@@ -106835,7 +106783,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     },
                     .call_frame = .{ .alignment = .@"16" },
                     .extra_temps = .{
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixtfsi" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fixtfsi" } },
                         .unused,
                         .unused,
                         .unused,
@@ -106861,7 +106809,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     },
                     .call_frame = .{ .alignment = .@"16" },
                     .extra_temps = .{
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunstfsi" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fixunstfsi" } },
                         .unused,
                         .unused,
                         .unused,
@@ -106889,7 +106837,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixtfsi" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fixtfsi" } },
                         .{ .type = .i32, .kind = .{ .reg = .eax } },
                         .unused,
                         .unused,
@@ -106920,7 +106868,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunstfsi" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fixunstfsi" } },
                         .{ .type = .u32, .kind = .{ .reg = .eax } },
                         .unused,
                         .unused,
@@ -106951,7 +106899,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixtfsi" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fixtfsi" } },
                         .{ .type = .i32, .kind = .{ .reg = .eax } },
                         .unused,
                         .unused,
@@ -106982,7 +106930,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunstfsi" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fixunstfsi" } },
                         .{ .type = .u32, .kind = .{ .reg = .eax } },
                         .unused,
                         .unused,
@@ -107013,7 +106961,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixtfsi" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fixtfsi" } },
                         .{ .type = .i32, .kind = .{ .reg = .eax } },
                         .unused,
                         .unused,
@@ -107044,7 +106992,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunstfsi" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fixunstfsi" } },
                         .{ .type = .u32, .kind = .{ .reg = .eax } },
                         .unused,
                         .unused,
@@ -107073,7 +107021,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     },
                     .call_frame = .{ .alignment = .@"16" },
                     .extra_temps = .{
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixtfdi" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fixtfdi" } },
                         .unused,
                         .unused,
                         .unused,
@@ -107099,7 +107047,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     },
                     .call_frame = .{ .alignment = .@"16" },
                     .extra_temps = .{
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunstfdi" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fixunstfdi" } },
                         .unused,
                         .unused,
                         .unused,
@@ -107127,7 +107075,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixtfdi" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fixtfdi" } },
                         .{ .type = .i64, .kind = .{ .reg = .rax } },
                         .unused,
                         .unused,
@@ -107158,7 +107106,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunstfdi" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fixunstfdi" } },
                         .{ .type = .u64, .kind = .{ .reg = .rax } },
                         .unused,
                         .unused,
@@ -107189,7 +107137,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixtfdi" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fixtfdi" } },
                         .{ .type = .i64, .kind = .{ .reg = .rax } },
                         .unused,
                         .unused,
@@ -107220,7 +107168,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunstfdi" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fixunstfdi" } },
                         .{ .type = .u64, .kind = .{ .reg = .rax } },
                         .unused,
                         .unused,
@@ -107251,7 +107199,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixtfdi" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fixtfdi" } },
                         .{ .type = .i64, .kind = .{ .reg = .rax } },
                         .unused,
                         .unused,
@@ -107282,7 +107230,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunstfdi" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fixunstfdi" } },
                         .{ .type = .u64, .kind = .{ .reg = .rax } },
                         .unused,
                         .unused,
@@ -107311,7 +107259,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     },
                     .call_frame = .{ .alignment = .@"16" },
                     .extra_temps = .{
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixtfti" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fixtfti" } },
                         .unused,
                         .unused,
                         .unused,
@@ -107337,7 +107285,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     },
                     .call_frame = .{ .alignment = .@"16" },
                     .extra_temps = .{
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunstfti" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fixunstfti" } },
                         .unused,
                         .unused,
                         .unused,
@@ -107365,7 +107313,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixtfti" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fixtfti" } },
                         .{ .type = .u64, .kind = .{ .reg = .rax } },
                         .{ .type = .i64, .kind = .{ .reg = .rdx } },
                         .unused,
@@ -107397,7 +107345,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunstfti" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fixunstfti" } },
                         .{ .type = .u64, .kind = .{ .reg = .rax } },
                         .{ .type = .u64, .kind = .{ .reg = .rdx } },
                         .unused,
@@ -107429,7 +107377,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixtfti" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fixtfti" } },
                         .{ .type = .u64, .kind = .{ .reg = .rax } },
                         .{ .type = .i64, .kind = .{ .reg = .rdx } },
                         .unused,
@@ -107461,7 +107409,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunstfti" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fixunstfti" } },
                         .{ .type = .u64, .kind = .{ .reg = .rax } },
                         .{ .type = .u64, .kind = .{ .reg = .rdx } },
                         .unused,
@@ -107493,7 +107441,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixtfti" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fixtfti" } },
                         .{ .type = .u64, .kind = .{ .reg = .rax } },
                         .{ .type = .i64, .kind = .{ .reg = .rdx } },
                         .unused,
@@ -107525,7 +107473,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunstfti" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fixunstfti" } },
                         .{ .type = .u64, .kind = .{ .reg = .rax } },
                         .{ .type = .u64, .kind = .{ .reg = .rdx } },
                         .unused,
@@ -107557,7 +107505,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .usize, .kind = .{ .reg = .rdi } },
                         .{ .type = .usize, .kind = .{ .reg = .rsi } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixtfei" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fixtfei" } },
                         .unused,
                         .unused,
                         .unused,
@@ -107585,7 +107533,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .usize, .kind = .{ .reg = .rdi } },
                         .{ .type = .usize, .kind = .{ .reg = .rsi } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunstfei" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fixunstfei" } },
                         .unused,
                         .unused,
                         .unused,
@@ -107616,7 +107564,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .usize, .kind = .{ .reg = .rdi } },
                         .{ .type = .usize, .kind = .{ .reg = .rsi } },
                         .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixtfei" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fixtfei" } },
                         .unused,
                         .unused,
                         .unused,
@@ -107650,7 +107598,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .usize, .kind = .{ .reg = .rdi } },
                         .{ .type = .usize, .kind = .{ .reg = .rsi } },
                         .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunstfei" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fixunstfei" } },
                         .unused,
                         .unused,
                         .unused,
@@ -107684,7 +107632,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .usize, .kind = .{ .reg = .rdi } },
                         .{ .type = .usize, .kind = .{ .reg = .rsi } },
                         .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixtfei" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fixtfei" } },
                         .unused,
                         .unused,
                         .unused,
@@ -107718,7 +107666,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .usize, .kind = .{ .reg = .rdi } },
                         .{ .type = .usize, .kind = .{ .reg = .rsi } },
                         .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunstfei" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fixunstfei" } },
                         .unused,
                         .unused,
                         .unused,
@@ -107752,7 +107700,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .usize, .kind = .{ .reg = .rdi } },
                         .{ .type = .usize, .kind = .{ .reg = .rsi } },
                         .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixtfei" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fixtfei" } },
                         .unused,
                         .unused,
                         .unused,
@@ -107786,7 +107734,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .usize, .kind = .{ .reg = .rdi } },
                         .{ .type = .usize, .kind = .{ .reg = .rsi } },
                         .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunstfei" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fixunstfei" } },
                         .unused,
                         .unused,
                         .unused,
@@ -108034,7 +107982,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     },
                     .call_frame = .{ .alignment = .@"16" },
                     .extra_temps = .{
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsihf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__floatsihf" } },
                         .unused,
                         .unused,
                         .unused,
@@ -108061,7 +108009,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     },
                     .call_frame = .{ .alignment = .@"16" },
                     .extra_temps = .{
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsihf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__floatunsihf" } },
                         .unused,
                         .unused,
                         .unused,
@@ -108088,7 +108036,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     },
                     .call_frame = .{ .alignment = .@"16" },
                     .extra_temps = .{
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsihf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__floatsihf" } },
                         .unused,
                         .unused,
                         .unused,
@@ -108115,7 +108063,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     },
                     .call_frame = .{ .alignment = .@"16" },
                     .extra_temps = .{
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsihf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__floatunsihf" } },
                         .unused,
                         .unused,
                         .unused,
@@ -108142,7 +108090,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     },
                     .call_frame = .{ .alignment = .@"16" },
                     .extra_temps = .{
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsihf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__floatsihf" } },
                         .unused,
                         .unused,
                         .unused,
@@ -108168,7 +108116,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     },
                     .call_frame = .{ .alignment = .@"16" },
                     .extra_temps = .{
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsihf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__floatunsihf" } },
                         .unused,
                         .unused,
                         .unused,
@@ -108194,7 +108142,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     },
                     .call_frame = .{ .alignment = .@"16" },
                     .extra_temps = .{
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatdihf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__floatdihf" } },
                         .unused,
                         .unused,
                         .unused,
@@ -108220,7 +108168,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     },
                     .call_frame = .{ .alignment = .@"16" },
                     .extra_temps = .{
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatundihf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__floatundihf" } },
                         .unused,
                         .unused,
                         .unused,
@@ -108246,7 +108194,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     },
                     .call_frame = .{ .alignment = .@"16" },
                     .extra_temps = .{
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floattihf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__floattihf" } },
                         .unused,
                         .unused,
                         .unused,
@@ -108272,7 +108220,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     },
                     .call_frame = .{ .alignment = .@"16" },
                     .extra_temps = .{
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuntihf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__floatuntihf" } },
                         .unused,
                         .unused,
                         .unused,
@@ -108300,7 +108248,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .usize, .kind = .{ .reg = .rdi } },
                         .{ .type = .usize, .kind = .{ .reg = .rsi } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floateihf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__floateihf" } },
                         .unused,
                         .unused,
                         .unused,
@@ -108328,7 +108276,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .usize, .kind = .{ .reg = .rdi } },
                         .{ .type = .usize, .kind = .{ .reg = .rsi } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuneihf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__floatuneihf" } },
                         .unused,
                         .unused,
                         .unused,
@@ -108532,7 +108480,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .i32, .kind = .{ .reg = .edi } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsihf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__floatsihf" } },
                         .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
                         .unused,
                         .unused,
@@ -108563,7 +108511,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .i32, .kind = .{ .reg = .edi } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsihf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__floatsihf" } },
                         .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
                         .unused,
                         .unused,
@@ -108594,7 +108542,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .i32, .kind = .{ .reg = .edi } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsihf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__floatsihf" } },
                         .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
                         .unused,
                         .unused,
@@ -108625,7 +108573,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .i32, .kind = .{ .reg = .edi } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsihf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__floatsihf" } },
                         .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
                         .unused,
                         .unused,
@@ -108656,7 +108604,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .i32, .kind = .{ .reg = .edi } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsihf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__floatsihf" } },
                         .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
                         .unused,
                         .unused,
@@ -108688,7 +108636,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .i32, .kind = .{ .reg = .edi } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsihf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__floatsihf" } },
                         .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
                         .unused,
                         .unused,
@@ -108720,7 +108668,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .i32, .kind = .{ .reg = .edi } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsihf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__floatsihf" } },
                         .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
                         .{ .type = .f32, .kind = .mem },
                         .unused,
@@ -108753,7 +108701,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .i32, .kind = .{ .reg = .edi } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsihf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__floatsihf" } },
                         .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
                         .{ .type = .f32, .kind = .mem },
                         .unused,
@@ -108786,7 +108734,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .u32, .kind = .{ .reg = .edi } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsihf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__floatunsihf" } },
                         .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
                         .unused,
                         .unused,
@@ -108817,7 +108765,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .u32, .kind = .{ .reg = .edi } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsihf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__floatunsihf" } },
                         .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
                         .unused,
                         .unused,
@@ -108848,7 +108796,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .u32, .kind = .{ .reg = .edi } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsihf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__floatunsihf" } },
                         .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
                         .unused,
                         .unused,
@@ -108879,7 +108827,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .u32, .kind = .{ .reg = .edi } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsihf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__floatunsihf" } },
                         .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
                         .unused,
                         .unused,
@@ -108910,7 +108858,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .u32, .kind = .{ .reg = .edi } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsihf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__floatunsihf" } },
                         .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
                         .unused,
                         .unused,
@@ -108942,7 +108890,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .u32, .kind = .{ .reg = .edi } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsihf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__floatunsihf" } },
                         .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
                         .unused,
                         .unused,
@@ -108974,7 +108922,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .u32, .kind = .{ .reg = .edi } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsihf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__floatunsihf" } },
                         .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
                         .{ .type = .f32, .kind = .mem },
                         .unused,
@@ -109007,7 +108955,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .u32, .kind = .{ .reg = .edi } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsihf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__floatunsihf" } },
                         .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
                         .{ .type = .f32, .kind = .mem },
                         .unused,
@@ -109216,7 +109164,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .i32, .kind = .{ .reg = .edi } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsihf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__floatsihf" } },
                         .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
                         .unused,
                         .unused,
@@ -109247,7 +109195,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .i32, .kind = .{ .reg = .edi } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsihf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__floatsihf" } },
                         .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
                         .unused,
                         .unused,
@@ -109278,7 +109226,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .i32, .kind = .{ .reg = .edi } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsihf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__floatsihf" } },
                         .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
                         .unused,
                         .unused,
@@ -109310,7 +109258,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .i32, .kind = .{ .reg = .edi } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsihf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__floatsihf" } },
                         .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
                         .{ .type = .f32, .kind = .mem },
                         .unused,
@@ -109343,7 +109291,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .u32, .kind = .{ .reg = .edi } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsihf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__floatunsihf" } },
                         .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
                         .unused,
                         .unused,
@@ -109374,7 +109322,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .u32, .kind = .{ .reg = .edi } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsihf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__floatunsihf" } },
                         .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
                         .unused,
                         .unused,
@@ -109405,7 +109353,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .u32, .kind = .{ .reg = .edi } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsihf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__floatunsihf" } },
                         .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
                         .unused,
                         .unused,
@@ -109437,7 +109385,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .u32, .kind = .{ .reg = .edi } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsihf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__floatunsihf" } },
                         .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
                         .{ .type = .f32, .kind = .mem },
                         .unused,
@@ -109554,7 +109502,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .i32, .kind = .{ .reg = .edi } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsihf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__floatsihf" } },
                         .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
                         .unused,
                         .unused,
@@ -109585,7 +109533,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .i32, .kind = .{ .reg = .edi } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsihf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__floatsihf" } },
                         .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
                         .unused,
                         .unused,
@@ -109616,7 +109564,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .i32, .kind = .{ .reg = .edi } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsihf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__floatsihf" } },
                         .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
                         .unused,
                         .unused,
@@ -109648,7 +109596,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .i32, .kind = .{ .reg = .edi } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsihf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__floatsihf" } },
                         .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
                         .{ .type = .f32, .kind = .mem },
                         .unused,
@@ -109681,7 +109629,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .u32, .kind = .{ .reg = .edi } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsihf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__floatunsihf" } },
                         .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
                         .unused,
                         .unused,
@@ -109712,7 +109660,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .u32, .kind = .{ .reg = .edi } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsihf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__floatunsihf" } },
                         .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
                         .unused,
                         .unused,
@@ -109743,7 +109691,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .u32, .kind = .{ .reg = .edi } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsihf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__floatunsihf" } },
                         .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
                         .unused,
                         .unused,
@@ -109775,7 +109723,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .u32, .kind = .{ .reg = .edi } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsihf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__floatunsihf" } },
                         .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
                         .{ .type = .f32, .kind = .mem },
                         .unused,
@@ -109839,7 +109787,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .i64, .kind = .{ .reg = .rdi } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatdihf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__floatdihf" } },
                         .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
                         .unused,
                         .unused,
@@ -109870,7 +109818,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .i64, .kind = .{ .reg = .rdi } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatdihf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__floatdihf" } },
                         .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
                         .unused,
                         .unused,
@@ -109901,7 +109849,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .i64, .kind = .{ .reg = .rdi } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatdihf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__floatdihf" } },
                         .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
                         .unused,
                         .unused,
@@ -109933,7 +109881,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .i64, .kind = .{ .reg = .rdi } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatdihf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__floatdihf" } },
                         .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
                         .{ .type = .f32, .kind = .mem },
                         .unused,
@@ -109966,7 +109914,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .u64, .kind = .{ .reg = .rdi } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatundihf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__floatundihf" } },
                         .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
                         .unused,
                         .unused,
@@ -109997,7 +109945,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .u64, .kind = .{ .reg = .rdi } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatundihf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__floatundihf" } },
                         .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
                         .unused,
                         .unused,
@@ -110028,7 +109976,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .u64, .kind = .{ .reg = .rdi } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatundihf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__floatundihf" } },
                         .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
                         .unused,
                         .unused,
@@ -110060,7 +110008,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .u64, .kind = .{ .reg = .rdi } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatundihf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__floatundihf" } },
                         .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
                         .{ .type = .f32, .kind = .mem },
                         .unused,
@@ -110094,7 +110042,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .u64, .kind = .{ .reg = .rdi } },
                         .{ .type = .i64, .kind = .{ .reg = .rsi } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floattihf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__floattihf" } },
                         .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
                         .unused,
                         .unused,
@@ -110126,7 +110074,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .u64, .kind = .{ .reg = .rdi } },
                         .{ .type = .i64, .kind = .{ .reg = .rsi } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floattihf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__floattihf" } },
                         .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
                         .unused,
                         .unused,
@@ -110158,7 +110106,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .u64, .kind = .{ .reg = .rdi } },
                         .{ .type = .i64, .kind = .{ .reg = .rsi } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floattihf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__floattihf" } },
                         .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
                         .unused,
                         .unused,
@@ -110191,7 +110139,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .u64, .kind = .{ .reg = .rdi } },
                         .{ .type = .i64, .kind = .{ .reg = .rsi } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floattihf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__floattihf" } },
                         .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
                         .{ .type = .f32, .kind = .mem },
                         .unused,
@@ -110225,7 +110173,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .u64, .kind = .{ .reg = .rdi } },
                         .{ .type = .u64, .kind = .{ .reg = .rsi } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuntihf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__floatuntihf" } },
                         .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
                         .unused,
                         .unused,
@@ -110257,7 +110205,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .u64, .kind = .{ .reg = .rdi } },
                         .{ .type = .u64, .kind = .{ .reg = .rsi } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuntihf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__floatuntihf" } },
                         .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
                         .unused,
                         .unused,
@@ -110289,7 +110237,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .u64, .kind = .{ .reg = .rdi } },
                         .{ .type = .u64, .kind = .{ .reg = .rsi } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuntihf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__floatuntihf" } },
                         .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
                         .unused,
                         .unused,
@@ -110322,7 +110270,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .u64, .kind = .{ .reg = .rdi } },
                         .{ .type = .u64, .kind = .{ .reg = .rsi } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuntihf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__floatuntihf" } },
                         .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
                         .{ .type = .f32, .kind = .mem },
                         .unused,
@@ -110357,7 +110305,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .usize, .kind = .{ .reg = .rdi } },
                         .{ .type = .usize, .kind = .{ .reg = .rsi } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floateihf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__floateihf" } },
                         .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
                         .unused,
                         .unused,
@@ -110391,7 +110339,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .usize, .kind = .{ .reg = .rdi } },
                         .{ .type = .usize, .kind = .{ .reg = .rsi } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floateihf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__floateihf" } },
                         .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
                         .unused,
                         .unused,
@@ -110425,7 +110373,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .usize, .kind = .{ .reg = .rdi } },
                         .{ .type = .usize, .kind = .{ .reg = .rsi } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floateihf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__floateihf" } },
                         .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
                         .unused,
                         .unused,
@@ -110460,7 +110408,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .usize, .kind = .{ .reg = .rdi } },
                         .{ .type = .usize, .kind = .{ .reg = .rsi } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floateihf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__floateihf" } },
                         .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
                         .{ .type = .f32, .kind = .mem },
                         .unused,
@@ -110496,7 +110444,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .usize, .kind = .{ .reg = .rdi } },
                         .{ .type = .usize, .kind = .{ .reg = .rsi } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuneihf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__floatuneihf" } },
                         .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
                         .unused,
                         .unused,
@@ -110530,7 +110478,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .usize, .kind = .{ .reg = .rdi } },
                         .{ .type = .usize, .kind = .{ .reg = .rsi } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuneihf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__floatuneihf" } },
                         .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
                         .unused,
                         .unused,
@@ -110564,7 +110512,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .usize, .kind = .{ .reg = .rdi } },
                         .{ .type = .usize, .kind = .{ .reg = .rsi } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuneihf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__floatuneihf" } },
                         .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
                         .unused,
                         .unused,
@@ -110599,7 +110547,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .usize, .kind = .{ .reg = .rdi } },
                         .{ .type = .usize, .kind = .{ .reg = .rsi } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuneihf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__floatuneihf" } },
                         .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
                         .{ .type = .f32, .kind = .mem },
                         .unused,
@@ -111023,7 +110971,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     },
                     .call_frame = .{ .alignment = .@"16" },
                     .extra_temps = .{
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floattisf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__floattisf" } },
                         .unused,
                         .unused,
                         .unused,
@@ -111049,7 +110997,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     },
                     .call_frame = .{ .alignment = .@"16" },
                     .extra_temps = .{
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuntisf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__floatuntisf" } },
                         .unused,
                         .unused,
                         .unused,
@@ -111077,7 +111025,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .usize, .kind = .{ .reg = .rdi } },
                         .{ .type = .usize, .kind = .{ .reg = .rsi } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floateisf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__floateisf" } },
                         .unused,
                         .unused,
                         .unused,
@@ -111105,7 +111053,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .usize, .kind = .{ .reg = .rdi } },
                         .{ .type = .usize, .kind = .{ .reg = .rsi } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuneisf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__floatuneisf" } },
                         .unused,
                         .unused,
                         .unused,
@@ -111391,7 +111339,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .i32, .kind = .{ .reg = .edi } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsisf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__floatsisf" } },
                         .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
                         .unused,
                         .unused,
@@ -111422,7 +111370,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .i32, .kind = .{ .reg = .edi } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsisf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__floatsisf" } },
                         .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
                         .unused,
                         .unused,
@@ -111453,7 +111401,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .i32, .kind = .{ .reg = .edi } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsisf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__floatsisf" } },
                         .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
                         .unused,
                         .unused,
@@ -111484,7 +111432,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .i32, .kind = .{ .reg = .edi } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsisf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__floatsisf" } },
                         .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
                         .unused,
                         .unused,
@@ -111515,7 +111463,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .u32, .kind = .{ .reg = .edi } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsisf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__floatunsisf" } },
                         .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
                         .unused,
                         .unused,
@@ -111546,7 +111494,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .u32, .kind = .{ .reg = .edi } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsisf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__floatunsisf" } },
                         .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
                         .unused,
                         .unused,
@@ -111577,7 +111525,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .u32, .kind = .{ .reg = .edi } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsisf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__floatunsisf" } },
                         .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
                         .unused,
                         .unused,
@@ -111608,7 +111556,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .u32, .kind = .{ .reg = .edi } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsisf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__floatunsisf" } },
                         .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
                         .unused,
                         .unused,
@@ -111897,7 +111845,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .i32, .kind = .{ .reg = .edi } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsisf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__floatsisf" } },
                         .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
                         .unused,
                         .unused,
@@ -111928,7 +111876,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .i32, .kind = .{ .reg = .edi } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsisf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__floatsisf" } },
                         .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
                         .unused,
                         .unused,
@@ -111959,7 +111907,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .u32, .kind = .{ .reg = .edi } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsisf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__floatunsisf" } },
                         .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
                         .unused,
                         .unused,
@@ -111990,7 +111938,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .u32, .kind = .{ .reg = .edi } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsisf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__floatunsisf" } },
                         .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
                         .unused,
                         .unused,
@@ -112173,7 +112121,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .i32, .kind = .{ .reg = .edi } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsisf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__floatsisf" } },
                         .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
                         .unused,
                         .unused,
@@ -112204,7 +112152,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .i32, .kind = .{ .reg = .edi } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsisf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__floatsisf" } },
                         .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
                         .unused,
                         .unused,
@@ -112235,7 +112183,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .u32, .kind = .{ .reg = .edi } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsisf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__floatunsisf" } },
                         .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
                         .unused,
                         .unused,
@@ -112266,7 +112214,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .u32, .kind = .{ .reg = .edi } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsisf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__floatunsisf" } },
                         .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
                         .unused,
                         .unused,
@@ -112357,7 +112305,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .i64, .kind = .{ .reg = .rdi } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatdisf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__floatdisf" } },
                         .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
                         .unused,
                         .unused,
@@ -112388,7 +112336,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .i64, .kind = .{ .reg = .rdi } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatdisf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__floatdisf" } },
                         .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
                         .unused,
                         .unused,
@@ -112419,7 +112367,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .u64, .kind = .{ .reg = .rdi } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatundisf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__floatundisf" } },
                         .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
                         .unused,
                         .unused,
@@ -112450,7 +112398,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .u64, .kind = .{ .reg = .rdi } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatundisf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__floatundisf" } },
                         .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
                         .unused,
                         .unused,
@@ -112482,7 +112430,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .u64, .kind = .{ .reg = .rdi } },
                         .{ .type = .i64, .kind = .{ .reg = .rsi } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floattisf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__floattisf" } },
                         .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
                         .unused,
                         .unused,
@@ -112514,7 +112462,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .u64, .kind = .{ .reg = .rdi } },
                         .{ .type = .i64, .kind = .{ .reg = .rsi } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floattisf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__floattisf" } },
                         .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
                         .unused,
                         .unused,
@@ -112546,7 +112494,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .u64, .kind = .{ .reg = .rdi } },
                         .{ .type = .u64, .kind = .{ .reg = .rsi } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuntisf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__floatuntisf" } },
                         .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
                         .unused,
                         .unused,
@@ -112578,7 +112526,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .u64, .kind = .{ .reg = .rdi } },
                         .{ .type = .u64, .kind = .{ .reg = .rsi } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuntisf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__floatuntisf" } },
                         .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
                         .unused,
                         .unused,
@@ -112611,7 +112559,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .usize, .kind = .{ .reg = .rdi } },
                         .{ .type = .usize, .kind = .{ .reg = .rsi } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floateisf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__floateisf" } },
                         .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
                         .unused,
                         .unused,
@@ -112645,7 +112593,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .usize, .kind = .{ .reg = .rdi } },
                         .{ .type = .usize, .kind = .{ .reg = .rsi } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floateisf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__floateisf" } },
                         .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
                         .unused,
                         .unused,
@@ -112679,7 +112627,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .usize, .kind = .{ .reg = .rdi } },
                         .{ .type = .usize, .kind = .{ .reg = .rsi } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuneisf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__floatuneisf" } },
                         .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
                         .unused,
                         .unused,
@@ -112713,7 +112661,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .usize, .kind = .{ .reg = .rdi } },
                         .{ .type = .usize, .kind = .{ .reg = .rsi } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuneisf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__floatuneisf" } },
                         .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
                         .unused,
                         .unused,
@@ -113353,7 +113301,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     },
                     .call_frame = .{ .alignment = .@"16" },
                     .extra_temps = .{
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floattidf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__floattidf" } },
                         .unused,
                         .unused,
                         .unused,
@@ -113379,7 +113327,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     },
                     .call_frame = .{ .alignment = .@"16" },
                     .extra_temps = .{
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuntidf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__floatuntidf" } },
                         .unused,
                         .unused,
                         .unused,
@@ -113407,7 +113355,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .usize, .kind = .{ .reg = .rdi } },
                         .{ .type = .usize, .kind = .{ .reg = .rsi } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floateidf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__floateidf" } },
                         .unused,
                         .unused,
                         .unused,
@@ -113435,7 +113383,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .usize, .kind = .{ .reg = .rdi } },
                         .{ .type = .usize, .kind = .{ .reg = .rsi } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuneidf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__floatuneidf" } },
                         .unused,
                         .unused,
                         .unused,
@@ -113729,7 +113677,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .i32, .kind = .{ .reg = .edi } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsidf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__floatsidf" } },
                         .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
                         .unused,
                         .unused,
@@ -113760,7 +113708,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .i32, .kind = .{ .reg = .edi } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsidf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__floatsidf" } },
                         .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
                         .unused,
                         .unused,
@@ -113791,7 +113739,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .i32, .kind = .{ .reg = .edi } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsidf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__floatsidf" } },
                         .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
                         .unused,
                         .unused,
@@ -113822,7 +113770,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .i32, .kind = .{ .reg = .edi } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsidf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__floatsidf" } },
                         .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
                         .unused,
                         .unused,
@@ -113853,7 +113801,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .i32, .kind = .{ .reg = .edi } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsidf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__floatsidf" } },
                         .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
                         .unused,
                         .unused,
@@ -113884,7 +113832,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .i32, .kind = .{ .reg = .edi } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsidf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__floatsidf" } },
                         .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
                         .unused,
                         .unused,
@@ -113915,7 +113863,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .u32, .kind = .{ .reg = .edi } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsidf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__floatunsidf" } },
                         .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
                         .unused,
                         .unused,
@@ -113946,7 +113894,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .u32, .kind = .{ .reg = .edi } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsidf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__floatunsidf" } },
                         .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
                         .unused,
                         .unused,
@@ -113977,7 +113925,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .u32, .kind = .{ .reg = .edi } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsidf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__floatunsidf" } },
                         .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
                         .unused,
                         .unused,
@@ -114008,7 +113956,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .u32, .kind = .{ .reg = .edi } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsidf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__floatunsidf" } },
                         .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
                         .unused,
                         .unused,
@@ -114039,7 +113987,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .u32, .kind = .{ .reg = .edi } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsidf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__floatunsidf" } },
                         .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
                         .unused,
                         .unused,
@@ -114070,7 +114018,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .u32, .kind = .{ .reg = .edi } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsidf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__floatunsidf" } },
                         .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
                         .unused,
                         .unused,
@@ -114363,7 +114311,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .i32, .kind = .{ .reg = .edi } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsidf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__floatsidf" } },
                         .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
                         .unused,
                         .unused,
@@ -114394,7 +114342,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .i32, .kind = .{ .reg = .edi } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsidf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__floatsidf" } },
                         .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
                         .unused,
                         .unused,
@@ -114425,7 +114373,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .i32, .kind = .{ .reg = .edi } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsidf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__floatsidf" } },
                         .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
                         .unused,
                         .unused,
@@ -114456,7 +114404,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .u32, .kind = .{ .reg = .edi } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsidf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__floatunsidf" } },
                         .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
                         .unused,
                         .unused,
@@ -114487,7 +114435,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .u32, .kind = .{ .reg = .edi } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsidf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__floatunsidf" } },
                         .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
                         .unused,
                         .unused,
@@ -114518,7 +114466,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .u32, .kind = .{ .reg = .edi } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsidf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__floatunsidf" } },
                         .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
                         .unused,
                         .unused,
@@ -114672,7 +114620,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .i32, .kind = .{ .reg = .edi } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsidf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__floatsidf" } },
                         .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
                         .unused,
                         .unused,
@@ -114703,7 +114651,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .i32, .kind = .{ .reg = .edi } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsidf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__floatsidf" } },
                         .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
                         .unused,
                         .unused,
@@ -114734,7 +114682,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .i32, .kind = .{ .reg = .edi } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsidf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__floatsidf" } },
                         .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
                         .unused,
                         .unused,
@@ -114765,7 +114713,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .u32, .kind = .{ .reg = .edi } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsidf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__floatunsidf" } },
                         .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
                         .unused,
                         .unused,
@@ -114796,7 +114744,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .u32, .kind = .{ .reg = .edi } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsidf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__floatunsidf" } },
                         .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
                         .unused,
                         .unused,
@@ -114827,7 +114775,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .u32, .kind = .{ .reg = .edi } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsidf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__floatunsidf" } },
                         .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
                         .unused,
                         .unused,
@@ -114918,7 +114866,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .i64, .kind = .{ .reg = .rdi } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatdidf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__floatdidf" } },
                         .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
                         .unused,
                         .unused,
@@ -114949,7 +114897,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .i64, .kind = .{ .reg = .rdi } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatdidf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__floatdidf" } },
                         .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
                         .unused,
                         .unused,
@@ -114980,7 +114928,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .i64, .kind = .{ .reg = .rdi } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatdidf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__floatdidf" } },
                         .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
                         .unused,
                         .unused,
@@ -115011,7 +114959,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .u64, .kind = .{ .reg = .rdi } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatundidf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__floatundidf" } },
                         .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
                         .unused,
                         .unused,
@@ -115042,7 +114990,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .u64, .kind = .{ .reg = .rdi } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatundidf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__floatundidf" } },
                         .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
                         .unused,
                         .unused,
@@ -115073,7 +115021,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .u64, .kind = .{ .reg = .rdi } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatundidf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__floatundidf" } },
                         .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
                         .unused,
                         .unused,
@@ -115105,7 +115053,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .u64, .kind = .{ .reg = .rdi } },
                         .{ .type = .i64, .kind = .{ .reg = .rsi } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floattidf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__floattidf" } },
                         .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
                         .unused,
                         .unused,
@@ -115137,7 +115085,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .u64, .kind = .{ .reg = .rdi } },
                         .{ .type = .i64, .kind = .{ .reg = .rsi } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floattidf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__floattidf" } },
                         .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
                         .unused,
                         .unused,
@@ -115169,7 +115117,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .u64, .kind = .{ .reg = .rdi } },
                         .{ .type = .i64, .kind = .{ .reg = .rsi } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floattidf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__floattidf" } },
                         .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
                         .unused,
                         .unused,
@@ -115201,7 +115149,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .u64, .kind = .{ .reg = .rdi } },
                         .{ .type = .u64, .kind = .{ .reg = .rsi } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuntidf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__floatuntidf" } },
                         .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
                         .unused,
                         .unused,
@@ -115233,7 +115181,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .u64, .kind = .{ .reg = .rdi } },
                         .{ .type = .u64, .kind = .{ .reg = .rsi } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuntidf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__floatuntidf" } },
                         .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
                         .unused,
                         .unused,
@@ -115265,7 +115213,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .u64, .kind = .{ .reg = .rdi } },
                         .{ .type = .u64, .kind = .{ .reg = .rsi } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuntidf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__floatuntidf" } },
                         .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
                         .unused,
                         .unused,
@@ -115298,7 +115246,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .usize, .kind = .{ .reg = .rdi } },
                         .{ .type = .usize, .kind = .{ .reg = .rsi } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floateidf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__floateidf" } },
                         .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
                         .unused,
                         .unused,
@@ -115332,7 +115280,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .usize, .kind = .{ .reg = .rdi } },
                         .{ .type = .usize, .kind = .{ .reg = .rsi } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floateidf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__floateidf" } },
                         .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
                         .unused,
                         .unused,
@@ -115366,7 +115314,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .usize, .kind = .{ .reg = .rdi } },
                         .{ .type = .usize, .kind = .{ .reg = .rsi } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floateidf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__floateidf" } },
                         .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
                         .unused,
                         .unused,
@@ -115400,7 +115348,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .usize, .kind = .{ .reg = .rdi } },
                         .{ .type = .usize, .kind = .{ .reg = .rsi } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuneidf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__floatuneidf" } },
                         .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
                         .unused,
                         .unused,
@@ -115434,7 +115382,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .usize, .kind = .{ .reg = .rdi } },
                         .{ .type = .usize, .kind = .{ .reg = .rsi } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuneidf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__floatuneidf" } },
                         .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
                         .unused,
                         .unused,
@@ -115468,7 +115416,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .usize, .kind = .{ .reg = .rdi } },
                         .{ .type = .usize, .kind = .{ .reg = .rsi } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuneidf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__floatuneidf" } },
                         .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
                         .unused,
                         .unused,
@@ -115715,7 +115663,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     },
                     .call_frame = .{ .alignment = .@"16" },
                     .extra_temps = .{
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floattixf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__floattixf" } },
                         .unused,
                         .unused,
                         .unused,
@@ -115741,7 +115689,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     },
                     .call_frame = .{ .alignment = .@"16" },
                     .extra_temps = .{
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuntixf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__floatuntixf" } },
                         .unused,
                         .unused,
                         .unused,
@@ -115769,7 +115717,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .usize, .kind = .{ .reg = .rdi } },
                         .{ .type = .usize, .kind = .{ .reg = .rsi } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floateixf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__floateixf" } },
                         .unused,
                         .unused,
                         .unused,
@@ -115797,7 +115745,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .usize, .kind = .{ .reg = .rdi } },
                         .{ .type = .usize, .kind = .{ .reg = .rsi } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuneixf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__floatuneixf" } },
                         .unused,
                         .unused,
                         .unused,
@@ -115958,7 +115906,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .i32, .kind = .{ .reg = .edi } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsixf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__floatsixf" } },
                         .{ .type = .f80, .kind = .{ .reg = .st7 } },
                         .unused,
                         .unused,
@@ -115992,7 +115940,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .i32, .kind = .{ .reg = .edi } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsixf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__floatsixf" } },
                         .{ .type = .f80, .kind = .{ .reg = .st7 } },
                         .unused,
                         .unused,
@@ -116026,7 +115974,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .u32, .kind = .{ .reg = .edi } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsixf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__floatunsixf" } },
                         .{ .type = .f80, .kind = .{ .reg = .st7 } },
                         .unused,
                         .unused,
@@ -116060,7 +116008,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .u32, .kind = .{ .reg = .edi } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsixf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__floatunsixf" } },
                         .{ .type = .f80, .kind = .{ .reg = .st7 } },
                         .unused,
                         .unused,
@@ -116122,7 +116070,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .i32, .kind = .{ .reg = .edi } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsixf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__floatsixf" } },
                         .{ .type = .f80, .kind = .{ .reg = .st7 } },
                         .unused,
                         .unused,
@@ -116154,7 +116102,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .u32, .kind = .{ .reg = .edi } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsixf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__floatunsixf" } },
                         .{ .type = .f80, .kind = .{ .reg = .st7 } },
                         .unused,
                         .unused,
@@ -116215,7 +116163,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .i32, .kind = .{ .reg = .edi } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsixf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__floatsixf" } },
                         .{ .type = .f80, .kind = .{ .reg = .st7 } },
                         .unused,
                         .unused,
@@ -116247,7 +116195,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .u32, .kind = .{ .reg = .edi } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsixf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__floatunsixf" } },
                         .{ .type = .f80, .kind = .{ .reg = .st7 } },
                         .unused,
                         .unused,
@@ -116308,7 +116256,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .i64, .kind = .{ .reg = .rdi } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatdixf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__floatdixf" } },
                         .{ .type = .f80, .kind = .{ .reg = .st7 } },
                         .unused,
                         .unused,
@@ -116340,7 +116288,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .u64, .kind = .{ .reg = .rdi } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatundixf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__floatundixf" } },
                         .{ .type = .f80, .kind = .{ .reg = .st7 } },
                         .unused,
                         .unused,
@@ -116373,7 +116321,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .u64, .kind = .{ .reg = .rdi } },
                         .{ .type = .i64, .kind = .{ .reg = .rsi } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floattixf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__floattixf" } },
                         .{ .type = .f80, .kind = .{ .reg = .st7 } },
                         .unused,
                         .unused,
@@ -116406,7 +116354,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .u64, .kind = .{ .reg = .rdi } },
                         .{ .type = .u64, .kind = .{ .reg = .rsi } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuntixf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__floatuntixf" } },
                         .{ .type = .f80, .kind = .{ .reg = .st7 } },
                         .unused,
                         .unused,
@@ -116440,7 +116388,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .usize, .kind = .{ .reg = .rdi } },
                         .{ .type = .usize, .kind = .{ .reg = .rsi } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floateixf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__floateixf" } },
                         .{ .type = .f80, .kind = .{ .reg = .st7 } },
                         .unused,
                         .unused,
@@ -116475,7 +116423,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .usize, .kind = .{ .reg = .rdi } },
                         .{ .type = .usize, .kind = .{ .reg = .rsi } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuneixf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__floatuneixf" } },
                         .{ .type = .f80, .kind = .{ .reg = .st7 } },
                         .unused,
                         .unused,
@@ -116508,7 +116456,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .call_frame = .{ .alignment = .@"16" },
                     .extra_temps = .{
                         .{ .type = .i32, .kind = .{ .reg = .edi } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsitf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__floatsitf" } },
                         .unused,
                         .unused,
                         .unused,
@@ -116536,7 +116484,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .call_frame = .{ .alignment = .@"16" },
                     .extra_temps = .{
                         .{ .type = .u32, .kind = .{ .reg = .edi } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsitf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__floatunsitf" } },
                         .unused,
                         .unused,
                         .unused,
@@ -116564,7 +116512,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .call_frame = .{ .alignment = .@"16" },
                     .extra_temps = .{
                         .{ .type = .i32, .kind = .{ .reg = .edi } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsitf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__floatsitf" } },
                         .unused,
                         .unused,
                         .unused,
@@ -116592,7 +116540,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .call_frame = .{ .alignment = .@"16" },
                     .extra_temps = .{
                         .{ .type = .u32, .kind = .{ .reg = .edi } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsitf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__floatunsitf" } },
                         .unused,
                         .unused,
                         .unused,
@@ -116618,7 +116566,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     },
                     .call_frame = .{ .alignment = .@"16" },
                     .extra_temps = .{
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsitf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__floatsitf" } },
                         .unused,
                         .unused,
                         .unused,
@@ -116644,7 +116592,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     },
                     .call_frame = .{ .alignment = .@"16" },
                     .extra_temps = .{
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsitf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__floatunsitf" } },
                         .unused,
                         .unused,
                         .unused,
@@ -116670,7 +116618,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     },
                     .call_frame = .{ .alignment = .@"16" },
                     .extra_temps = .{
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatditf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__floatditf" } },
                         .unused,
                         .unused,
                         .unused,
@@ -116696,7 +116644,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     },
                     .call_frame = .{ .alignment = .@"16" },
                     .extra_temps = .{
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunditf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__floatunditf" } },
                         .unused,
                         .unused,
                         .unused,
@@ -116722,7 +116670,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     },
                     .call_frame = .{ .alignment = .@"16" },
                     .extra_temps = .{
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floattitf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__floattitf" } },
                         .unused,
                         .unused,
                         .unused,
@@ -116748,7 +116696,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     },
                     .call_frame = .{ .alignment = .@"16" },
                     .extra_temps = .{
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuntitf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__floatuntitf" } },
                         .unused,
                         .unused,
                         .unused,
@@ -116776,7 +116724,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .usize, .kind = .{ .reg = .rdi } },
                         .{ .type = .usize, .kind = .{ .reg = .rsi } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floateitf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__floateitf" } },
                         .unused,
                         .unused,
                         .unused,
@@ -116804,7 +116752,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .usize, .kind = .{ .reg = .rdi } },
                         .{ .type = .usize, .kind = .{ .reg = .rsi } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuneitf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__floatuneitf" } },
                         .unused,
                         .unused,
                         .unused,
@@ -116833,7 +116781,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .i32, .kind = .{ .reg = .edi } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsitf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__floatsitf" } },
                         .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
                         .unused,
                         .unused,
@@ -116866,7 +116814,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .i32, .kind = .{ .reg = .edi } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsitf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__floatsitf" } },
                         .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
                         .unused,
                         .unused,
@@ -116899,7 +116847,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .i32, .kind = .{ .reg = .edi } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsitf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__floatsitf" } },
                         .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
                         .unused,
                         .unused,
@@ -116932,7 +116880,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .i32, .kind = .{ .reg = .edi } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsitf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__floatsitf" } },
                         .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
                         .unused,
                         .unused,
@@ -116965,7 +116913,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .i32, .kind = .{ .reg = .edi } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsitf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__floatsitf" } },
                         .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
                         .unused,
                         .unused,
@@ -116998,7 +116946,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .i32, .kind = .{ .reg = .edi } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsitf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__floatsitf" } },
                         .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
                         .unused,
                         .unused,
@@ -117031,7 +116979,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .u32, .kind = .{ .reg = .edi } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsitf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__floatunsitf" } },
                         .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
                         .unused,
                         .unused,
@@ -117064,7 +117012,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .u32, .kind = .{ .reg = .edi } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsitf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__floatunsitf" } },
                         .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
                         .unused,
                         .unused,
@@ -117097,7 +117045,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .u32, .kind = .{ .reg = .edi } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsitf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__floatunsitf" } },
                         .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
                         .unused,
                         .unused,
@@ -117130,7 +117078,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .u32, .kind = .{ .reg = .edi } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsitf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__floatunsitf" } },
                         .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
                         .unused,
                         .unused,
@@ -117163,7 +117111,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .u32, .kind = .{ .reg = .edi } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsitf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__floatunsitf" } },
                         .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
                         .unused,
                         .unused,
@@ -117196,7 +117144,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .u32, .kind = .{ .reg = .edi } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsitf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__floatunsitf" } },
                         .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
                         .unused,
                         .unused,
@@ -117228,7 +117176,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .i32, .kind = .{ .reg = .edi } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsitf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__floatsitf" } },
                         .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
                         .unused,
                         .unused,
@@ -117259,7 +117207,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .i32, .kind = .{ .reg = .edi } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsitf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__floatsitf" } },
                         .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
                         .unused,
                         .unused,
@@ -117290,7 +117238,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .i32, .kind = .{ .reg = .edi } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsitf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__floatsitf" } },
                         .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
                         .unused,
                         .unused,
@@ -117321,7 +117269,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .u32, .kind = .{ .reg = .edi } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsitf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__floatunsitf" } },
                         .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
                         .unused,
                         .unused,
@@ -117352,7 +117300,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .u32, .kind = .{ .reg = .edi } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsitf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__floatunsitf" } },
                         .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
                         .unused,
                         .unused,
@@ -117383,7 +117331,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .u32, .kind = .{ .reg = .edi } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsitf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__floatunsitf" } },
                         .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
                         .unused,
                         .unused,
@@ -117414,7 +117362,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .i32, .kind = .{ .reg = .edi } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsitf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__floatsitf" } },
                         .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
                         .unused,
                         .unused,
@@ -117445,7 +117393,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .i32, .kind = .{ .reg = .edi } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsitf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__floatsitf" } },
                         .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
                         .unused,
                         .unused,
@@ -117476,7 +117424,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .i32, .kind = .{ .reg = .edi } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsitf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__floatsitf" } },
                         .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
                         .unused,
                         .unused,
@@ -117507,7 +117455,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .u32, .kind = .{ .reg = .edi } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsitf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__floatunsitf" } },
                         .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
                         .unused,
                         .unused,
@@ -117538,7 +117486,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .u32, .kind = .{ .reg = .edi } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsitf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__floatunsitf" } },
                         .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
                         .unused,
                         .unused,
@@ -117569,7 +117517,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .u32, .kind = .{ .reg = .edi } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsitf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__floatunsitf" } },
                         .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
                         .unused,
                         .unused,
@@ -117600,7 +117548,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .i64, .kind = .{ .reg = .rdi } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatditf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__floatditf" } },
                         .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
                         .unused,
                         .unused,
@@ -117631,7 +117579,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .i64, .kind = .{ .reg = .rdi } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatditf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__floatditf" } },
                         .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
                         .unused,
                         .unused,
@@ -117662,7 +117610,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .i64, .kind = .{ .reg = .rdi } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatditf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__floatditf" } },
                         .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
                         .unused,
                         .unused,
@@ -117693,7 +117641,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .u64, .kind = .{ .reg = .rdi } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunditf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__floatunditf" } },
                         .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
                         .unused,
                         .unused,
@@ -117724,7 +117672,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .u64, .kind = .{ .reg = .rdi } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunditf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__floatunditf" } },
                         .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
                         .unused,
                         .unused,
@@ -117755,7 +117703,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .u64, .kind = .{ .reg = .rdi } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunditf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__floatunditf" } },
                         .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
                         .unused,
                         .unused,
@@ -117787,7 +117735,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .u64, .kind = .{ .reg = .rdi } },
                         .{ .type = .i64, .kind = .{ .reg = .rsi } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floattitf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__floattitf" } },
                         .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
                         .unused,
                         .unused,
@@ -117819,7 +117767,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .u64, .kind = .{ .reg = .rdi } },
                         .{ .type = .i64, .kind = .{ .reg = .rsi } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floattitf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__floattitf" } },
                         .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
                         .unused,
                         .unused,
@@ -117851,7 +117799,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .u64, .kind = .{ .reg = .rdi } },
                         .{ .type = .i64, .kind = .{ .reg = .rsi } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floattitf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__floattitf" } },
                         .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
                         .unused,
                         .unused,
@@ -117883,7 +117831,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .u64, .kind = .{ .reg = .rdi } },
                         .{ .type = .u64, .kind = .{ .reg = .rsi } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuntitf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__floatuntitf" } },
                         .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
                         .unused,
                         .unused,
@@ -117915,7 +117863,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .u64, .kind = .{ .reg = .rdi } },
                         .{ .type = .u64, .kind = .{ .reg = .rsi } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuntitf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__floatuntitf" } },
                         .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
                         .unused,
                         .unused,
@@ -117947,7 +117895,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .u64, .kind = .{ .reg = .rdi } },
                         .{ .type = .u64, .kind = .{ .reg = .rsi } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuntitf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__floatuntitf" } },
                         .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
                         .unused,
                         .unused,
@@ -117980,7 +117928,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .usize, .kind = .{ .reg = .rdi } },
                         .{ .type = .usize, .kind = .{ .reg = .rsi } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floateitf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__floateitf" } },
                         .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
                         .unused,
                         .unused,
@@ -118014,7 +117962,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .usize, .kind = .{ .reg = .rdi } },
                         .{ .type = .usize, .kind = .{ .reg = .rsi } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floateitf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__floateitf" } },
                         .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
                         .unused,
                         .unused,
@@ -118048,7 +117996,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .usize, .kind = .{ .reg = .rdi } },
                         .{ .type = .usize, .kind = .{ .reg = .rsi } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floateitf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__floateitf" } },
                         .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
                         .unused,
                         .unused,
@@ -118082,7 +118030,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .usize, .kind = .{ .reg = .rdi } },
                         .{ .type = .usize, .kind = .{ .reg = .rsi } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuneitf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__floatuneitf" } },
                         .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
                         .unused,
                         .unused,
@@ -118116,7 +118064,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .usize, .kind = .{ .reg = .rdi } },
                         .{ .type = .usize, .kind = .{ .reg = .rsi } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuneitf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__floatuneitf" } },
                         .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
                         .unused,
                         .unused,
@@ -118150,7 +118098,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .usize, .kind = .{ .reg = .rdi } },
                         .{ .type = .usize, .kind = .{ .reg = .rsi } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuneitf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__floatuneitf" } },
                         .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
                         .unused,
                         .unused,
@@ -131865,7 +131813,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .extra_temps = .{
                             .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
                             .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
-                            .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fminh" } } },
+                            .{ .type = .usize, .kind = .{ .extern_func = "__fminh" } },
                             .unused,
                             .unused,
                             .unused,
@@ -131898,7 +131846,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .extra_temps = .{
                             .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
                             .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
-                            .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fminh" } } },
+                            .{ .type = .usize, .kind = .{ .extern_func = "__fminh" } },
                             .unused,
                             .unused,
                             .unused,
@@ -131933,7 +131881,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                             .{ .type = .f16, .kind = .{ .reg = .ax } },
                             .{ .type = .f32, .kind = .mem },
                             .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
-                            .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fminh" } } },
+                            .{ .type = .usize, .kind = .{ .extern_func = "__fminh" } },
                             .unused,
                             .unused,
                             .unused,
@@ -133533,7 +133481,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .extra_temps = .{
                             .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
                             .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
-                            .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fminq" } } },
+                            .{ .type = .usize, .kind = .{ .extern_func = "fminq" } },
                             .unused,
                             .unused,
                             .unused,
@@ -133564,7 +133512,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .extra_temps = .{
                             .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
                             .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
-                            .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fminq" } } },
+                            .{ .type = .usize, .kind = .{ .extern_func = "fminq" } },
                             .unused,
                             .unused,
                             .unused,
@@ -133595,7 +133543,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .extra_temps = .{
                             .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
                             .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
-                            .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fminq" } } },
+                            .{ .type = .usize, .kind = .{ .extern_func = "fminq" } },
                             .unused,
                             .unused,
                             .unused,
@@ -141985,7 +141933,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .extra_temps = .{
                             .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
                             .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
-                            .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmaxh" } } },
+                            .{ .type = .usize, .kind = .{ .extern_func = "__fmaxh" } },
                             .unused,
                             .unused,
                             .unused,
@@ -142018,7 +141966,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .extra_temps = .{
                             .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
                             .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
-                            .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmaxh" } } },
+                            .{ .type = .usize, .kind = .{ .extern_func = "__fmaxh" } },
                             .unused,
                             .unused,
                             .unused,
@@ -142053,7 +142001,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                             .{ .type = .f16, .kind = .{ .reg = .ax } },
                             .{ .type = .f32, .kind = .mem },
                             .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
-                            .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmaxh" } } },
+                            .{ .type = .usize, .kind = .{ .extern_func = "__fmaxh" } },
                             .unused,
                             .unused,
                             .unused,
@@ -143661,7 +143609,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .extra_temps = .{
                             .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
                             .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
-                            .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmaxq" } } },
+                            .{ .type = .usize, .kind = .{ .extern_func = "fmaxq" } },
                             .unused,
                             .unused,
                             .unused,
@@ -143692,7 +143640,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .extra_temps = .{
                             .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
                             .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
-                            .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmaxq" } } },
+                            .{ .type = .usize, .kind = .{ .extern_func = "fmaxq" } },
                             .unused,
                             .unused,
                             .unused,
@@ -143723,7 +143671,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .extra_temps = .{
                             .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
                             .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
-                            .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmaxq" } } },
+                            .{ .type = .usize, .kind = .{ .extern_func = "fmaxq" } },
                             .unused,
                             .unused,
                             .unused,
@@ -147656,7 +147604,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .extra_temps = .{
                             .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                             .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
-                            .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addhf3" } } },
+                            .{ .type = .usize, .kind = .{ .extern_func = "__addhf3" } },
                             .unused,
                             .unused,
                             .unused,
@@ -147689,7 +147637,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .extra_temps = .{
                             .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                             .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
-                            .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addhf3" } } },
+                            .{ .type = .usize, .kind = .{ .extern_func = "__addhf3" } },
                             .unused,
                             .unused,
                             .unused,
@@ -147724,7 +147672,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                             .{ .type = .f16, .kind = .{ .reg = .ax } },
                             .{ .type = .f32, .kind = .mem },
                             .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
-                            .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addhf3" } } },
+                            .{ .type = .usize, .kind = .{ .extern_func = "__addhf3" } },
                             .unused,
                             .unused,
                             .unused,
@@ -148241,7 +148189,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .extra_temps = .{
                             .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                             .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
-                            .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addtf3" } } },
+                            .{ .type = .usize, .kind = .{ .extern_func = "__addtf3" } },
                             .unused,
                             .unused,
                             .unused,
@@ -148272,7 +148220,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .extra_temps = .{
                             .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                             .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
-                            .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addtf3" } } },
+                            .{ .type = .usize, .kind = .{ .extern_func = "__addtf3" } },
                             .unused,
                             .unused,
                             .unused,
@@ -148303,7 +148251,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .extra_temps = .{
                             .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                             .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
-                            .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addtf3" } } },
+                            .{ .type = .usize, .kind = .{ .extern_func = "__addtf3" } },
                             .unused,
                             .unused,
                             .unused,
@@ -151315,7 +151263,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .extra_temps = .{
                             .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                             .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
-                            .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__mulhf3" } } },
+                            .{ .type = .usize, .kind = .{ .extern_func = "__mulhf3" } },
                             .unused,
                             .unused,
                             .unused,
@@ -151348,7 +151296,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .extra_temps = .{
                             .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                             .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
-                            .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__mulhf3" } } },
+                            .{ .type = .usize, .kind = .{ .extern_func = "__mulhf3" } },
                             .unused,
                             .unused,
                             .unused,
@@ -151383,7 +151331,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                             .{ .type = .f16, .kind = .{ .reg = .ax } },
                             .{ .type = .f32, .kind = .mem },
                             .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
-                            .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__mulhf3" } } },
+                            .{ .type = .usize, .kind = .{ .extern_func = "__mulhf3" } },
                             .unused,
                             .unused,
                             .unused,
@@ -151780,7 +151728,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .extra_temps = .{
                             .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                             .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
-                            .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__multf3" } } },
+                            .{ .type = .usize, .kind = .{ .extern_func = "__multf3" } },
                             .unused,
                             .unused,
                             .unused,
@@ -151811,7 +151759,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .extra_temps = .{
                             .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                             .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
-                            .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__multf3" } } },
+                            .{ .type = .usize, .kind = .{ .extern_func = "__multf3" } },
                             .unused,
                             .unused,
                             .unused,
@@ -151842,7 +151790,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .extra_temps = .{
                             .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                             .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
-                            .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__multf3" } } },
+                            .{ .type = .usize, .kind = .{ .extern_func = "__multf3" } },
                             .unused,
                             .unused,
                             .unused,
@@ -152354,7 +152302,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .extra_temps = .{
                             .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
                             .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
-                            .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fminh" } } },
+                            .{ .type = .usize, .kind = .{ .extern_func = "__fminh" } },
                             .unused,
                             .unused,
                             .unused,
@@ -152387,7 +152335,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .extra_temps = .{
                             .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
                             .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
-                            .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fminh" } } },
+                            .{ .type = .usize, .kind = .{ .extern_func = "__fminh" } },
                             .unused,
                             .unused,
                             .unused,
@@ -152422,7 +152370,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                             .{ .type = .f16, .kind = .{ .reg = .ax } },
                             .{ .type = .f32, .kind = .mem },
                             .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
-                            .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fminh" } } },
+                            .{ .type = .usize, .kind = .{ .extern_func = "__fminh" } },
                             .unused,
                             .unused,
                             .unused,
@@ -153502,7 +153450,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .extra_temps = .{
                             .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
                             .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
-                            .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fminq" } } },
+                            .{ .type = .usize, .kind = .{ .extern_func = "fminq" } },
                             .unused,
                             .unused,
                             .unused,
@@ -153533,7 +153481,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .extra_temps = .{
                             .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
                             .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
-                            .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fminq" } } },
+                            .{ .type = .usize, .kind = .{ .extern_func = "fminq" } },
                             .unused,
                             .unused,
                             .unused,
@@ -153564,7 +153512,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .extra_temps = .{
                             .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
                             .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
-                            .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fminq" } } },
+                            .{ .type = .usize, .kind = .{ .extern_func = "fminq" } },
                             .unused,
                             .unused,
                             .unused,
@@ -154046,7 +153994,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .extra_temps = .{
                             .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
                             .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
-                            .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmaxh" } } },
+                            .{ .type = .usize, .kind = .{ .extern_func = "__fmaxh" } },
                             .unused,
                             .unused,
                             .unused,
@@ -154079,7 +154027,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .extra_temps = .{
                             .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
                             .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
-                            .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmaxh" } } },
+                            .{ .type = .usize, .kind = .{ .extern_func = "__fmaxh" } },
                             .unused,
                             .unused,
                             .unused,
@@ -154114,7 +154062,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                             .{ .type = .f16, .kind = .{ .reg = .ax } },
                             .{ .type = .f32, .kind = .mem },
                             .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
-                            .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmaxh" } } },
+                            .{ .type = .usize, .kind = .{ .extern_func = "__fmaxh" } },
                             .unused,
                             .unused,
                             .unused,
@@ -155194,7 +155142,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .extra_temps = .{
                             .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
                             .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
-                            .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmaxq" } } },
+                            .{ .type = .usize, .kind = .{ .extern_func = "fmaxq" } },
                             .unused,
                             .unused,
                             .unused,
@@ -155225,7 +155173,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .extra_temps = .{
                             .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
                             .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
-                            .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmaxq" } } },
+                            .{ .type = .usize, .kind = .{ .extern_func = "fmaxq" } },
                             .unused,
                             .unused,
                             .unused,
@@ -155256,7 +155204,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .extra_temps = .{
                             .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
                             .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
-                            .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmaxq" } } },
+                            .{ .type = .usize, .kind = .{ .extern_func = "fmaxq" } },
                             .unused,
                             .unused,
                             .unused,
@@ -155987,7 +155935,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .extra_temps = .{
                             .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
                             .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
-                            .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addhf3" } } },
+                            .{ .type = .usize, .kind = .{ .extern_func = "__addhf3" } },
                             .unused,
                             .unused,
                             .unused,
@@ -156020,7 +155968,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .extra_temps = .{
                             .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
                             .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
-                            .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addhf3" } } },
+                            .{ .type = .usize, .kind = .{ .extern_func = "__addhf3" } },
                             .unused,
                             .unused,
                             .unused,
@@ -156055,7 +156003,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                             .{ .type = .f16, .kind = .{ .reg = .ax } },
                             .{ .type = .f32, .kind = .mem },
                             .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
-                            .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addhf3" } } },
+                            .{ .type = .usize, .kind = .{ .extern_func = "__addhf3" } },
                             .unused,
                             .unused,
                             .unused,
@@ -157453,7 +157401,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .extra_temps = .{
                             .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
                             .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
-                            .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addtf3" } } },
+                            .{ .type = .usize, .kind = .{ .extern_func = "__addtf3" } },
                             .unused,
                             .unused,
                             .unused,
@@ -157484,7 +157432,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .extra_temps = .{
                             .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
                             .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
-                            .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addtf3" } } },
+                            .{ .type = .usize, .kind = .{ .extern_func = "__addtf3" } },
                             .unused,
                             .unused,
                             .unused,
@@ -157515,7 +157463,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .extra_temps = .{
                             .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
                             .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
-                            .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addtf3" } } },
+                            .{ .type = .usize, .kind = .{ .extern_func = "__addtf3" } },
                             .unused,
                             .unused,
                             .unused,
@@ -157997,7 +157945,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .extra_temps = .{
                             .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
                             .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
-                            .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__mulhf3" } } },
+                            .{ .type = .usize, .kind = .{ .extern_func = "__mulhf3" } },
                             .unused,
                             .unused,
                             .unused,
@@ -158030,7 +157978,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .extra_temps = .{
                             .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
                             .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
-                            .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__mulhf3" } } },
+                            .{ .type = .usize, .kind = .{ .extern_func = "__mulhf3" } },
                             .unused,
                             .unused,
                             .unused,
@@ -158065,7 +158013,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                             .{ .type = .f16, .kind = .{ .reg = .ax } },
                             .{ .type = .f32, .kind = .mem },
                             .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
-                            .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__mulhf3" } } },
+                            .{ .type = .usize, .kind = .{ .extern_func = "__mulhf3" } },
                             .unused,
                             .unused,
                             .unused,
@@ -158996,7 +158944,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .extra_temps = .{
                             .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
                             .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
-                            .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__multf3" } } },
+                            .{ .type = .usize, .kind = .{ .extern_func = "__multf3" } },
                             .unused,
                             .unused,
                             .unused,
@@ -159027,7 +158975,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .extra_temps = .{
                             .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
                             .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
-                            .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__multf3" } } },
+                            .{ .type = .usize, .kind = .{ .extern_func = "__multf3" } },
                             .unused,
                             .unused,
                             .unused,
@@ -159058,7 +159006,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .extra_temps = .{
                             .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
                             .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
-                            .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__multf3" } } },
+                            .{ .type = .usize, .kind = .{ .extern_func = "__multf3" } },
                             .unused,
                             .unused,
                             .unused,
@@ -160939,7 +160887,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         },
                         .call_frame = .{ .alignment = .@"16" },
                         .extra_temps = .{
-                            .{ .type = .usize, .kind = .{ .symbol = &.{ .name = @tagName(symbol) } } },
+                            .{ .type = .usize, .kind = .{ .extern_func = @tagName(symbol) } },
                             .unused,
                             .unused,
                             .unused,
@@ -160988,7 +160936,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     },
                     .call_frame = .{ .alignment = .@"32" },
                     .extra_temps = .{
-                        .{ .type = .usize, .kind = .{ .lazy_symbol = .{ .kind = .code, .ref = .src0 } } },
+                        .{ .type = .usize, .kind = .{ .lazy_sym = .{ .kind = .code, .ref = .src0 } } },
                         .unused,
                         .unused,
                         .unused,
@@ -161014,7 +160962,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     },
                     .call_frame = .{ .alignment = .@"16" },
                     .extra_temps = .{
-                        .{ .type = .usize, .kind = .{ .lazy_symbol = .{ .kind = .code, .ref = .src0 } } },
+                        .{ .type = .usize, .kind = .{ .lazy_sym = .{ .kind = .code, .ref = .src0 } } },
                         .unused,
                         .unused,
                         .unused,
@@ -161039,7 +160987,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     },
                     .call_frame = .{ .alignment = .@"8" },
                     .extra_temps = .{
-                        .{ .type = .usize, .kind = .{ .lazy_symbol = .{ .kind = .code, .ref = .src0 } } },
+                        .{ .type = .usize, .kind = .{ .lazy_sym = .{ .kind = .code, .ref = .src0 } } },
                         .unused,
                         .unused,
                         .unused,
@@ -161079,7 +161027,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     },
                     .call_frame = .{ .alignment = .@"32" },
                     .extra_temps = .{
-                        .{ .type = .usize, .kind = .{ .lazy_symbol = .{ .kind = .code, .ref = .src0 } } },
+                        .{ .type = .usize, .kind = .{ .lazy_sym = .{ .kind = .code, .ref = .src0 } } },
                         .unused,
                         .unused,
                         .unused,
@@ -161104,7 +161052,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     },
                     .call_frame = .{ .alignment = .@"16" },
                     .extra_temps = .{
-                        .{ .type = .usize, .kind = .{ .lazy_symbol = .{ .kind = .code, .ref = .src0 } } },
+                        .{ .type = .usize, .kind = .{ .lazy_sym = .{ .kind = .code, .ref = .src0 } } },
                         .unused,
                         .unused,
                         .unused,
@@ -161128,7 +161076,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     },
                     .call_frame = .{ .alignment = .@"8" },
                     .extra_temps = .{
-                        .{ .type = .usize, .kind = .{ .lazy_symbol = .{ .kind = .code, .ref = .src0 } } },
+                        .{ .type = .usize, .kind = .{ .lazy_sym = .{ .kind = .code, .ref = .src0 } } },
                         .unused,
                         .unused,
                         .unused,
@@ -161167,7 +161115,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .src = .{ .to_gpr, .none, .none } },
                     },
                     .extra_temps = .{
-                        .{ .type = .anyerror, .kind = .{ .lazy_symbol = .{ .kind = .const_data } } },
+                        .{ .type = .anyerror, .kind = .{ .lazy_sym = .{ .kind = .const_data } } },
                         .{ .type = .u32, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } } },
                         .unused,
                         .unused,
@@ -161196,7 +161144,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .src = .{ .to_gpr, .none, .none } },
                     },
                     .extra_temps = .{
-                        .{ .type = .anyerror, .kind = .{ .lazy_symbol = .{ .kind = .const_data } } },
+                        .{ .type = .anyerror, .kind = .{ .lazy_sym = .{ .kind = .const_data } } },
                         .{ .type = .u32, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } } },
                         .unused,
                         .unused,
@@ -161225,7 +161173,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .src = .{ .to_gpr, .none, .none } },
                     },
                     .extra_temps = .{
-                        .{ .type = .anyerror, .kind = .{ .lazy_symbol = .{ .kind = .const_data } } },
+                        .{ .type = .anyerror, .kind = .{ .lazy_sym = .{ .kind = .const_data } } },
                         .{ .type = .u32, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } } },
                         .unused,
                         .unused,
@@ -161276,7 +161224,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     },
                     .call_frame = .{ .alignment = .@"32" },
                     .extra_temps = .{
-                        .{ .type = .usize, .kind = .{ .lazy_symbol = .{ .kind = .code, .ref = .src1 } } },
+                        .{ .type = .usize, .kind = .{ .lazy_sym = .{ .kind = .code, .ref = .src1 } } },
                         .unused,
                         .unused,
                         .unused,
@@ -161302,7 +161250,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     },
                     .call_frame = .{ .alignment = .@"16" },
                     .extra_temps = .{
-                        .{ .type = .usize, .kind = .{ .lazy_symbol = .{ .kind = .code, .ref = .src1 } } },
+                        .{ .type = .usize, .kind = .{ .lazy_sym = .{ .kind = .code, .ref = .src1 } } },
                         .unused,
                         .unused,
                         .unused,
@@ -161327,7 +161275,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     },
                     .call_frame = .{ .alignment = .@"8" },
                     .extra_temps = .{
-                        .{ .type = .usize, .kind = .{ .lazy_symbol = .{ .kind = .code, .ref = .src1 } } },
+                        .{ .type = .usize, .kind = .{ .lazy_sym = .{ .kind = .code, .ref = .src1 } } },
                         .unused,
                         .unused,
                         .unused,
@@ -161523,7 +161471,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     },
                     .call_frame = .{ .alignment = .@"16" },
                     .extra_temps = .{
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmah" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fmah" } },
                         .unused,
                         .unused,
                         .unused,
@@ -161666,7 +161614,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
                         .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
                         .{ .type = .f16, .kind = .{ .reg = .xmm2 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmah" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fmah" } },
                         .unused,
                         .unused,
                         .unused,
@@ -161703,7 +161651,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
                         .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
                         .{ .type = .f16, .kind = .{ .reg = .xmm2 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmah" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fmah" } },
                         .unused,
                         .unused,
                         .unused,
@@ -161742,7 +161690,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
                         .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
                         .{ .type = .f16, .kind = .{ .reg = .xmm2 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmah" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fmah" } },
                         .{ .type = .f16, .kind = .{ .reg = .ax } },
                         .unused,
                         .unused,
@@ -161784,7 +161732,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
                         .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
                         .{ .type = .f16, .kind = .{ .reg = .xmm2 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmah" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fmah" } },
                         .unused,
                         .unused,
                         .unused,
@@ -161872,7 +161820,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     },
                     .call_frame = .{ .alignment = .@"16" },
                     .extra_temps = .{
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmaf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "fmaf" } },
                         .unused,
                         .unused,
                         .unused,
@@ -162038,7 +161986,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
                         .{ .type = .f32, .kind = .{ .reg = .xmm1 } },
                         .{ .type = .f32, .kind = .{ .reg = .xmm2 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmaf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "fmaf" } },
                         .unused,
                         .unused,
                         .unused,
@@ -162074,7 +162022,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
                         .{ .type = .f32, .kind = .{ .reg = .xmm1 } },
                         .{ .type = .f32, .kind = .{ .reg = .xmm2 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmaf" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "fmaf" } },
                         .unused,
                         .unused,
                         .unused,
@@ -162156,7 +162104,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     },
                     .call_frame = .{ .alignment = .@"16" },
                     .extra_temps = .{
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fma" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "fma" } },
                         .unused,
                         .unused,
                         .unused,
@@ -162322,7 +162270,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
                         .{ .type = .f64, .kind = .{ .reg = .xmm1 } },
                         .{ .type = .f64, .kind = .{ .reg = .xmm2 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fma" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "fma" } },
                         .unused,
                         .unused,
                         .unused,
@@ -162358,7 +162306,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
                         .{ .type = .f64, .kind = .{ .reg = .xmm1 } },
                         .{ .type = .f64, .kind = .{ .reg = .xmm2 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fma" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "fma" } },
                         .unused,
                         .unused,
                         .unused,
@@ -162394,7 +162342,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
                         .{ .type = .f64, .kind = .{ .reg = .xmm1 } },
                         .{ .type = .f64, .kind = .{ .reg = .xmm2 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fma" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "fma" } },
                         .unused,
                         .unused,
                         .unused,
@@ -162431,7 +162379,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     .extra_temps = .{
                         .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
                         .{ .type = .f80, .kind = .{ .frame = .call_frame } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmax" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fmax" } },
                         .unused,
                         .unused,
                         .unused,
@@ -162467,7 +162415,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
                         .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
                         .{ .type = .f80, .kind = .{ .frame = .call_frame } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmax" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "__fmax" } },
                         .unused,
                         .unused,
                         .unused,
@@ -162504,7 +162452,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                     },
                     .call_frame = .{ .alignment = .@"16" },
                     .extra_temps = .{
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmaq" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "fmaq" } },
                         .unused,
                         .unused,
                         .unused,
@@ -162537,7 +162485,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
                         .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
                         .{ .type = .f128, .kind = .{ .reg = .xmm2 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmaq" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "fmaq" } },
                         .unused,
                         .unused,
                         .unused,
@@ -162573,7 +162521,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
                         .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
                         .{ .type = .f128, .kind = .{ .reg = .xmm2 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmaq" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "fmaq" } },
                         .unused,
                         .unused,
                         .unused,
@@ -162609,7 +162557,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
                         .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
                         .{ .type = .f128, .kind = .{ .reg = .xmm2 } },
-                        .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmaq" } } },
+                        .{ .type = .usize, .kind = .{ .extern_func = "fmaq" } },
                         .unused,
                         .unused,
                         .unused,
@@ -162663,7 +162611,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .src = .{ .to_gpr, .none, .none } },
                     },
                     .extra_temps = .{
-                        .{ .type = .anyerror, .kind = .{ .lazy_symbol = .{ .kind = .const_data } } },
+                        .{ .type = .anyerror, .kind = .{ .lazy_sym = .{ .kind = .const_data } } },
                         .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
                         .unused,
                         .unused,
@@ -162687,7 +162635,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .src = .{ .to_gpr, .none, .none } },
                     },
                     .extra_temps = .{
-                        .{ .type = .anyerror, .kind = .{ .lazy_symbol = .{ .kind = .const_data } } },
+                        .{ .type = .anyerror, .kind = .{ .lazy_sym = .{ .kind = .const_data } } },
                         .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
                         .unused,
                         .unused,
@@ -162711,7 +162659,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                         .{ .src = .{ .to_gpr, .none, .none } },
                     },
                     .extra_temps = .{
-                        .{ .type = .anyerror, .kind = .{ .lazy_symbol = .{ .kind = .const_data } } },
+                        .{ .type = .anyerror, .kind = .{ .lazy_sym = .{ .kind = .const_data } } },
                         .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
                         .unused,
                         .unused,
@@ -163402,65 +163350,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
                 };
                 for (ops) |op| try op.die(cg);
             },
-            .runtime_nav_ptr => switch (cg.bin_file.tag) {
-                .elf, .macho => {
-                    const ty_nav = air_datas[@intFromEnum(inst)].ty_nav;
-
-                    const nav = ip.getNav(ty_nav.nav);
-                    const sym_index, const relocation = sym: {
-                        if (cg.bin_file.cast(.elf)) |elf_file| {
-                            const zo = elf_file.zigObjectPtr().?;
-                            if (nav.getExtern(ip)) |e| {
-                                const sym = try elf_file.getGlobalSymbol(nav.name.toSlice(ip), e.lib_name.toSlice(ip));
-                                linkage: switch (e.linkage) {
-                                    .internal => {},
-                                    .strong => switch (e.visibility) {
-                                        .default => zo.symbol(sym).flags.is_extern_ptr = true,
-                                        .hidden, .protected => {},
-                                    },
-                                    .weak => {
-                                        zo.symbol(sym).flags.weak = true;
-                                        continue :linkage .strong;
-                                    },
-                                    .link_once => unreachable,
-                                }
-                                break :sym .{ sym, e.relocation };
-                            } else break :sym .{ try zo.getOrCreateMetadataForNav(zcu, ty_nav.nav), .any };
-                        } else if (cg.bin_file.cast(.macho)) |macho_file| {
-                            const zo = macho_file.getZigObject().?;
-                            if (nav.getExtern(ip)) |e| {
-                                const sym = try macho_file.getGlobalSymbol(nav.name.toSlice(ip), e.lib_name.toSlice(ip));
-                                linkage: switch (e.linkage) {
-                                    .internal => {},
-                                    .strong => switch (e.visibility) {
-                                        .default => zo.symbols.items[sym].flags.is_extern_ptr = true,
-                                        .hidden, .protected => {},
-                                    },
-                                    .weak => {
-                                        zo.symbols.items[sym].flags.weak = true;
-                                        continue :linkage .strong;
-                                    },
-                                    .link_once => unreachable,
-                                }
-                                break :sym .{ sym, e.relocation };
-                            } else break :sym .{ try zo.getOrCreateMetadataForNav(macho_file, ty_nav.nav), .any };
-                        } else unreachable;
-                    };
-
-                    if (cg.mod.pic) {
-                        try cg.spillRegisters(&.{ .rdi, .rax });
-                    } else {
-                        try cg.spillRegisters(&.{.rax});
-                    }
-
-                    var slot = try cg.tempInit(.usize, switch (relocation) {
-                        .any => .{ .lea_symbol = .{ .sym_index = sym_index } },
-                        .pcrel => .{ .lea_pcrel = .{ .sym_index = sym_index } },
-                    });
-                    while (try slot.toRegClass(true, .general_purpose, cg)) {}
-                    try slot.finish(inst, &.{}, &.{}, cg);
-                },
-                else => return cg.fail("TODO implement runtime_nav_ptr on {}", .{cg.bin_file.tag}),
+            .runtime_nav_ptr => {
+                const ty_nav = air_datas[@intFromEnum(inst)].ty_nav;
+                const is_threadlocal = ip.getNav(ty_nav.nav).isThreadlocal(ip);
+                if (is_threadlocal) if (cg.mod.pic) {
+                    try cg.spillRegisters(&.{ .rdi, .rax });
+                } else {
+                    try cg.spillRegisters(&.{.rax});
+                };
+                var res = try cg.tempInit(.fromInterned(ty_nav.ty), .{ .lea_nav = ty_nav.nav });
+                if (is_threadlocal) while (try res.toRegClass(true, .general_purpose, cg)) {};
+                try res.finish(inst, &.{}, &.{}, cg);
             },
             .c_va_arg => try cg.airVaArg(inst),
             .c_va_copy => try cg.airVaCopy(inst),
@@ -164116,11 +164016,11 @@ fn airFptrunc(self: *CodeGen, inst: Air.Inst.Index) !void {
             },
             else => unreachable,
         }) {
-            var callee_buf: ["__trunc?f?f2".len]u8 = undefined;
-            break :result try self.genCall(.{ .lib = .{
+            var sym_buf: ["__trunc?f?f2".len]u8 = undefined;
+            break :result try self.genCall(.{ .extern_func = .{
                 .return_type = self.floatCompilerRtAbiType(dst_ty, src_ty).toIntern(),
                 .param_types = &.{self.floatCompilerRtAbiType(src_ty, dst_ty).toIntern()},
-                .callee = std.fmt.bufPrint(&callee_buf, "__trunc{c}f{c}f2", .{
+                .sym = std.fmt.bufPrint(&sym_buf, "__trunc{c}f{c}f2", .{
                     floatCompilerRtAbiName(src_bits),
                     floatCompilerRtAbiName(dst_bits),
                 }) catch unreachable,
@@ -164220,11 +164120,11 @@ fn airFpext(self: *CodeGen, inst: Air.Inst.Index) !void {
             else => unreachable,
         }) {
             if (dst_ty.isVector(zcu)) break :result null;
-            var callee_buf: ["__extend?f?f2".len]u8 = undefined;
-            break :result try self.genCall(.{ .lib = .{
+            var sym_buf: ["__extend?f?f2".len]u8 = undefined;
+            break :result try self.genCall(.{ .extern_func = .{
                 .return_type = self.floatCompilerRtAbiType(dst_scalar_ty, src_scalar_ty).toIntern(),
                 .param_types = &.{self.floatCompilerRtAbiType(src_scalar_ty, dst_scalar_ty).toIntern()},
-                .callee = std.fmt.bufPrint(&callee_buf, "__extend{c}f{c}f2", .{
+                .sym = std.fmt.bufPrint(&sym_buf, "__extend{c}f{c}f2", .{
                     floatCompilerRtAbiName(src_bits),
                     floatCompilerRtAbiName(dst_bits),
                 }) catch unreachable,
@@ -164661,7 +164561,7 @@ fn airTrunc(self: *CodeGen, inst: Air.Inst.Index) !void {
                 .storage = .{ .repeated_elem = mask_val.ip_index },
             } });
 
-            const splat_mcv = try self.genTypedValue(.fromInterned(splat_val));
+            const splat_mcv = try self.lowerValue(.fromInterned(splat_val));
             const splat_addr_mcv: MCValue = switch (splat_mcv) {
                 .memory, .indirect, .load_frame => splat_mcv.address(),
                 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
             .mul, .mul_wrap => {},
             .div_trunc, .div_floor, .div_exact, .rem, .mod => {
                 const signed = dst_ty.isSignedInt(zcu);
-                var callee_buf: ["__udiv?i3".len]u8 = undefined;
+                var sym_buf: ["__udiv?i3".len]u8 = undefined;
                 const signed_div_floor_state: struct {
                     frame_index: FrameIndex,
                     state: State,
@@ -164879,7 +164779,7 @@ fn airMulDivBinOp(self: *CodeGen, inst: Air.Inst.Index, tag: Air.Inst.Tag) !void
 
                     const lhs_mcv = try self.resolveInst(bin_op.lhs);
                     const mat_lhs_mcv = switch (lhs_mcv) {
-                        .load_symbol => mat_lhs_mcv: {
+                        .load_nav, .load_uav, .load_lazy_sym => mat_lhs_mcv: {
                             // TODO clean this up!
                             const addr_reg = try self.copyToTmpRegister(.usize, lhs_mcv.address());
                             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
 
                     const rhs_mcv = try self.resolveInst(bin_op.rhs);
                     const mat_rhs_mcv = switch (rhs_mcv) {
-                        .load_symbol => mat_rhs_mcv: {
+                        .load_nav, .load_uav, .load_lazy_sym => mat_rhs_mcv: {
                             // TODO clean this up!
                             const addr_reg = try self.copyToTmpRegister(.usize, rhs_mcv.address());
                             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
                     break :state .{ .frame_index = frame_index, .state = state, .reloc = reloc };
                 } else undefined;
                 const call_mcv = try self.genCall(
-                    .{ .lib = .{
+                    .{ .extern_func = .{
                         .return_type = dst_ty.toIntern(),
                         .param_types = &.{ src_ty.toIntern(), src_ty.toIntern() },
-                        .callee = std.fmt.bufPrint(&callee_buf, "__{s}{s}{c}i3", .{
+                        .sym = std.fmt.bufPrint(&sym_buf, "__{s}{s}{c}i3", .{
                             if (signed) "" else "u",
                             switch (tag) {
                                 .div_trunc, .div_exact => "div",
@@ -164967,10 +164867,10 @@ fn airMulDivBinOp(self: *CodeGen, inst: Air.Inst.Index, tag: Air.Inst.Tag) !void
                         });
                         self.performReloc(signed_div_floor_state.reloc);
                         const dst_mcv = try self.genCall(
-                            .{ .lib = .{
+                            .{ .extern_func = .{
                                 .return_type = dst_ty.toIntern(),
                                 .param_types = &.{ src_ty.toIntern(), src_ty.toIntern() },
-                                .callee = std.fmt.bufPrint(&callee_buf, "__div{c}i3", .{
+                                .sym = std.fmt.bufPrint(&sym_buf, "__div{c}i3", .{
                                     intCompilerRtAbiName(@intCast(dst_ty.bitSize(zcu))),
                                 }) catch unreachable,
                             } },
@@ -165004,7 +164904,7 @@ fn airMulDivBinOp(self: *CodeGen, inst: Air.Inst.Index, tag: Air.Inst.Tag) !void
 
                         const rhs_mcv = try self.resolveInst(bin_op.rhs);
                         const mat_rhs_mcv = switch (rhs_mcv) {
-                            .load_symbol => mat_rhs_mcv: {
+                            .load_nav, .load_uav, .load_lazy_sym => mat_rhs_mcv: {
                                 // TODO clean this up!
                                 const addr_reg = try self.copyToTmpRegister(.usize, rhs_mcv.address());
                                 break :mat_rhs_mcv MCValue{ .indirect = .{ .reg = addr_reg } };
@@ -165218,10 +165118,10 @@ fn airMulSat(self: *CodeGen, inst: Air.Inst.Index) !void {
             const ptr_c_int = try pt.singleMutPtrType(.c_int);
             const overflow = try self.allocTempRegOrMem(.c_int, false);
 
-            const dst_mcv = try self.genCall(.{ .lib = .{
+            const dst_mcv = try self.genCall(.{ .extern_func = .{
                 .return_type = .i128_type,
                 .param_types = &.{ .i128_type, .i128_type, ptr_c_int.toIntern() },
-                .callee = "__muloti4",
+                .sym = "__muloti4",
             } }, &.{ .i128, .i128, ptr_c_int }, &.{
                 .{ .air_ref = bin_op.lhs },
                 .{ .air_ref = bin_op.rhs },
@@ -165236,7 +165136,7 @@ fn airMulSat(self: *CodeGen, inst: Air.Inst.Index) !void {
 
             const lhs_mcv = try self.resolveInst(bin_op.lhs);
             const mat_lhs_mcv = switch (lhs_mcv) {
-                .load_symbol => mat_lhs_mcv: {
+                .load_nav, .load_uav, .load_lazy_sym => mat_lhs_mcv: {
                     // TODO clean this up!
                     const addr_reg = try self.copyToTmpRegister(.usize, lhs_mcv.address());
                     break :mat_lhs_mcv MCValue{ .indirect = .{ .reg = addr_reg } };
@@ -165260,7 +165160,7 @@ fn airMulSat(self: *CodeGen, inst: Air.Inst.Index) !void {
 
             const rhs_mcv = try self.resolveInst(bin_op.rhs);
             const mat_rhs_mcv = switch (rhs_mcv) {
-                .load_symbol => mat_rhs_mcv: {
+                .load_nav, .load_uav, .load_lazy_sym => mat_rhs_mcv: {
                     // TODO clean this up!
                     const addr_reg = try self.copyToTmpRegister(.usize, rhs_mcv.address());
                     break :mat_rhs_mcv MCValue{ .indirect = .{ .reg = addr_reg } };
@@ -165734,10 +165634,10 @@ fn airMulWithOverflow(self: *CodeGen, inst: Air.Inst.Index) !void {
                 .signed => {
                     const ptr_c_int = try pt.singleMutPtrType(.c_int);
                     const overflow = try self.allocTempRegOrMem(.c_int, false);
-                    const result = try self.genCall(.{ .lib = .{
+                    const result = try self.genCall(.{ .extern_func = .{
                         .return_type = .i128_type,
                         .param_types = &.{ .i128_type, .i128_type, ptr_c_int.toIntern() },
-                        .callee = "__muloti4",
+                        .sym = "__muloti4",
                     } }, &.{ .i128, .i128, ptr_c_int }, &.{
                         .{ .air_ref = bin_op.lhs },
                         .{ .air_ref = bin_op.rhs },
@@ -165791,7 +165691,7 @@ fn airMulWithOverflow(self: *CodeGen, inst: Air.Inst.Index) !void {
                                 break :mat_lhs_mcv mat_lhs_mcv;
                             },
                         },
-                        .load_symbol => {
+                        .load_nav, .load_uav, .load_lazy_sym => {
                             // TODO clean this up!
                             const addr_reg = try self.copyToTmpRegister(.usize, lhs_mcv.address());
                             break :mat_lhs_mcv MCValue{ .indirect = .{ .reg = addr_reg } };
@@ -165815,7 +165715,7 @@ fn airMulWithOverflow(self: *CodeGen, inst: Air.Inst.Index) !void {
                                 break :mat_rhs_mcv mat_rhs_mcv;
                             },
                         },
-                        .load_symbol => {
+                        .load_nav, .load_uav, .load_lazy_sym => {
                             // TODO clean this up!
                             const addr_reg = try self.copyToTmpRegister(.usize, rhs_mcv.address());
                             break :mat_rhs_mcv MCValue{ .indirect = .{ .reg = addr_reg } };
@@ -166291,7 +166191,7 @@ fn airShlShrBinOp(self: *CodeGen, inst: Air.Inst.Index) !void {
                         defer self.register_manager.unlockReg(shift_lock);
 
                         const mask_ty = try pt.vectorType(.{ .len = 16, .child = .u8_type });
-                        const mask_mcv = try self.genTypedValue(.fromInterned(try pt.intern(.{ .aggregate = .{
+                        const mask_mcv = try self.lowerValue(.fromInterned(try pt.intern(.{ .aggregate = .{
                             .ty = mask_ty.toIntern(),
                             .storage = .{ .elems = &([1]InternPool.Index{
                                 (try rhs_ty.childType(zcu).maxIntScalar(pt, .u8)).toIntern(),
@@ -166432,7 +166332,7 @@ fn airShlSat(self: *CodeGen, inst: Air.Inst.Index) !void {
                 //   if lhs is negative, it is min
                 switch (lhs_ty.intInfo(zcu).signedness) {
                     .unsigned => {
-                        const bound_mcv = try self.genTypedValue(try lhs_ty.maxIntScalar(self.pt, lhs_ty));
+                        const bound_mcv = try self.lowerValue(try lhs_ty.maxIntScalar(self.pt, lhs_ty));
                         try self.genCopy(lhs_ty, dst_mcv, bound_mcv, .{});
                     },
                     .signed => {
@@ -166441,7 +166341,7 @@ fn airShlSat(self: *CodeGen, inst: Air.Inst.Index) !void {
                         // we only need the highest bit so shifting the highest part of lhs_mcv
                         // is enough to check the signedness. other parts can be skipped here.
                         var lhs_temp2 = try self.tempInit(lhs_ty, lhs_mcv);
-                        var zero_temp = try self.tempInit(lhs_ty, try self.genTypedValue(try self.pt.intValue(lhs_ty, 0)));
+                        var zero_temp = try self.tempInit(lhs_ty, try self.lowerValue(try self.pt.intValue(lhs_ty, 0)));
                         const sign_cc_temp = lhs_temp2.cmpInts(.lt, &zero_temp, self) catch |err| switch (err) {
                             error.SelectFailed => unreachable,
                             else => |e| return e,
@@ -166452,13 +166352,13 @@ fn airShlSat(self: *CodeGen, inst: Air.Inst.Index) !void {
                         try sign_cc_temp.die(self);
 
                         // if it is negative
-                        const min_mcv = try self.genTypedValue(try lhs_ty.minIntScalar(self.pt, lhs_ty));
+                        const min_mcv = try self.lowerValue(try lhs_ty.minIntScalar(self.pt, lhs_ty));
                         try self.genCopy(lhs_ty, dst_mcv, min_mcv, .{});
                         const sign_reloc_br = try self.asmJmpReloc(undefined);
                         self.performReloc(sign_reloc_condbr);
 
                         // if it is positive
-                        const max_mcv = try self.genTypedValue(try lhs_ty.maxIntScalar(self.pt, lhs_ty));
+                        const max_mcv = try self.lowerValue(try lhs_ty.maxIntScalar(self.pt, lhs_ty));
                         try self.genCopy(lhs_ty, dst_mcv, max_mcv, .{});
                         self.performReloc(sign_reloc_br);
                     },
@@ -167179,7 +167079,12 @@ fn airArrayElemVal(self: *CodeGen, inst: Air.Inst.Index) !void {
                         }.to64(),
                     ),
                 },
-                .memory, .load_symbol, .load_direct, .load_got => switch (index_mcv) {
+                .memory,
+                .load_nav,
+                .load_uav,
+                .load_lazy_sym,
+                .load_extern_func,
+                => switch (index_mcv) {
                     .immediate => |index_imm| try self.asmMemoryImmediate(
                         .{ ._, .bt },
                         .{
@@ -167241,11 +167146,15 @@ fn airArrayElemVal(self: *CodeGen, inst: Air.Inst.Index) !void {
                 },
             ),
             .memory,
-            .load_symbol,
-            .load_direct,
-            .load_got,
+            .load_nav,
+            .lea_nav,
+            .load_uav,
+            .lea_uav,
+            .load_lazy_sym,
+            .lea_lazy_sym,
+            .load_extern_func,
+            .lea_extern_func,
             => try self.genSetReg(addr_reg, .usize, array_mcv.address(), .{}),
-            .lea_symbol, .lea_direct => unreachable,
             else => return self.fail("TODO airArrayElemVal_val for {s} of {}", .{
                 @tagName(array_mcv), array_ty.fmt(pt),
             }),
@@ -168346,7 +168255,7 @@ fn floatSign(self: *CodeGen, inst: Air.Inst.Index, tag: Air.Inst.Tag, operand: A
             .child = (try pt.intType(.signed, scalar_bits)).ip_index,
         });
 
-        const sign_mcv = try self.genTypedValue(switch (tag) {
+        const sign_mcv = try self.lowerValue(switch (tag) {
             .neg => try vec_ty.minInt(pt, vec_ty),
             .abs => try vec_ty.maxInt(pt, vec_ty),
             else => unreachable,
@@ -168488,11 +168397,11 @@ fn genRoundLibcall(self: *CodeGen, ty: Type, src_mcv: MCValue, mode: bits.RoundM
     if (ty.zigTypeTag(zcu) != .float)
         return self.fail("TODO implement genRound for {}", .{ty.fmt(pt)});
 
-    var callee_buf: ["__trunc?".len]u8 = undefined;
-    return try self.genCall(.{ .lib = .{
+    var sym_buf: ["__trunc?".len]u8 = undefined;
+    return try self.genCall(.{ .extern_func = .{
         .return_type = ty.toIntern(),
         .param_types = &.{ty.toIntern()},
-        .callee = std.fmt.bufPrint(&callee_buf, "{s}{s}{s}", .{
+        .sym = std.fmt.bufPrint(&sym_buf, "{s}{s}{s}", .{
             floatLibcAbiPrefix(ty),
             switch (mode.direction) {
                 .down => "floor",
@@ -168765,11 +168674,11 @@ fn airSqrt(self: *CodeGen, inst: Air.Inst.Index) !void {
                     80, 128 => true,
                     else => unreachable,
                 }) {
-                    var callee_buf: ["__sqrt?".len]u8 = undefined;
-                    break :result try self.genCall(.{ .lib = .{
+                    var sym_buf: ["__sqrt?".len]u8 = undefined;
+                    break :result try self.genCall(.{ .extern_func = .{
                         .return_type = ty.toIntern(),
                         .param_types = &.{ty.toIntern()},
-                        .callee = std.fmt.bufPrint(&callee_buf, "{s}sqrt{s}", .{
+                        .sym = std.fmt.bufPrint(&sym_buf, "{s}sqrt{s}", .{
                             floatLibcAbiPrefix(ty),
                             floatLibcAbiSuffix(ty),
                         }) catch unreachable,
@@ -168918,11 +168827,11 @@ fn airSqrt(self: *CodeGen, inst: Air.Inst.Index) !void {
 fn airUnaryMath(self: *CodeGen, inst: Air.Inst.Index, tag: Air.Inst.Tag) !void {
     const un_op = self.air.instructions.items(.data)[@intFromEnum(inst)].un_op;
     const ty = self.typeOf(un_op);
-    var callee_buf: ["__round?".len]u8 = undefined;
-    const result = try self.genCall(.{ .lib = .{
+    var sym_buf: ["__round?".len]u8 = undefined;
+    const result = try self.genCall(.{ .extern_func = .{
         .return_type = ty.toIntern(),
         .param_types = &.{ty.toIntern()},
-        .callee = std.fmt.bufPrint(&callee_buf, "{s}{s}{s}", .{
+        .sym = std.fmt.bufPrint(&sym_buf, "{s}{s}{s}", .{
             floatLibcAbiPrefix(ty),
             switch (tag) {
                 .sin,
@@ -169122,19 +169031,19 @@ fn load(self: *CodeGen, dst_mcv: MCValue, ptr_ty: Type, ptr_mcv: MCValue) InnerE
         .immediate,
         .register,
         .register_offset,
-        .lea_symbol,
-        .lea_pcrel,
-        .lea_direct,
-        .lea_got,
         .lea_frame,
+        .lea_nav,
+        .lea_uav,
+        .lea_lazy_sym,
+        .lea_extern_func,
         => try self.genCopy(dst_ty, dst_mcv, ptr_mcv.deref(), .{}),
         .memory,
         .indirect,
-        .load_symbol,
-        .load_pcrel,
-        .load_direct,
-        .load_got,
         .load_frame,
+        .load_nav,
+        .load_uav,
+        .load_lazy_sym,
+        .load_extern_func,
         => {
             const addr_reg = try self.copyToTmpRegister(ptr_ty, ptr_mcv);
             const addr_lock = self.register_manager.lockRegAssumeUnused(addr_reg);
@@ -169342,19 +169251,19 @@ fn store(
         .immediate,
         .register,
         .register_offset,
-        .lea_symbol,
-        .lea_pcrel,
-        .lea_direct,
-        .lea_got,
         .lea_frame,
+        .lea_nav,
+        .lea_uav,
+        .lea_lazy_sym,
+        .lea_extern_func,
         => try self.genCopy(src_ty, ptr_mcv.deref(), src_mcv, opts),
         .memory,
         .indirect,
-        .load_symbol,
-        .load_pcrel,
-        .load_direct,
-        .load_got,
         .load_frame,
+        .load_nav,
+        .load_uav,
+        .load_lazy_sym,
+        .load_extern_func,
         => {
             const addr_reg = try self.copyToTmpRegister(ptr_ty, ptr_mcv);
             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:
         .eflags,
         .register_overflow,
         .register_mask,
-        .lea_symbol,
-        .lea_pcrel,
-        .lea_direct,
-        .lea_got,
         .lea_frame,
+        .lea_nav,
+        .lea_uav,
+        .lea_lazy_sym,
+        .lea_extern_func,
         .elementwise_args,
         .reserved_frame,
         .air_ref,
         => unreachable, // unmodifiable destination
         .register => |dst_reg| try self.asmRegister(mir_tag, registerAlias(dst_reg, abi_size)),
         .register_pair, .register_triple, .register_quadruple => unreachable, // unimplemented
-        .memory, .load_symbol, .load_pcrel, .load_got, .load_direct => {
+        .memory, .load_nav, .load_uav, .load_lazy_sym, .load_extern_func => {
             const addr_reg = try self.register_manager.allocReg(null, abi.RegisterClass.gp);
             const addr_reg_lock = self.register_manager.lockRegAssumeUnused(addr_reg);
             defer self.register_manager.unlockReg(addr_reg_lock);
@@ -170591,7 +170500,7 @@ fn genMulDivBinOp(
         defer for (reg_locks) |reg_lock| if (reg_lock) |lock| self.register_manager.unlockReg(lock);
 
         const mat_lhs_mcv = switch (lhs_mcv) {
-            .load_symbol => mat_lhs_mcv: {
+            .load_nav, .load_uav, .load_lazy_sym => mat_lhs_mcv: {
                 // TODO clean this up!
                 const addr_reg = try self.copyToTmpRegister(.usize, lhs_mcv.address());
                 break :mat_lhs_mcv MCValue{ .indirect = .{ .reg = addr_reg } };
@@ -170604,7 +170513,7 @@ fn genMulDivBinOp(
         };
         defer if (mat_lhs_lock) |lock| self.register_manager.unlockReg(lock);
         const mat_rhs_mcv = switch (rhs_mcv) {
-            .load_symbol => mat_rhs_mcv: {
+            .load_nav, .load_uav, .load_lazy_sym => mat_rhs_mcv: {
                 // TODO clean this up!
                 const addr_reg = try self.copyToTmpRegister(.usize, rhs_mcv.address());
                 break :mat_rhs_mcv MCValue{ .indirect = .{ .reg = addr_reg } };
@@ -170772,7 +170681,7 @@ fn genMulDivBinOp(
                             .is_const = true,
                         },
                     });
-                    _ = try self.genCall(.{ .lib = .{
+                    _ = try self.genCall(.{ .extern_func = .{
                         .return_type = .void_type,
                         .param_types = &.{
                             manyptr_u32_ty.toIntern(),
@@ -170780,7 +170689,7 @@ fn genMulDivBinOp(
                             manyptr_const_u32_ty.toIntern(),
                             .usize_type,
                         },
-                        .callee = switch (tag) {
+                        .sym = switch (tag) {
                             .div_trunc,
                             .div_floor,
                             .div_exact,
@@ -171003,8 +170912,8 @@ fn genBinOp(
             .rem, .mod => {},
             else => if (!type_needs_libcall) break :libcall,
         }
-        var callee_buf: ["__mod?f3".len]u8 = undefined;
-        const callee = switch (air_tag) {
+        var sym_buf: ["__mod?f3".len]u8 = undefined;
+        const sym = switch (air_tag) {
             .add,
             .sub,
             .mul,
@@ -171012,11 +170921,11 @@ fn genBinOp(
             .div_trunc,
             .div_floor,
             .div_exact,
-            => std.fmt.bufPrint(&callee_buf, "__{s}{c}f3", .{
+            => std.fmt.bufPrint(&sym_buf, "__{s}{c}f3", .{
                 @tagName(air_tag)[0..3],
                 floatCompilerRtAbiName(float_bits),
             }),
-            .rem, .mod, .min, .max => std.fmt.bufPrint(&callee_buf, "{s}f{s}{s}", .{
+            .rem, .mod, .min, .max => std.fmt.bufPrint(&sym_buf, "{s}f{s}{s}", .{
                 floatLibcAbiPrefix(lhs_ty),
                 switch (air_tag) {
                     .rem, .mod => "mod",
@@ -171030,22 +170939,22 @@ fn genBinOp(
                 @tagName(air_tag), lhs_ty.fmt(pt),
             }),
         } catch unreachable;
-        const result = try self.genCall(.{ .lib = .{
+        const result = try self.genCall(.{ .extern_func = .{
             .return_type = lhs_ty.toIntern(),
             .param_types = &.{ lhs_ty.toIntern(), rhs_ty.toIntern() },
-            .callee = callee,
+            .sym = sym,
         } }, &.{ lhs_ty, rhs_ty }, &.{ .{ .air_ref = lhs_air }, .{ .air_ref = rhs_air } }, .{});
         return switch (air_tag) {
             .mod => result: {
                 const adjusted: MCValue = if (type_needs_libcall) adjusted: {
-                    var add_callee_buf: ["__add?f3".len]u8 = undefined;
-                    break :adjusted try self.genCall(.{ .lib = .{
+                    var add_sym_buf: ["__add?f3".len]u8 = undefined;
+                    break :adjusted try self.genCall(.{ .extern_func = .{
                         .return_type = lhs_ty.toIntern(),
                         .param_types = &.{
                             lhs_ty.toIntern(),
                             rhs_ty.toIntern(),
                         },
-                        .callee = std.fmt.bufPrint(&add_callee_buf, "__add{c}f3", .{
+                        .sym = std.fmt.bufPrint(&add_sym_buf, "__add{c}f3", .{
                             floatCompilerRtAbiName(float_bits),
                         }) catch unreachable,
                     } }, &.{ lhs_ty, rhs_ty }, &.{ result, .{ .air_ref = rhs_air } }, .{});
@@ -171144,10 +171053,10 @@ fn genBinOp(
                     }),
                     else => unreachable,
                 };
-                break :result try self.genCall(.{ .lib = .{
+                break :result try self.genCall(.{ .extern_func = .{
                     .return_type = lhs_ty.toIntern(),
                     .param_types = &.{ lhs_ty.toIntern(), rhs_ty.toIntern() },
-                    .callee = callee,
+                    .sym = sym,
                 } }, &.{ lhs_ty, rhs_ty }, &.{ adjusted, .{ .air_ref = rhs_air } }, .{});
             },
             .div_trunc, .div_floor => try self.genRoundLibcall(lhs_ty, result, .{
@@ -171430,13 +171339,15 @@ fn genBinOp(
                         .immediate,
                         .eflags,
                         .register_offset,
-                        .load_symbol,
-                        .lea_symbol,
-                        .load_direct,
-                        .lea_direct,
-                        .load_got,
-                        .lea_got,
                         .lea_frame,
+                        .load_nav,
+                        .lea_nav,
+                        .load_uav,
+                        .lea_uav,
+                        .load_lazy_sym,
+                        .lea_lazy_sym,
+                        .load_extern_func,
+                        .lea_extern_func,
                         => true,
                         .memory => |addr| std.math.cast(i32, @as(i64, @bitCast(addr))) == null,
                         else => false,
@@ -171489,15 +171400,15 @@ fn genBinOp(
                         .register_offset,
                         .register_overflow,
                         .register_mask,
-                        .load_symbol,
-                        .lea_symbol,
-                        .load_pcrel,
-                        .lea_pcrel,
-                        .load_direct,
-                        .lea_direct,
-                        .load_got,
-                        .lea_got,
                         .lea_frame,
+                        .load_nav,
+                        .lea_nav,
+                        .load_uav,
+                        .lea_uav,
+                        .load_lazy_sym,
+                        .lea_lazy_sym,
+                        .load_extern_func,
+                        .lea_extern_func,
                         .elementwise_args,
                         .reserved_frame,
                         .air_ref,
@@ -172595,7 +172506,7 @@ fn genBinOp(
                     .cmp_neq,
                     => {
                         const unsigned_ty = try lhs_ty.toUnsigned(pt);
-                        const not_mcv = try self.genTypedValue(try unsigned_ty.maxInt(pt, unsigned_ty));
+                        const not_mcv = try self.lowerValue(try unsigned_ty.maxInt(pt, unsigned_ty));
                         const not_mem: Memory = if (not_mcv.isBase())
                             try not_mcv.mem(self, .{ .size = .fromSize(abi_size) })
                         else
@@ -172677,11 +172588,11 @@ fn genBinOpMir(
         .eflags,
         .register_overflow,
         .register_mask,
-        .lea_direct,
-        .lea_got,
         .lea_frame,
-        .lea_symbol,
-        .lea_pcrel,
+        .lea_nav,
+        .lea_uav,
+        .lea_lazy_sym,
+        .lea_extern_func,
         .elementwise_args,
         .reserved_frame,
         .air_ref,
@@ -172771,16 +172682,16 @@ fn genBinOpMir(
                     .register_offset,
                     .memory,
                     .indirect,
-                    .load_symbol,
-                    .lea_symbol,
-                    .load_pcrel,
-                    .lea_pcrel,
-                    .load_direct,
-                    .lea_direct,
-                    .load_got,
-                    .lea_got,
                     .load_frame,
                     .lea_frame,
+                    .load_nav,
+                    .lea_nav,
+                    .load_uav,
+                    .lea_uav,
+                    .load_lazy_sym,
+                    .lea_lazy_sym,
+                    .load_extern_func,
+                    .lea_extern_func,
                     => {
                         direct: {
                             try self.asmRegisterMemory(mir_limb_tag, dst_alias, switch (src_mcv) {
@@ -172813,10 +172724,11 @@ fn genBinOpMir(
                         switch (src_mcv) {
                             .eflags,
                             .register_offset,
-                            .lea_symbol,
-                            .lea_direct,
-                            .lea_got,
                             .lea_frame,
+                            .lea_nav,
+                            .lea_uav,
+                            .lea_lazy_sym,
+                            .lea_extern_func,
                             => {
                                 assert(off == 0);
                                 const reg = try self.copyToTmpRegister(ty, src_mcv);
@@ -172828,9 +172740,10 @@ fn genBinOpMir(
                                 );
                             },
                             .memory,
-                            .load_symbol,
-                            .load_direct,
-                            .load_got,
+                            .load_nav,
+                            .load_uav,
+                            .load_lazy_sym,
+                            .load_extern_func,
                             => {
                                 const ptr_ty = try pt.singleConstPtrType(ty);
                                 const addr_reg = try self.copyToTmpRegister(ptr_ty, src_mcv.address());
@@ -172850,13 +172763,20 @@ fn genBinOpMir(
                 }
             }
         },
-        .memory, .indirect, .load_symbol, .load_pcrel, .load_got, .load_direct, .load_frame => {
+        .memory,
+        .indirect,
+        .load_frame,
+        .load_nav,
+        .load_uav,
+        .load_lazy_sym,
+        .load_extern_func,
+        => {
             const OpInfo = ?struct { addr_reg: Register, addr_lock: RegisterLock };
             const limb_abi_size: u32 = @min(abi_size, 8);
 
             const dst_info: OpInfo = switch (dst_mcv) {
                 else => unreachable,
-                .memory, .load_symbol, .load_got, .load_direct => dst: {
+                .memory, .load_nav, .load_uav, .load_lazy_sym, .load_extern_func => dst: {
                     const dst_addr_reg =
                         (try self.register_manager.allocReg(null, abi.RegisterClass.gp)).to64();
                     const dst_addr_lock = self.register_manager.lockRegAssumeUnused(dst_addr_reg);
@@ -172892,19 +172812,24 @@ fn genBinOpMir(
                 .register_quadruple,
                 .register_offset,
                 .indirect,
-                .lea_direct,
-                .lea_got,
                 .load_frame,
                 .lea_frame,
-                .lea_symbol,
-                .lea_pcrel,
+                .lea_nav,
+                .lea_uav,
+                .lea_lazy_sym,
+                .lea_extern_func,
                 => null,
-                .memory, .load_symbol, .load_pcrel, .load_got, .load_direct => src: {
+                .memory,
+                .load_nav,
+                .load_uav,
+                .load_lazy_sym,
+                .load_extern_func,
+                => src: {
                     switch (resolved_src_mcv) {
                         .memory => |addr| if (std.math.cast(i32, @as(i64, @bitCast(addr))) != null and
                             std.math.cast(i32, @as(i64, @bitCast(addr)) + abi_size - limb_abi_size) != null)
                             break :src null,
-                        .load_symbol, .load_got, .load_direct => {},
+                        .load_nav, .load_uav, .load_lazy_sym, .load_extern_func => {},
                         else => unreachable,
                     }
 
@@ -172944,9 +172869,10 @@ fn genBinOpMir(
                 };
                 const dst_limb_mem: Memory = switch (dst_mcv) {
                     .memory,
-                    .load_symbol,
-                    .load_got,
-                    .load_direct,
+                    .load_nav,
+                    .load_uav,
+                    .load_lazy_sym,
+                    .load_extern_func,
                     => .{
                         .base = .{ .reg = dst_info.?.addr_reg },
                         .mod = .{ .rm = .{
@@ -173036,16 +172962,16 @@ fn genBinOpMir(
                     .eflags,
                     .memory,
                     .indirect,
-                    .load_symbol,
-                    .lea_symbol,
-                    .load_pcrel,
-                    .lea_pcrel,
-                    .load_direct,
-                    .lea_direct,
-                    .load_got,
-                    .lea_got,
                     .load_frame,
                     .lea_frame,
+                    .load_nav,
+                    .lea_nav,
+                    .load_uav,
+                    .lea_uav,
+                    .load_lazy_sym,
+                    .lea_lazy_sym,
+                    .load_extern_func,
+                    .lea_extern_func,
                     => {
                         const src_limb_mcv: MCValue = if (src_info) |info| .{
                             .indirect = .{ .reg = info.addr_reg, .off = off },
@@ -173055,10 +172981,11 @@ fn genBinOpMir(
                             },
                             .eflags,
                             .register_offset,
-                            .lea_symbol,
-                            .lea_direct,
-                            .lea_got,
                             .lea_frame,
+                            .lea_nav,
+                            .lea_uav,
+                            .lea_lazy_sym,
+                            .lea_extern_func,
                             => switch (limb_i) {
                                 0 => resolved_src_mcv,
                                 else => .{ .immediate = 0 },
@@ -173106,11 +173033,11 @@ fn genIntMulComplexOpMir(self: *CodeGen, dst_ty: Type, dst_mcv: MCValue, src_mcv
         .register_offset,
         .register_overflow,
         .register_mask,
-        .lea_symbol,
-        .lea_pcrel,
-        .lea_direct,
-        .lea_got,
         .lea_frame,
+        .lea_nav,
+        .lea_uav,
+        .lea_lazy_sym,
+        .lea_extern_func,
         .elementwise_args,
         .reserved_frame,
         .air_ref,
@@ -173168,15 +173095,15 @@ fn genIntMulComplexOpMir(self: *CodeGen, dst_ty: Type, dst_mcv: MCValue, src_mcv
                 },
                 .register_offset,
                 .eflags,
-                .load_symbol,
-                .lea_symbol,
-                .load_pcrel,
-                .lea_pcrel,
-                .load_direct,
-                .lea_direct,
-                .load_got,
-                .lea_got,
                 .lea_frame,
+                .load_nav,
+                .lea_nav,
+                .load_uav,
+                .lea_uav,
+                .load_lazy_sym,
+                .lea_lazy_sym,
+                .load_extern_func,
+                .lea_extern_func,
                 => {
                     const src_reg = try self.copyToTmpRegister(dst_ty, resolved_src_mcv);
                     switch (abi_size) {
@@ -173231,7 +173158,14 @@ fn genIntMulComplexOpMir(self: *CodeGen, dst_ty: Type, dst_mcv: MCValue, src_mcv
             }
         },
         .register_pair, .register_triple, .register_quadruple => unreachable, // unimplemented
-        .memory, .indirect, .load_symbol, .load_pcrel, .load_direct, .load_got, .load_frame => {
+        .memory,
+        .indirect,
+        .load_frame,
+        .load_nav,
+        .load_uav,
+        .load_lazy_sym,
+        .load_extern_func,
+        => {
             const tmp_reg = try self.copyToTmpRegister(dst_ty, dst_mcv);
             const tmp_mcv = MCValue{ .register = tmp_reg };
             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
                 },
                 .data = .{ .fa = frame_addr },
             }),
-            .lea_symbol => |sym_off| try cg.addInst(.{
-                .tag = .pseudo,
-                .ops = switch (air_tag) {
-                    else => unreachable,
-                    .arg, .dbg_arg_inline => .pseudo_dbg_arg_reloc,
-                    .dbg_var_val => .pseudo_dbg_var_reloc,
-                },
-                .data = .{ .reloc = sym_off },
-            }),
             else => {
                 const frame_index = try cg.allocFrameIndex(.initSpill(ty, cg.pt.zcu));
                 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
                     })),
                 } },
             }),
-            // debug info should explicitly ignore pcrel requirements
-            .lea_symbol, .lea_pcrel => |sym_off| try cg.addInst(.{
+            .lea_nav => |nav| try cg.addInst(.{
                 .tag = .pseudo,
                 .ops = .pseudo_dbg_var_m,
                 .data = .{ .x = .{
                     .payload = try cg.addExtra(Mir.Memory.encode(.{
-                        .base = .{ .reloc = sym_off.sym_index },
-                        .mod = .{ .rm = .{
-                            .size = .qword,
-                            .disp = sym_off.off,
-                        } },
+                        .base = .{ .nav = nav },
+                        .mod = .{ .rm = .{ .size = .qword } },
                     })),
                 } },
             }),
-            .lea_direct, .lea_got => |sym_index| try cg.addInst(.{
+            .lea_uav => |uav| try cg.addInst(.{
                 .tag = .pseudo,
                 .ops = .pseudo_dbg_var_m,
                 .data = .{ .x = .{
                     .payload = try cg.addExtra(Mir.Memory.encode(.{
-                        .base = .{ .reloc = sym_index },
+                        .base = .{ .uav = uav },
+                        .mod = .{ .rm = .{ .size = .qword } },
+                    })),
+                } },
+            }),
+            .lea_lazy_sym => |lazy_sym| try cg.addInst(.{
+                .tag = .pseudo,
+                .ops = .pseudo_dbg_var_m,
+                .data = .{ .x = .{
+                    .payload = try cg.addExtra(Mir.Memory.encode(.{
+                        .base = .{ .lazy_sym = lazy_sym },
+                        .mod = .{ .rm = .{ .size = .qword } },
+                    })),
+                } },
+            }),
+            .lea_extern_func => |extern_func| try cg.addInst(.{
+                .tag = .pseudo,
+                .ops = .pseudo_dbg_var_m,
+                .data = .{ .x = .{
+                    .payload = try cg.addExtra(Mir.Memory.encode(.{
+                        .base = .{ .extern_func = extern_func },
                         .mod = .{ .rm = .{ .size = .qword } },
                     })),
                 } },
@@ -173502,11 +173443,10 @@ fn airCall(self: *CodeGen, inst: Air.Inst.Index, modifier: std.builtin.CallModif
 
 fn genCall(self: *CodeGen, info: union(enum) {
     air: Air.Inst.Ref,
-    lib: struct {
+    extern_func: struct {
         return_type: InternPool.Index,
         param_types: []const InternPool.Index,
-        lib: ?[]const u8 = null,
-        callee: []const u8,
+        sym: []const u8,
     },
 }, arg_types: []const Type, args: []const MCValue, opts: CopyOptions) !MCValue {
     const pt = self.pt;
@@ -173522,9 +173462,9 @@ fn genCall(self: *CodeGen, info: union(enum) {
                 else => unreachable,
             };
         },
-        .lib => |lib| try pt.funcType(.{
-            .param_types = lib.param_types,
-            .return_type = lib.return_type,
+        .extern_func => |extern_func| try pt.funcType(.{
+            .param_types = extern_func.param_types,
+            .return_type = extern_func.return_type,
             .cc = self.target.cCallingConvention().?,
         }),
     };
@@ -173753,52 +173693,9 @@ fn genCall(self: *CodeGen, info: union(enum) {
                     else => func_key,
                 } else func_key,
             }) {
-                .func => |func| {
-                    if (self.bin_file.cast(.elf)) |elf_file| {
-                        const zo = elf_file.zigObjectPtr().?;
-                        const sym_index = try zo.getOrCreateMetadataForNav(zcu, func.owner_nav);
-                        try self.asmImmediate(.{ ._, .call }, .rel(.{ .sym_index = sym_index }));
-                    } else if (self.bin_file.cast(.coff)) |coff_file| {
-                        const atom = try coff_file.getOrCreateAtomForNav(func.owner_nav);
-                        const sym_index = coff_file.getAtom(atom).getSymbolIndex().?;
-                        const scratch_reg = abi.getCAbiLinkerScratchReg(fn_info.cc);
-                        try self.genSetReg(scratch_reg, .usize, .{ .lea_got = sym_index }, .{});
-                        try self.asmRegister(.{ ._, .call }, scratch_reg);
-                    } else if (self.bin_file.cast(.macho)) |macho_file| {
-                        const zo = macho_file.getZigObject().?;
-                        const sym_index = try zo.getOrCreateMetadataForNav(macho_file, func.owner_nav);
-                        const sym = zo.symbols.items[sym_index];
-                        try self.asmImmediate(.{ ._, .call }, .rel(.{ .sym_index = sym.nlist_idx }));
-                    } else if (self.bin_file.cast(.plan9)) |p9| {
-                        const atom_index = try p9.seeNav(pt, func.owner_nav);
-                        const atom = p9.getAtom(atom_index);
-                        try self.asmMemory(.{ ._, .call }, .{
-                            .base = .{ .reg = .ds },
-                            .mod = .{ .rm = .{
-                                .size = .qword,
-                                .disp = @intCast(atom.getOffsetTableAddress(p9)),
-                            } },
-                        });
-                    } else unreachable;
-                },
-                .@"extern" => |@"extern"| if (self.bin_file.cast(.elf)) |elf_file| {
-                    const target_sym_index = try elf_file.getGlobalSymbol(
-                        @"extern".name.toSlice(ip),
-                        @"extern".lib_name.toSlice(ip),
-                    );
-                    try self.asmImmediate(.{ ._, .call }, .rel(.{ .sym_index = target_sym_index }));
-                } else if (self.bin_file.cast(.macho)) |macho_file| {
-                    const target_sym_index = try macho_file.getGlobalSymbol(
-                        @"extern".name.toSlice(ip),
-                        @"extern".lib_name.toSlice(ip),
-                    );
-                    try self.asmImmediate(.{ ._, .call }, .rel(.{ .sym_index = target_sym_index }));
-                } else try self.genExternSymbolRef(
-                    .call,
-                    @"extern".lib_name.toSlice(ip),
-                    @"extern".name.toSlice(ip),
-                ),
-                else => return self.fail("TODO implement calling bitcasted functions", .{}),
+                else => unreachable,
+                .func => |func| try self.asmImmediate(.{ ._, .call }, .{ .nav = .{ .index = func.owner_nav } }),
+                .@"extern" => |@"extern"| try self.asmImmediate(.{ ._, .call }, .{ .nav = .{ .index = @"extern".owner_nav } }),
             }
         } else {
             assert(self.typeOf(callee).zigTypeTag(zcu) == .pointer);
@@ -173806,13 +173703,7 @@ fn genCall(self: *CodeGen, info: union(enum) {
             try self.genSetReg(scratch_reg, .usize, .{ .air_ref = callee }, .{});
             try self.asmRegister(.{ ._, .call }, scratch_reg);
         },
-        .lib => |lib| if (self.bin_file.cast(.elf)) |elf_file| {
-            const target_sym_index = try elf_file.getGlobalSymbol(lib.callee, lib.lib);
-            try self.asmImmediate(.{ ._, .call }, .rel(.{ .sym_index = target_sym_index }));
-        } else if (self.bin_file.cast(.macho)) |macho_file| {
-            const target_sym_index = try macho_file.getGlobalSymbol(lib.callee, lib.lib);
-            try self.asmImmediate(.{ ._, .call }, .rel(.{ .sym_index = target_sym_index }));
-        } else try self.genExternSymbolRef(.call, lib.lib, lib.callee),
+        .extern_func => |extern_func| try self.asmImmediate(.{ ._, .call }, .{ .extern_func = try self.addString(extern_func.sym) }),
     }
     return call_info.return_value.short;
 }
@@ -173946,11 +173837,11 @@ fn airCmp(self: *CodeGen, inst: Air.Inst.Index, op: std.math.CompareOperator) !v
                     80, 128 => false,
                     else => unreachable,
                 }) {
-                    var callee_buf: ["__???f2".len]u8 = undefined;
-                    const ret = try self.genCall(.{ .lib = .{
+                    var sym_buf: ["__???f2".len]u8 = undefined;
+                    const ret = try self.genCall(.{ .extern_func = .{
                         .return_type = .i32_type,
                         .param_types = &.{ ty.toIntern(), ty.toIntern() },
-                        .callee = std.fmt.bufPrint(&callee_buf, "__{s}{c}f2", .{
+                        .sym = std.fmt.bufPrint(&sym_buf, "__{s}{c}f2", .{
                             switch (op) {
                                 .eq => "eq",
                                 .neq => "ne",
@@ -174093,17 +173984,27 @@ fn airCmp(self: *CodeGen, inst: Air.Inst.Index, op: std.math.CompareOperator) !v
                                     .register_overflow,
                                     .register_mask,
                                     .indirect,
-                                    .lea_direct,
-                                    .lea_got,
                                     .lea_frame,
-                                    .lea_symbol,
-                                    .lea_pcrel,
+                                    .lea_nav,
+                                    .lea_uav,
+                                    .lea_lazy_sym,
+                                    .lea_extern_func,
                                     .elementwise_args,
                                     .reserved_frame,
                                     .air_ref,
                                     => unreachable,
-                                    .register, .register_pair, .register_triple, .register_quadruple, .load_frame => null,
-                                    .memory, .load_symbol, .load_pcrel, .load_got, .load_direct => dst: {
+                                    .register,
+                                    .register_pair,
+                                    .register_triple,
+                                    .register_quadruple,
+                                    .load_frame,
+                                    => null,
+                                    .memory,
+                                    .load_nav,
+                                    .load_uav,
+                                    .load_lazy_sym,
+                                    .load_extern_func,
+                                    => dst: {
                                         switch (resolved_dst_mcv) {
                                             .memory => |addr| if (std.math.cast(
                                                 i32,
@@ -174112,7 +174013,7 @@ fn airCmp(self: *CodeGen, inst: Air.Inst.Index, op: std.math.CompareOperator) !v
                                                 i32,
                                                 @as(i64, @bitCast(addr)) + abi_size - 8,
                                             ) != null) break :dst null,
-                                            .load_symbol, .load_pcrel, .load_got, .load_direct => {},
+                                            .load_nav, .load_uav, .load_lazy_sym, .load_extern_func => {},
                                             else => unreachable,
                                         }
 
@@ -174149,17 +174050,26 @@ fn airCmp(self: *CodeGen, inst: Air.Inst.Index, op: std.math.CompareOperator) !v
                                     .register_overflow,
                                     .register_mask,
                                     .indirect,
-                                    .lea_symbol,
-                                    .lea_pcrel,
-                                    .lea_direct,
-                                    .lea_got,
                                     .lea_frame,
+                                    .lea_nav,
+                                    .lea_uav,
+                                    .lea_lazy_sym,
+                                    .lea_extern_func,
                                     .elementwise_args,
                                     .reserved_frame,
                                     .air_ref,
                                     => unreachable,
-                                    .register_pair, .register_triple, .register_quadruple, .load_frame => null,
-                                    .memory, .load_symbol, .load_pcrel, .load_got, .load_direct => src: {
+                                    .register_pair,
+                                    .register_triple,
+                                    .register_quadruple,
+                                    .load_frame,
+                                    => null,
+                                    .memory,
+                                    .load_nav,
+                                    .load_uav,
+                                    .load_lazy_sym,
+                                    .load_extern_func,
+                                    => src: {
                                         switch (resolved_src_mcv) {
                                             .memory => |addr| if (std.math.cast(
                                                 i32,
@@ -174168,7 +174078,7 @@ fn airCmp(self: *CodeGen, inst: Air.Inst.Index, op: std.math.CompareOperator) !v
                                                 i32,
                                                 @as(i64, @bitCast(addr)) + abi_size - 8,
                                             ) != null) break :src null,
-                                            .load_symbol, .load_pcrel, .load_got, .load_direct => {},
+                                            .load_nav, .load_uav, .load_lazy_sym, .load_extern_func => {},
                                             else => unreachable,
                                         }
 
@@ -174453,14 +174363,19 @@ fn airDbgVar(cg: *CodeGen, inst: Air.Inst.Index) !void {
     if (cg.mod.strip) return;
     const air_tag = cg.air.instructions.items(.tag)[@intFromEnum(inst)];
     const pl_op = cg.air.instructions.items(.data)[@intFromEnum(inst)].pl_op;
-
-    const name_nts: Air.NullTerminatedString = @enumFromInt(pl_op.payload);
-    assert(name_nts != .none);
-    const name = name_nts.toSlice(cg.air);
-    try cg.mir_local_name_bytes.appendSlice(cg.gpa, name[0 .. name.len + 1]);
-
+    const air_name: Air.NullTerminatedString = @enumFromInt(pl_op.payload);
     const ty = cg.typeOf(pl_op.operand);
-    try cg.mir_local_types.append(cg.gpa, ty.toIntern());
+
+    try cg.mir_locals.append(cg.gpa, .{
+        .name = switch (air_name) {
+            .none => switch (air_tag) {
+                else => unreachable,
+                .dbg_arg_inline => .none,
+            },
+            else => try cg.addString(air_name.toSlice(cg.air)),
+        },
+        .type = ty.toIntern(),
+    });
 
     try cg.genLocalDebugInfo(air_tag, ty, try cg.resolveInst(pl_op.operand));
     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)
         .register_offset,
         .register_overflow,
         .register_mask,
-        .lea_direct,
-        .lea_got,
-        .lea_symbol,
-        .lea_pcrel,
+        .lea_nav,
+        .lea_uav,
+        .lea_lazy_sym,
+        .lea_extern_func,
         .elementwise_args,
         .reserved_frame,
         .air_ref,
@@ -174618,10 +174533,10 @@ fn isNull(self: *CodeGen, inst: Air.Inst.Index, opt_ty: Type, opt_mcv: MCValue)
         },
 
         .memory,
-        .load_symbol,
-        .load_pcrel,
-        .load_got,
-        .load_direct,
+        .load_nav,
+        .load_uav,
+        .load_lazy_sym,
+        .load_extern_func,
         => {
             const addr_reg = (try self.register_manager.allocReg(null, abi.RegisterClass.gp)).to64();
             const addr_reg_lock = self.register_manager.lockRegAssumeUnused(addr_reg);
@@ -175655,7 +175570,7 @@ fn airAsm(self: *CodeGen, inst: Air.Inst.Index) !void {
                 .memory => |addr| if (std.math.cast(i32, @as(i64, @bitCast(addr)))) |_|
                     break :arg input_mcv,
                 .indirect, .load_frame => break :arg input_mcv,
-                .load_symbol, .load_direct, .load_got => {},
+                .load_nav, .load_uav, .load_lazy_sym, .load_extern_func => {},
                 else => {
                     const temp_mcv = try self.allocTempRegOrMem(ty, false);
                     try self.genCopy(ty, temp_mcv, input_mcv, .{});
@@ -175934,12 +175849,20 @@ fn airAsm(self: *CodeGen, inst: Air.Inst.Index) !void {
                         } }
                     else
                         return self.fail("invalid modifier: '{s}'", .{modifier}),
-                    .lea_got => |sym_index| if (std.mem.eql(u8, modifier, "P"))
-                        .{ .reg = try self.copyToTmpRegister(.usize, .{ .lea_got = sym_index }) }
+                    .lea_nav => |nav| if (std.mem.eql(u8, modifier, "P"))
+                        .{ .reg = try self.copyToTmpRegister(.usize, .{ .lea_nav = nav }) }
+                    else
+                        return self.fail("invalid modifier: '{s}'", .{modifier}),
+                    .lea_uav => |uav| if (std.mem.eql(u8, modifier, "P"))
+                        .{ .reg = try self.copyToTmpRegister(.usize, .{ .lea_uav = uav }) }
+                    else
+                        return self.fail("invalid modifier: '{s}'", .{modifier}),
+                    .lea_lazy_sym => |lazy_sym| if (std.mem.eql(u8, modifier, "P"))
+                        .{ .reg = try self.copyToTmpRegister(.usize, .{ .lea_lazy_sym = lazy_sym }) }
                     else
                         return self.fail("invalid modifier: '{s}'", .{modifier}),
-                    .lea_symbol => |sym_off| if (std.mem.eql(u8, modifier, "P"))
-                        .{ .reg = try self.copyToTmpRegister(.usize, .{ .lea_symbol = sym_off }) }
+                    .lea_extern_func => |extern_func| if (std.mem.eql(u8, modifier, "P"))
+                        .{ .reg = try self.copyToTmpRegister(.usize, .{ .lea_extern_func = extern_func }) }
                     else
                         return self.fail("invalid modifier: '{s}'", .{modifier}),
                     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
         .eflags,
         .register_overflow,
         .register_mask,
-        .lea_direct,
-        .lea_got,
         .lea_frame,
-        .lea_symbol,
-        .lea_pcrel,
+        .lea_nav,
+        .lea_uav,
+        .lea_lazy_sym,
+        .lea_extern_func,
         .elementwise_args,
         .reserved_frame,
         .air_ref,
@@ -176722,7 +176645,7 @@ fn genCopy(self: *CodeGen, ty: Type, dst_mcv: MCValue, src_mcv: MCValue, opts: C
                     }
                     return;
                 },
-                .load_symbol, .load_pcrel, .load_direct, .load_got => {
+                .load_nav, .load_uav, .load_lazy_sym, .load_extern_func => {
                     const src_addr_reg =
                         (try self.register_manager.allocReg(null, abi.RegisterClass.gp)).to64();
                     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
                         .undef => if (opts.safety and part_i > 0) .{ .register = dst_regs[0] } else .undef,
                         dst_tag => |src_regs| .{ .register = src_regs[part_i] },
                         .memory, .indirect, .load_frame => src_mcv.address().offset(part_disp).deref(),
-                        .load_symbol, .load_pcrel, .load_direct, .load_got => .{ .indirect = .{
+                        .load_nav,
+                        .load_uav,
+                        .load_lazy_sym,
+                        .load_extern_func,
+                        => .{ .indirect = .{
                             .reg = src_info.?.addr_reg,
                             .off = part_disp,
                         } },
@@ -176776,11 +176703,11 @@ fn genCopy(self: *CodeGen, ty: Type, dst_mcv: MCValue, src_mcv: MCValue, opts: C
             src_mcv,
             opts,
         ),
-        .memory, .load_symbol, .load_pcrel, .load_direct, .load_got => {
+        .memory => {
             switch (dst_mcv) {
                 .memory => |addr| if (std.math.cast(i32, @as(i64, @bitCast(addr)))) |small_addr|
                     return self.genSetMem(.{ .reg = .ds }, small_addr, ty, src_mcv, opts),
-                .load_symbol, .load_pcrel, .load_direct, .load_got => {},
+                .load_nav, .load_uav, .load_lazy_sym, .load_extern_func => {},
                 else => unreachable,
             }
 
@@ -176797,6 +176724,10 @@ fn genCopy(self: *CodeGen, ty: Type, dst_mcv: MCValue, src_mcv: MCValue, opts: C
             src_mcv,
             opts,
         ),
+        .load_nav => |nav| try self.genSetMem(.{ .nav = nav }, 0, ty, src_mcv, opts),
+        .load_uav => |uav| try self.genSetMem(.{ .uav = uav }, 0, ty, src_mcv, opts),
+        .load_lazy_sym => |lazy_sym| try self.genSetMem(.{ .lazy_sym = lazy_sym }, 0, ty, src_mcv, opts),
+        .load_extern_func => |extern_func| try self.genSetMem(.{ .extern_func = extern_func }, 0, ty, src_mcv, opts),
     }
 }
 
@@ -176841,14 +176772,14 @@ fn genSetReg(
                     .len = self.vectorSize(.float),
                     .child = .u8_type,
                 });
-                try self.genSetReg(dst_reg, full_ty, try self.genTypedValue(
+                try self.genSetReg(dst_reg, full_ty, try self.lowerValue(
                     .fromInterned(try pt.intern(.{ .aggregate = .{
                         .ty = full_ty.toIntern(),
                         .storage = .{ .repeated_elem = (try pt.intValue(.u8, 0xaa)).toIntern() },
                     } })),
                 ), opts);
             },
-            .x87 => try self.genSetReg(dst_reg, .f80, try self.genTypedValue(
+            .x87 => try self.genSetReg(dst_reg, .f80, try self.lowerValue(
                 try pt.floatValue(.f80, @as(f80, @bitCast(@as(u80, 0xaaaaaaaaaaaaaaaaaaaa)))),
             ), opts),
             .ip, .cr, .dr => unreachable,
@@ -176878,12 +176809,24 @@ fn genSetReg(
             }
         },
         .register => |src_reg| if (dst_reg.id() != src_reg.id()) switch (dst_reg.class()) {
-            .general_purpose, .gphi => switch (src_reg.class()) {
-                .general_purpose, .gphi => try self.asmRegisterRegister(
+            .general_purpose => switch (src_reg.class()) {
+                .general_purpose => try self.asmRegisterRegister(
                     .{ ._, .mov },
                     dst_alias,
                     registerAlias(src_reg, abi_size),
                 ),
+                .gphi => if (dst_reg.isClass(.gphi)) try self.asmRegisterRegister(
+                    .{ ._, .mov },
+                    dst_alias,
+                    registerAlias(src_reg, abi_size),
+                ) else {
+                    const src_lock = self.register_manager.lockReg(src_reg);
+                    defer if (src_lock) |lock| self.register_manager.unlockReg(lock);
+                    const tmp_reg = try self.register_manager.allocReg(null, abi.RegisterClass.gphi);
+
+                    try self.asmRegisterRegister(.{ ._, .mov }, tmp_reg.to8(), src_reg);
+                    try self.asmRegisterRegister(.{ ._, .mov }, dst_alias, tmp_reg.to8());
+                },
                 .segment => try self.asmRegisterRegister(
                     .{ ._, .mov },
                     dst_alias,
@@ -176919,6 +176862,26 @@ fn genSetReg(
                     });
                 },
             },
+            .gphi => switch (src_reg.class()) {
+                .general_purpose => if (src_reg.isClass(.gphi)) try self.asmRegisterRegister(
+                    .{ ._, .mov },
+                    dst_alias,
+                    registerAlias(src_reg, abi_size),
+                ) else {
+                    const dst_lock = self.register_manager.lockReg(dst_reg);
+                    defer if (dst_lock) |lock| self.register_manager.unlockReg(lock);
+                    const tmp_reg = try self.register_manager.allocReg(null, abi.RegisterClass.gphi);
+
+                    try self.asmRegisterRegister(.{ ._, .mov }, tmp_reg.to8(), src_reg.to8());
+                    try self.asmRegisterRegister(.{ ._, .mov }, dst_reg, tmp_reg.to8());
+                },
+                .gphi => try self.asmRegisterRegister(
+                    .{ ._, .mov },
+                    dst_alias,
+                    registerAlias(src_reg, abi_size),
+                ),
+                .segment, .x87, .mmx, .ip, .cr, .dr, .sse => unreachable,
+            },
             .segment => try self.asmRegisterRegister(
                 .{ ._, .mov },
                 dst_reg,
@@ -177237,7 +177200,7 @@ fn genSetReg(
             if (src_reg_mask.info.inverted) try self.asmRegister(.{ ._, .not }, registerAlias(bits_reg, abi_size));
             try self.genSetReg(dst_reg, ty, .{ .register = bits_reg }, .{});
         },
-        .memory, .load_symbol, .load_pcrel, .load_direct, .load_got => {
+        .memory, .load_nav, .load_uav, .load_lazy_sym, .load_extern_func => {
             switch (src_mcv) {
                 .memory => |addr| if (std.math.cast(i32, @as(i64, @bitCast(addr)))) |small_addr|
                     return (try self.moveStrategy(
@@ -177251,52 +177214,50 @@ fn genSetReg(
                             .disp = small_addr,
                         } },
                     }),
-                .load_symbol => |sym_off| switch (dst_reg.class()) {
+                .load_nav => |nav| switch (dst_reg.class()) {
                     .general_purpose, .gphi => {
-                        assert(sym_off.off == 0);
                         try self.asmRegisterMemory(.{ ._, .mov }, dst_alias, .{
-                            .base = .{ .reloc = sym_off.sym_index },
-                            .mod = .{ .rm = .{
-                                .size = self.memSize(ty),
-                                .disp = sym_off.off,
-                            } },
+                            .base = .{ .nav = nav },
+                            .mod = .{ .rm = .{ .size = self.memSize(ty) } },
                         });
                         return;
                     },
                     .segment, .mmx, .ip, .cr, .dr => unreachable,
                     .x87, .sse => {},
                 },
-                .load_pcrel => |sym_off| switch (dst_reg.class()) {
+                .load_uav => |uav| switch (dst_reg.class()) {
                     .general_purpose, .gphi => {
-                        assert(sym_off.off == 0);
                         try self.asmRegisterMemory(.{ ._, .mov }, dst_alias, .{
-                            .base = .{ .pcrel = sym_off.sym_index },
-                            .mod = .{ .rm = .{
-                                .size = self.memSize(ty),
-                                .disp = sym_off.off,
-                            } },
+                            .base = .{ .uav = uav },
+                            .mod = .{ .rm = .{ .size = self.memSize(ty) } },
                         });
                         return;
                     },
                     .segment, .mmx, .ip, .cr, .dr => unreachable,
                     .x87, .sse => {},
                 },
-                .load_direct => |sym_index| switch (dst_reg.class()) {
+                .load_lazy_sym => |lazy_sym| switch (dst_reg.class()) {
                     .general_purpose, .gphi => {
-                        _ = try self.addInst(.{
-                            .tag = .mov,
-                            .ops = .direct_reloc,
-                            .data = .{ .rx = .{
-                                .r1 = dst_alias,
-                                .payload = try self.addExtra(bits.SymbolOffset{ .sym_index = sym_index }),
-                            } },
+                        try self.asmRegisterMemory(.{ ._, .mov }, dst_alias, .{
+                            .base = .{ .lazy_sym = lazy_sym },
+                            .mod = .{ .rm = .{ .size = self.memSize(ty) } },
+                        });
+                        return;
+                    },
+                    .segment, .mmx, .ip, .cr, .dr => unreachable,
+                    .x87, .sse => {},
+                },
+                .load_extern_func => |extern_func| switch (dst_reg.class()) {
+                    .general_purpose, .gphi => {
+                        try self.asmRegisterMemory(.{ ._, .mov }, dst_alias, .{
+                            .base = .{ .extern_func = extern_func },
+                            .mod = .{ .rm = .{ .size = self.memSize(ty) } },
                         });
                         return;
                     },
                     .segment, .mmx, .ip, .cr, .dr => unreachable,
                     .x87, .sse => {},
                 },
-                .load_got => {},
                 else => unreachable,
             }
 
@@ -177309,65 +177270,17 @@ fn genSetReg(
                 .mod = .{ .rm = .{ .size = self.memSize(ty) } },
             });
         },
-        .lea_symbol => |sym_off| switch (self.bin_file.tag) {
-            .elf, .macho => {
-                try self.asmRegisterMemory(
-                    .{ ._, .lea },
-                    dst_reg.to64(),
-                    .{
-                        .base = .{ .reloc = sym_off.sym_index },
-                    },
-                );
-                if (sym_off.off != 0) try self.asmRegisterMemory(
-                    .{ ._, .lea },
-                    dst_reg.to64(),
-                    .{
-                        .base = .{ .reg = dst_reg.to64() },
-                        .mod = .{ .rm = .{ .disp = sym_off.off } },
-                    },
-                );
-            },
-            else => return self.fail("TODO emit symbol sequence on {s}", .{
-                @tagName(self.bin_file.tag),
-            }),
-        },
-        .lea_pcrel => |sym_off| switch (self.bin_file.tag) {
-            .elf, .macho => {
-                try self.asmRegisterMemory(
-                    .{ ._, .lea },
-                    dst_reg.to64(),
-                    .{
-                        .base = .{ .pcrel = sym_off.sym_index },
-                    },
-                );
-                if (sym_off.off != 0) try self.asmRegisterMemory(
-                    .{ ._, .lea },
-                    dst_reg.to64(),
-                    .{
-                        .base = .{ .reg = dst_reg.to64() },
-                        .mod = .{ .rm = .{ .disp = sym_off.off } },
-                    },
-                );
-            },
-            else => return self.fail("TODO emit symbol sequence on {s}", .{
-                @tagName(self.bin_file.tag),
-            }),
-        },
-        .lea_direct, .lea_got => |sym_index| _ = try self.addInst(.{
-            .tag = switch (src_mcv) {
-                .lea_direct => .lea,
-                .lea_got => .mov,
-                else => unreachable,
-            },
-            .ops = switch (src_mcv) {
-                .lea_direct => .direct_reloc,
-                .lea_got => .got_reloc,
-                else => unreachable,
-            },
-            .data = .{ .rx = .{
-                .r1 = dst_reg.to64(),
-                .payload = try self.addExtra(bits.SymbolOffset{ .sym_index = sym_index }),
-            } },
+        .lea_nav => |nav| try self.asmRegisterMemory(.{ ._, .lea }, dst_reg.to64(), .{
+            .base = .{ .nav = nav },
+        }),
+        .lea_uav => |uav| try self.asmRegisterMemory(.{ ._, .lea }, dst_reg.to64(), .{
+            .base = .{ .uav = uav },
+        }),
+        .lea_lazy_sym => |lazy_sym| try self.asmRegisterMemory(.{ ._, .lea }, dst_reg.to64(), .{
+            .base = .{ .lazy_sym = lazy_sym },
+        }),
+        .lea_extern_func => |lazy_sym| try self.asmRegisterMemory(.{ ._, .lea }, dst_reg.to64(), .{
+            .base = .{ .extern_func = lazy_sym },
         }),
         .air_ref => |src_ref| try self.genSetReg(dst_reg, ty, try self.resolveInst(src_ref), opts),
     }
@@ -177388,9 +177301,10 @@ fn genSetMem(
         .none => .{ .immediate = @bitCast(@as(i64, disp)) },
         .reg => |base_reg| .{ .register_offset = .{ .reg = base_reg, .off = disp } },
         .frame => |base_frame_index| .{ .lea_frame = .{ .index = base_frame_index, .off = disp } },
-        .table, .rip_inst => unreachable,
-        .reloc => |sym_index| .{ .lea_symbol = .{ .sym_index = sym_index, .off = disp } },
-        .pcrel => |sym_index| .{ .lea_pcrel = .{ .sym_index = sym_index, .off = disp } },
+        .table, .rip_inst, .lazy_sym => unreachable,
+        .nav => |nav| .{ .lea_nav = nav },
+        .uav => |uav| .{ .lea_uav = uav },
+        .extern_func => |extern_func| .{ .lea_extern_func = extern_func },
     };
     switch (src_mcv) {
         .none,
@@ -177453,6 +177367,7 @@ fn genSetMem(
             .rm = .{ .size = .byte, .disp = disp },
         } }),
         .register => |src_reg| {
+            const ip = &zcu.intern_pool;
             const mem_size = switch (base) {
                 .frame => |base_fi| mem_size: {
                     assert(disp >= 0);
@@ -177506,8 +177421,9 @@ fn genSetMem(
                     .index = frame_index,
                     .off = disp,
                 }).compare(.gte, src_align),
-                .table, .rip_inst => unreachable,
-                .reloc, .pcrel => false,
+                .table, .rip_inst, .lazy_sym, .extern_func => unreachable,
+                .nav => |nav| ip.getNav(nav).getAlignment().compare(.gte, src_align),
+                .uav => |uav| Type.fromInterned(uav.orig_ty).ptrAlignment(zcu).compare(.gte, src_align),
             })).write(
                 self,
                 .{ .base = base, .mod = .{ .rm = .{
@@ -177590,16 +177506,16 @@ fn genSetMem(
         },
         .memory,
         .indirect,
-        .load_direct,
-        .lea_direct,
-        .load_got,
-        .lea_got,
         .load_frame,
         .lea_frame,
-        .load_symbol,
-        .lea_symbol,
-        .load_pcrel,
-        .lea_pcrel,
+        .load_nav,
+        .lea_nav,
+        .load_uav,
+        .lea_uav,
+        .load_lazy_sym,
+        .lea_lazy_sym,
+        .load_extern_func,
+        .lea_extern_func,
         => switch (abi_size) {
             0 => {},
             1, 2, 4, 8 => {
@@ -177693,119 +177609,19 @@ fn genInlineMemset(
     try self.asmOpOnly(.{ .@"rep _sb", .sto });
 }
 
-fn genExternSymbolRef(
-    self: *CodeGen,
-    comptime tag: Mir.Inst.Tag,
-    lib: ?[]const u8,
-    callee: []const u8,
-) InnerError!void {
-    if (self.bin_file.cast(.coff)) |coff_file| {
-        const global_index = try coff_file.getGlobalSymbol(callee, lib);
-        const scratch_reg = abi.getCAbiLinkerScratchReg(self.target.cCallingConvention().?);
-        _ = try self.addInst(.{
-            .tag = .mov,
-            .ops = .import_reloc,
-            .data = .{ .rx = .{
-                .r1 = scratch_reg,
-                .payload = try self.addExtra(bits.SymbolOffset{
-                    .sym_index = link.File.Coff.global_symbol_bit | global_index,
-                }),
-            } },
-        });
-        switch (tag) {
-            .mov => {},
-            .call => try self.asmRegister(.{ ._, .call }, scratch_reg),
-            else => unreachable,
-        }
-    } else return self.fail("TODO implement calling extern functions", .{});
-}
-
 fn genLazySymbolRef(
     self: *CodeGen,
     comptime tag: Mir.Inst.Tag,
     reg: Register,
     lazy_sym: link.File.LazySymbol,
 ) InnerError!void {
-    const pt = self.pt;
-    if (self.bin_file.cast(.elf)) |elf_file| {
-        const zo = elf_file.zigObjectPtr().?;
-        const sym_index = zo.getOrCreateMetadataForLazySymbol(elf_file, pt, lazy_sym) catch |err|
-            return self.fail("{s} creating lazy symbol", .{@errorName(err)});
-        if (self.mod.pic) {
-            switch (tag) {
-                .lea, .call => try self.genSetReg(reg, .usize, .{
-                    .lea_symbol = .{ .sym_index = sym_index },
-                }, .{}),
-                .mov => try self.genSetReg(reg, .usize, .{
-                    .load_symbol = .{ .sym_index = sym_index },
-                }, .{}),
-                else => unreachable,
-            }
-            switch (tag) {
-                .lea, .mov => {},
-                .call => try self.asmRegister(.{ ._, .call }, reg),
-                else => unreachable,
-            }
-        } else switch (tag) {
-            .lea, .mov => try self.asmRegisterMemory(.{ ._, tag }, reg.to64(), .{
-                .base = .{ .reloc = sym_index },
-                .mod = .{ .rm = .{ .size = .qword } },
-            }),
-            .call => try self.asmImmediate(.{ ._, .call }, .rel(.{ .sym_index = sym_index })),
-            else => unreachable,
-        }
-    } else if (self.bin_file.cast(.plan9)) |p9_file| {
-        const atom_index = p9_file.getOrCreateAtomForLazySymbol(pt, lazy_sym) catch |err|
-            return self.fail("{s} creating lazy symbol", .{@errorName(err)});
-        var atom = p9_file.getAtom(atom_index);
-        _ = atom.getOrCreateOffsetTableEntry(p9_file);
-        const got_addr = atom.getOffsetTableAddress(p9_file);
-        const got_mem: Memory = .{
-            .base = .{ .reg = .ds },
-            .mod = .{ .rm = .{
-                .size = .qword,
-                .disp = @intCast(got_addr),
-            } },
-        };
-        switch (tag) {
-            .lea, .mov => try self.asmRegisterMemory(.{ ._, .mov }, reg.to64(), got_mem),
-            .call => try self.asmMemory(.{ ._, .call }, got_mem),
-            else => unreachable,
-        }
-        switch (tag) {
-            .lea, .call => {},
-            .mov => try self.asmRegisterMemory(
-                .{ ._, tag },
-                reg.to64(),
-                .initSib(.qword, .{ .base = .{ .reg = reg.to64() } }),
-            ),
-            else => unreachable,
-        }
-    } else if (self.bin_file.cast(.coff)) |coff_file| {
-        const atom_index = coff_file.getOrCreateAtomForLazySymbol(pt, lazy_sym) catch |err|
-            return self.fail("{s} creating lazy symbol", .{@errorName(err)});
-        const sym_index = coff_file.getAtom(atom_index).getSymbolIndex().?;
-        switch (tag) {
-            .lea, .call => try self.genSetReg(reg, .usize, .{ .lea_got = sym_index }, .{}),
-            .mov => try self.genSetReg(reg, .usize, .{ .load_got = sym_index }, .{}),
-            else => unreachable,
-        }
-        switch (tag) {
-            .lea, .mov => {},
-            .call => try self.asmRegister(.{ ._, .call }, reg),
-            else => unreachable,
-        }
-    } else if (self.bin_file.cast(.macho)) |macho_file| {
-        const zo = macho_file.getZigObject().?;
-        const sym_index = zo.getOrCreateMetadataForLazySymbol(macho_file, pt, lazy_sym) catch |err|
-            return self.fail("{s} creating lazy symbol", .{@errorName(err)});
-        const sym = zo.symbols.items[sym_index];
+    if (self.mod.pic) {
         switch (tag) {
             .lea, .call => try self.genSetReg(reg, .usize, .{
-                .lea_symbol = .{ .sym_index = sym.nlist_idx },
+                .lea_lazy_sym = lazy_sym,
             }, .{}),
             .mov => try self.genSetReg(reg, .usize, .{
-                .load_symbol = .{ .sym_index = sym.nlist_idx },
+                .lea_lazy_sym = lazy_sym,
             }, .{}),
             else => unreachable,
         }
@@ -177814,8 +177630,13 @@ fn genLazySymbolRef(
             .call => try self.asmRegister(.{ ._, .call }, reg),
             else => unreachable,
         }
-    } else {
-        return self.fail("TODO implement genLazySymbol for x86_64 {s}", .{@tagName(self.bin_file.tag)});
+    } else switch (tag) {
+        .lea, .mov => try self.asmRegisterMemory(.{ ._, tag }, reg.to64(), .{
+            .base = .{ .lazy_sym = lazy_sym },
+            .mod = .{ .rm = .{ .size = .qword } },
+        }),
+        .call => try self.asmImmediate(.{ ._, .call }, .{ .lazy_sym = lazy_sym }),
+        else => unreachable,
     }
 }
 
@@ -177968,11 +177789,11 @@ fn airFloatFromInt(self: *CodeGen, inst: Air.Inst.Index) !void {
                 src_ty.fmt(pt), dst_ty.fmt(pt),
             });
 
-            var callee_buf: ["__floatun?i?f".len]u8 = undefined;
-            break :result try self.genCall(.{ .lib = .{
+            var sym_buf: ["__floatun?i?f".len]u8 = undefined;
+            break :result try self.genCall(.{ .extern_func = .{
                 .return_type = dst_ty.toIntern(),
                 .param_types = &.{src_ty.toIntern()},
-                .callee = std.fmt.bufPrint(&callee_buf, "__float{s}{c}i{c}f", .{
+                .sym = std.fmt.bufPrint(&sym_buf, "__float{s}{c}i{c}f", .{
                     switch (src_signedness) {
                         .signed => "",
                         .unsigned => "un",
@@ -178048,11 +177869,11 @@ fn airIntFromFloat(self: *CodeGen, inst: Air.Inst.Index) !void {
                 src_ty.fmt(pt), dst_ty.fmt(pt),
             });
 
-            var callee_buf: ["__fixuns?f?i".len]u8 = undefined;
-            break :result try self.genCall(.{ .lib = .{
+            var sym_buf: ["__fixuns?f?i".len]u8 = undefined;
+            break :result try self.genCall(.{ .extern_func = .{
                 .return_type = dst_ty.toIntern(),
                 .param_types = &.{src_ty.toIntern()},
-                .callee = std.fmt.bufPrint(&callee_buf, "__fix{s}{c}f{c}i", .{
+                .sym = std.fmt.bufPrint(&sym_buf, "__fix{s}{c}f{c}i", .{
                     switch (dst_signedness) {
                         .signed => "",
                         .unsigned => "uns",
@@ -178153,9 +177974,9 @@ fn airCmpxchg(self: *CodeGen, inst: Air.Inst.Index) !void {
         .off => return self.fail("TODO airCmpxchg with {s}", .{@tagName(ptr_mcv)}),
     }
     const ptr_lock = switch (ptr_mem.base) {
-        .none, .frame, .reloc, .pcrel => null,
+        .none, .frame, .nav, .uav => null,
         .reg => |reg| self.register_manager.lockReg(reg),
-        .table, .rip_inst => unreachable,
+        .table, .rip_inst, .lazy_sym, .extern_func => unreachable,
     };
     defer if (ptr_lock) |lock| self.register_manager.unlockReg(lock);
 
@@ -178236,9 +178057,9 @@ fn atomicOp(
         .off => return self.fail("TODO airCmpxchg with {s}", .{@tagName(ptr_mcv)}),
     }
     const mem_lock = switch (ptr_mem.base) {
-        .none, .frame, .reloc, .pcrel => null,
+        .none, .frame, .nav, .uav => null,
         .reg => |reg| self.register_manager.lockReg(reg),
-        .table, .rip_inst => unreachable,
+        .table, .rip_inst, .lazy_sym, .extern_func => unreachable,
     };
     defer if (mem_lock) |lock| self.register_manager.unlockReg(lock);
 
@@ -179627,7 +179448,7 @@ fn airSelect(self: *CodeGen, inst: Air.Inst.Index) !void {
                 var mask_elems_buf: [32]u8 = undefined;
                 const mask_elems = mask_elems_buf[0..mask_len];
                 for (mask_elems, 0..) |*elem, bit| elem.* = @intCast(bit / elem_bits);
-                const mask_mcv = try self.genTypedValue(.fromInterned(try pt.intern(.{ .aggregate = .{
+                const mask_mcv = try self.lowerValue(.fromInterned(try pt.intern(.{ .aggregate = .{
                     .ty = mask_ty.toIntern(),
                     .storage = .{ .bytes = try zcu.intern_pool.getOrPutString(zcu.gpa, pt.tid, mask_elems, .maybe_embedded_nulls) },
                 } })));
@@ -179655,7 +179476,7 @@ fn airSelect(self: *CodeGen, inst: Air.Inst.Index) !void {
                     mask_elem_ty,
                     @as(u8, 1) << @truncate(bit),
                 )).toIntern();
-                const mask_mcv = try self.genTypedValue(.fromInterned(try pt.intern(.{ .aggregate = .{
+                const mask_mcv = try self.lowerValue(.fromInterned(try pt.intern(.{ .aggregate = .{
                     .ty = mask_ty.toIntern(),
                     .storage = .{ .elems = mask_elems },
                 } })));
@@ -180386,7 +180207,7 @@ fn airShuffle(self: *CodeGen, inst: Air.Inst.Index) !void {
                 else
                     try select_mask_elem_ty.minIntScalar(pt, select_mask_elem_ty)).toIntern();
             }
-            const select_mask_mcv = try self.genTypedValue(.fromInterned(try pt.intern(.{ .aggregate = .{
+            const select_mask_mcv = try self.lowerValue(.fromInterned(try pt.intern(.{ .aggregate = .{
                 .ty = select_mask_ty.toIntern(),
                 .storage = .{ .elems = select_mask_elems[0..mask_elems.len] },
             } })));
@@ -180531,7 +180352,7 @@ fn airShuffle(self: *CodeGen, inst: Air.Inst.Index) !void {
                 })).toIntern();
             }
             const lhs_mask_ty = try pt.vectorType(.{ .len = max_abi_size, .child = .u8_type });
-            const lhs_mask_mcv = try self.genTypedValue(.fromInterned(try pt.intern(.{ .aggregate = .{
+            const lhs_mask_mcv = try self.lowerValue(.fromInterned(try pt.intern(.{ .aggregate = .{
                 .ty = lhs_mask_ty.toIntern(),
                 .storage = .{ .elems = lhs_mask_elems[0..max_abi_size] },
             } })));
@@ -180562,7 +180383,7 @@ fn airShuffle(self: *CodeGen, inst: Air.Inst.Index) !void {
                 })).toIntern();
             }
             const rhs_mask_ty = try pt.vectorType(.{ .len = max_abi_size, .child = .u8_type });
-            const rhs_mask_mcv = try self.genTypedValue(.fromInterned(try pt.intern(.{ .aggregate = .{
+            const rhs_mask_mcv = try self.lowerValue(.fromInterned(try pt.intern(.{ .aggregate = .{
                 .ty = rhs_mask_ty.toIntern(),
                 .storage = .{ .elems = rhs_mask_elems[0..max_abi_size] },
             } })));
@@ -180896,7 +180717,7 @@ fn airAggregateInit(self: *CodeGen, inst: Air.Inst.Index) !void {
                         .{ .frame = frame_index },
                         @intCast(elem_size * elements.len),
                         elem_ty,
-                        try self.genTypedValue(sentinel),
+                        try self.lowerValue(sentinel),
                         .{},
                     );
                     break :result .{ .load_frame = .{ .index = frame_index } };
@@ -180980,11 +180801,11 @@ fn airMulAdd(self: *CodeGen, inst: Air.Inst.Index) !void {
                 ty.fmt(pt),
             });
 
-            var callee_buf: ["__fma?".len]u8 = undefined;
-            break :result try self.genCall(.{ .lib = .{
+            var sym_buf: ["__fma?".len]u8 = undefined;
+            break :result try self.genCall(.{ .extern_func = .{
                 .return_type = ty.toIntern(),
                 .param_types = &.{ ty.toIntern(), ty.toIntern(), ty.toIntern() },
-                .callee = std.fmt.bufPrint(&callee_buf, "{s}fma{s}", .{
+                .sym = std.fmt.bufPrint(&sym_buf, "{s}fma{s}", .{
                     floatLibcAbiPrefix(ty),
                     floatLibcAbiSuffix(ty),
                 }) catch unreachable,
@@ -181384,7 +181205,7 @@ fn resolveInst(self: *CodeGen, ref: Air.Inst.Ref) InnerError!MCValue {
     const mcv: MCValue = if (ref.toIndex()) |inst| mcv: {
         break :mcv self.inst_tracking.getPtr(inst).?.short;
     } else mcv: {
-        break :mcv try self.genTypedValue(.fromInterned(ref.toInterned().?));
+        break :mcv try self.lowerValue(.fromInterned(ref.toInterned().?));
     };
 
     switch (mcv) {
@@ -181422,31 +181243,17 @@ fn limitImmediateType(self: *CodeGen, operand: Air.Inst.Ref, comptime T: type) !
     return mcv;
 }
 
-fn genResult(self: *CodeGen, res: codegen.GenResult) InnerError!MCValue {
-    return switch (res) {
-        .mcv => |mcv| switch (mcv) {
-            .none => .none,
-            .undef => .undef,
-            .immediate => |imm| .{ .immediate = imm },
-            .memory => |addr| .{ .memory = addr },
-            .load_symbol => |sym_index| .{ .load_symbol = .{ .sym_index = sym_index } },
-            .lea_symbol => |sym_index| .{ .lea_symbol = .{ .sym_index = sym_index } },
-            .load_direct => |sym_index| .{ .load_direct = sym_index },
-            .lea_direct => |sym_index| .{ .lea_direct = sym_index },
-            .load_got => |sym_index| .{ .lea_got = sym_index },
-        },
-        .fail => |msg| return self.failMsg(msg),
+fn lowerValue(cg: *CodeGen, val: Value) Allocator.Error!MCValue {
+    return switch (try codegen.lowerValue(cg.pt, val, cg.target)) {
+        .none => .none,
+        .undef => .undef,
+        .immediate => |imm| .{ .immediate = imm },
+        .lea_nav => |nav| .{ .lea_nav = nav },
+        .lea_uav => |uav| .{ .lea_uav = uav },
+        .load_uav => |uav| .{ .load_uav = uav },
     };
 }
 
-fn genTypedValue(self: *CodeGen, val: Value) InnerError!MCValue {
-    return self.genResult(try codegen.genTypedValue(self.bin_file, self.pt, self.src_loc, val, self.target.*));
-}
-
-fn lowerUav(self: *CodeGen, val: Value, alignment: InternPool.Alignment) InnerError!MCValue {
-    return self.genResult(try self.bin_file.lowerUav(self.pt, val.toIntern(), alignment, self.src_loc));
-}
-
 const CallMCValues = struct {
     args: []MCValue,
     air_arg_count: u32,
@@ -182311,16 +182118,16 @@ const Temp = struct {
                 .register_offset,
                 .register_mask,
                 .memory,
-                .load_symbol,
-                .lea_symbol,
-                .load_pcrel,
-                .lea_pcrel,
                 .indirect,
-                .load_direct,
-                .lea_direct,
-                .load_got,
-                .lea_got,
                 .lea_frame,
+                .load_nav,
+                .lea_nav,
+                .load_uav,
+                .lea_uav,
+                .load_lazy_sym,
+                .lea_lazy_sym,
+                .lea_extern_func,
+                .load_extern_func,
                 .elementwise_args,
                 .reserved_frame,
                 .air_ref,
@@ -182363,15 +182170,11 @@ const Temp = struct {
                     .mod = .{ .rm = .{ .disp = reg_off.off + off } },
                 });
             },
-            .load_symbol, .load_frame => {
+            .load_frame, .load_nav, .lea_nav, .load_uav, .lea_uav, .load_lazy_sym, .lea_lazy_sym => {
                 const new_reg = try cg.register_manager.allocReg(new_temp_index.toIndex(), abi.RegisterClass.gp);
                 new_temp_index.tracking(cg).* = .init(.{ .register_offset = .{ .reg = new_reg, .off = off } });
                 try cg.genSetReg(new_reg, .usize, mcv, .{});
             },
-            .lea_symbol => |sym_off| new_temp_index.tracking(cg).* = .init(.{ .lea_symbol = .{
-                .sym_index = sym_off.sym_index,
-                .off = sym_off.off + off,
-            } }),
             .lea_frame => |frame_addr| new_temp_index.tracking(cg).* = .init(.{ .lea_frame = .{
                 .index = frame_addr.index,
                 .off = frame_addr.off + off,
@@ -182404,14 +182207,6 @@ const Temp = struct {
                         } });
                         return;
                     },
-                    .lea_symbol => |sym_off| {
-                        assert(std.meta.eql(temp_tracking.long.lea_symbol, sym_off));
-                        temp_tracking.* = .init(.{ .lea_symbol = .{
-                            .sym_index = sym_off.sym_index,
-                            .off = sym_off.off + off,
-                        } });
-                        return;
-                    },
                     .lea_frame => |frame_addr| {
                         assert(std.meta.eql(temp_tracking.long.lea_frame, frame_addr));
                         temp_tracking.* = .init(.{ .lea_frame = .{
@@ -182460,53 +182255,85 @@ const Temp = struct {
                     .mod = .{ .rm = .{ .disp = reg_off.off + @as(u31, limb_index) * 8 } },
                 });
             },
-            .load_symbol => |sym_off| {
+            .load_frame => |frame_addr| {
                 const new_reg =
                     try cg.register_manager.allocReg(new_temp_index.toIndex(), abi.RegisterClass.gp);
                 new_temp_index.tracking(cg).* = .init(.{ .register = new_reg });
                 try cg.asmRegisterMemory(.{ ._, .mov }, new_reg.to64(), .{
-                    .base = .{ .reloc = sym_off.sym_index },
+                    .base = .{ .frame = frame_addr.index },
                     .mod = .{ .rm = .{
                         .size = .qword,
-                        .disp = sym_off.off + @as(u31, limb_index) * 8,
+                        .disp = frame_addr.off + @as(u31, limb_index) * 8,
                     } },
                 });
             },
-            .lea_symbol => |sym_off| {
+            .lea_frame => |frame_addr| {
                 assert(limb_index == 0);
-                new_temp_index.tracking(cg).* = .init(.{ .lea_symbol = sym_off });
+                new_temp_index.tracking(cg).* = .init(.{ .lea_frame = frame_addr });
             },
-            .load_pcrel => |sym_off| {
+            .load_nav => |nav| {
                 const new_reg =
                     try cg.register_manager.allocReg(new_temp_index.toIndex(), abi.RegisterClass.gp);
                 new_temp_index.tracking(cg).* = .init(.{ .register = new_reg });
                 try cg.asmRegisterMemory(.{ ._, .mov }, new_reg.to64(), .{
-                    .base = .{ .pcrel = sym_off.sym_index },
+                    .base = .{ .nav = nav },
                     .mod = .{ .rm = .{
                         .size = .qword,
-                        .disp = sym_off.off + @as(u31, limb_index) * 8,
+                        .disp = @as(u31, limb_index) * 8,
                     } },
                 });
             },
-            .lea_pcrel => |sym_off| {
+            .lea_nav => |nav| {
                 assert(limb_index == 0);
-                new_temp_index.tracking(cg).* = .init(.{ .lea_pcrel = sym_off });
+                new_temp_index.tracking(cg).* = .init(.{ .lea_nav = nav });
             },
-            .load_frame => |frame_addr| {
+            .load_uav => |uav| {
                 const new_reg =
                     try cg.register_manager.allocReg(new_temp_index.toIndex(), abi.RegisterClass.gp);
                 new_temp_index.tracking(cg).* = .init(.{ .register = new_reg });
                 try cg.asmRegisterMemory(.{ ._, .mov }, new_reg.to64(), .{
-                    .base = .{ .frame = frame_addr.index },
+                    .base = .{ .uav = uav },
                     .mod = .{ .rm = .{
                         .size = .qword,
-                        .disp = frame_addr.off + @as(u31, limb_index) * 8,
+                        .disp = @as(u31, limb_index) * 8,
                     } },
                 });
             },
-            .lea_frame => |frame_addr| {
+            .lea_uav => |uav| {
                 assert(limb_index == 0);
-                new_temp_index.tracking(cg).* = .init(.{ .lea_frame = frame_addr });
+                new_temp_index.tracking(cg).* = .init(.{ .lea_uav = uav });
+            },
+            .load_lazy_sym => |lazy_sym| {
+                const new_reg =
+                    try cg.register_manager.allocReg(new_temp_index.toIndex(), abi.RegisterClass.gp);
+                new_temp_index.tracking(cg).* = .init(.{ .register = new_reg });
+                try cg.asmRegisterMemory(.{ ._, .mov }, new_reg.to64(), .{
+                    .base = .{ .lazy_sym = lazy_sym },
+                    .mod = .{ .rm = .{
+                        .size = .qword,
+                        .disp = @as(u31, limb_index) * 8,
+                    } },
+                });
+            },
+            .lea_lazy_sym => |lazy_sym| {
+                assert(limb_index == 0);
+                new_temp_index.tracking(cg).* = .init(.{ .lea_lazy_sym = lazy_sym });
+            },
+            .load_extern_func => |extern_func| {
+                const new_reg =
+                    try cg.register_manager.allocReg(new_temp_index.toIndex(), abi.RegisterClass.gp);
+                new_temp_index.tracking(cg).* = .init(.{ .register = new_reg });
+                try cg.asmRegisterMemory(.{ ._, .mov }, new_reg.to64(), .{
+                    .base = .{ .extern_func = extern_func },
+                    .mod = .{ .rm = .{
+                        .size = .qword,
+                        .disp = @as(u31, limb_index) * 8,
+                    } },
+                });
+            },
+            .lea_extern_func => |extern_func| {
+                assert(limb_index == 0);
+                new_temp_index.tracking(cg).* = .init(.{ .lea_extern_func = extern_func });
             },
         }
         cg.next_temp_index = @enumFromInt(@intFromEnum(new_temp_index) + 1);
@@ -182563,7 +182390,7 @@ const Temp = struct {
                 const temp_tracking = temp_index.tracking(cg);
                 switch (temp_tracking.short) {
                     else => {},
-                    .register, .lea_symbol, .lea_frame => {
+                    .register, .lea_frame, .lea_nav, .lea_uav, .lea_lazy_sym => {
                         assert(limb_index == 0);
                         cg.temp_type[@intFromEnum(temp_index)] = limb_ty;
                         return;
@@ -182580,15 +182407,6 @@ const Temp = struct {
                         cg.temp_type[@intFromEnum(temp_index)] = limb_ty;
                         return;
                     },
-                    .load_symbol => |sym_off| {
-                        assert(std.meta.eql(temp_tracking.long.load_symbol, sym_off));
-                        temp_tracking.* = .init(.{ .load_symbol = .{
-                            .sym_index = sym_off.sym_index,
-                            .off = sym_off.off + @as(u31, limb_index) * 8,
-                        } });
-                        cg.temp_type[@intFromEnum(temp_index)] = limb_ty;
-                        return;
-                    },
                     .load_frame => |frame_addr| if (!frame_addr.index.isNamed()) {
                         assert(std.meta.eql(temp_tracking.long.load_frame, frame_addr));
                         temp_tracking.* = .init(.{ .load_frame = .{
@@ -182779,27 +182597,20 @@ const Temp = struct {
             .immediate,
             .register,
             .register_offset,
-            .lea_direct,
-            .lea_got,
             .lea_frame,
             => return false,
             .memory,
             .indirect,
-            .load_symbol,
-            .load_pcrel,
-            .load_direct,
-            .load_got,
             .load_frame,
+            .load_nav,
+            .lea_nav,
+            .load_uav,
+            .lea_uav,
+            .load_lazy_sym,
+            .lea_lazy_sym,
+            .load_extern_func,
+            .lea_extern_func,
             => return temp.toRegClass(true, .general_purpose, cg),
-            .lea_symbol, .lea_pcrel => |sym_off| {
-                const off = sym_off.off;
-                // hack around linker relocation bugs
-                if (false and off == 0) return false;
-                try temp.toOffset(-off, cg);
-                while (try temp.toRegClass(true, .general_purpose, cg)) {}
-                try temp.toOffset(off, cg);
-                return true;
-            },
         }
     }
 
@@ -182866,7 +182677,7 @@ const Temp = struct {
                 ), cg),
                 else => unreachable,
             },
-            .memory, .indirect, .load_frame, .load_symbol => {
+            .memory, .indirect, .load_frame, .load_nav, .load_uav, .load_lazy_sym => {
                 var val_ptr = try cg.tempInit(.usize, val_mcv.address());
                 var len = try cg.tempInit(.usize, .{ .immediate = val_ty.abiSize(cg.pt.zcu) });
                 try val_ptr.memcpy(ptr, &len, cg);
@@ -182904,7 +182715,11 @@ const Temp = struct {
                     // hack around linker relocation bugs
                     switch (ptr.tracking(cg).short) {
                         else => {},
-                        .lea_symbol => while (try ptr.toRegClass(false, .general_purpose, cg)) {},
+                        .lea_nav,
+                        .lea_uav,
+                        .lea_lazy_sym,
+                        .lea_extern_func,
+                        => while (try ptr.toRegClass(false, .general_purpose, cg)) {},
                     }
                     try cg.asmMemoryImmediate(
                         .{ ._, .mov },
@@ -182918,7 +182733,11 @@ const Temp = struct {
                     // hack around linker relocation bugs
                     switch (ptr.tracking(cg).short) {
                         else => {},
-                        .lea_symbol => while (try ptr.toRegClass(false, .general_purpose, cg)) {},
+                        .lea_nav,
+                        .lea_uav,
+                        .lea_lazy_sym,
+                        .lea_extern_func,
+                        => while (try ptr.toRegClass(false, .general_purpose, cg)) {},
                     }
                     try cg.asmSetccMemory(
                         cc,
@@ -182962,8 +182781,8 @@ const Temp = struct {
                         try ptr.tracking(cg).short.deref().mem(cg, .{ .size = .byte }),
                     );
                 },
-                .lea_frame, .lea_symbol => continue :val_to_gpr,
-                .memory, .indirect, .load_frame, .load_symbol => {
+                .lea_frame, .lea_nav, .lea_uav, .lea_lazy_sym => continue :val_to_gpr,
+                .memory, .indirect, .load_frame, .load_nav, .load_uav, .load_lazy_sym => {
                     var val_ptr = try cg.tempInit(.usize, val_mcv.address());
                     var len = try cg.tempInit(.usize, .{ .immediate = val_ty.abiSize(cg.pt.zcu) });
                     try ptr.memcpy(&val_ptr, &len, cg);
@@ -183003,7 +182822,7 @@ const Temp = struct {
                 ), cg),
                 else => unreachable,
             },
-            .memory, .indirect, .load_frame, .load_symbol => {
+            .memory, .indirect, .load_frame, .load_nav, .load_uav, .load_lazy_sym => {
                 var val_ptr = try cg.tempInit(.usize, val_mcv.address());
                 var src_ptr =
                     try cg.tempInit(.usize, src.tracking(cg).short.address().offset(opts.disp));
@@ -183097,8 +182916,8 @@ const Temp = struct {
                         }),
                     );
                 },
-                .lea_frame, .lea_symbol => continue :val_to_gpr,
-                .memory, .indirect, .load_frame, .load_symbol => {
+                .lea_frame, .lea_nav, .lea_uav, .lea_lazy_sym => continue :val_to_gpr,
+                .memory, .indirect, .load_frame, .load_nav, .load_uav, .load_lazy_sym => {
                     var dst_ptr =
                         try cg.tempInit(.usize, dst.tracking(cg).short.address().offset(opts.disp));
                     var val_ptr = try cg.tempInit(.usize, val_mcv.address());
@@ -183119,7 +182938,7 @@ const Temp = struct {
         // hack around linker relocation bugs
         switch (ptr.tracking(cg).short) {
             else => {},
-            .lea_symbol => |sym_off| if (dst_rc != .general_purpose or sym_off.off != 0)
+            .lea_nav, .lea_uav, .lea_lazy_sym => if (dst_rc != .general_purpose)
                 while (try ptr.toRegClass(false, .general_purpose, cg)) {},
         }
         try strat.read(cg, dst_reg, try ptr.tracking(cg).short.deref().mem(cg, .{
@@ -183139,7 +182958,7 @@ const Temp = struct {
                 // hack around linker relocation bugs
                 switch (ptr.tracking(cg).short) {
                     else => {},
-                    .lea_symbol => while (try ptr.toRegClass(false, .general_purpose, cg)) {},
+                    .lea_nav, .lea_uav, .lea_lazy_sym => while (try ptr.toRegClass(false, .general_purpose, cg)) {},
                 }
                 const strat = try cg.moveStrategy(src_ty, src_rc, false);
                 try strat.write(cg, try ptr.tracking(cg).short.deref().mem(cg, .{
@@ -186902,7 +186721,7 @@ const Temp = struct {
             },
             .call_frame = .{ .alignment = .@"16" },
             .extra_temps = .{
-                .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divti3" } } },
+                .{ .type = .usize, .kind = .{ .extern_func = "__divti3" } },
                 .unused,
                 .unused,
                 .unused,
@@ -186931,7 +186750,7 @@ const Temp = struct {
             },
             .call_frame = .{ .alignment = .@"16" },
             .extra_temps = .{
-                .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__udivti3" } } },
+                .{ .type = .usize, .kind = .{ .extern_func = "__udivti3" } },
                 .unused,
                 .unused,
                 .unused,
@@ -186964,7 +186783,7 @@ const Temp = struct {
                 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 1 } } },
                 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 2 } } },
                 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 3 } } },
-                .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divei4" } } },
+                .{ .type = .usize, .kind = .{ .extern_func = "__divei4" } },
                 .unused,
                 .unused,
                 .unused,
@@ -186997,7 +186816,7 @@ const Temp = struct {
                 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 1 } } },
                 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 2 } } },
                 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 3 } } },
-                .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__udivei4" } } },
+                .{ .type = .usize, .kind = .{ .extern_func = "__udivei4" } },
                 .unused,
                 .unused,
                 .unused,
@@ -187361,7 +187180,7 @@ const Temp = struct {
                 .{ .type = .i64, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 1 } } },
                 .{ .type = .u64, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 2 } } },
                 .{ .type = .i64, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 3 } } },
-                .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divti3" } } },
+                .{ .type = .usize, .kind = .{ .extern_func = "__divti3" } },
                 .{ .type = .u64, .kind = .{ .ret_gpr = .{ .cc = .ccc, .at = 0 } } },
                 .unused,
                 .unused,
@@ -187399,7 +187218,7 @@ const Temp = struct {
                 .{ .type = .u64, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 1 } } },
                 .{ .type = .u64, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 2 } } },
                 .{ .type = .u64, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 3 } } },
-                .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__udivti3" } } },
+                .{ .type = .usize, .kind = .{ .extern_func = "__udivti3" } },
                 .{ .type = .u64, .kind = .{ .ret_gpr = .{ .cc = .ccc, .at = 0 } } },
                 .unused,
                 .unused,
@@ -187437,7 +187256,7 @@ const Temp = struct {
                 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 1 } } },
                 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 2 } } },
                 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 3 } } },
-                .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divei4" } } },
+                .{ .type = .usize, .kind = .{ .extern_func = "__divei4" } },
                 .unused,
                 .unused,
                 .unused,
@@ -187473,7 +187292,7 @@ const Temp = struct {
                 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 1 } } },
                 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 2 } } },
                 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 3 } } },
-                .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__udivei4" } } },
+                .{ .type = .usize, .kind = .{ .extern_func = "__udivei4" } },
                 .unused,
                 .unused,
                 .unused,
@@ -187528,16 +187347,16 @@ const Temp = struct {
                         .register_overflow,
                         .register_mask,
                         .memory,
-                        .load_symbol,
-                        .lea_symbol,
-                        .load_pcrel,
-                        .lea_pcrel,
                         .indirect,
-                        .load_direct,
-                        .lea_direct,
-                        .load_got,
-                        .lea_got,
                         .load_frame,
+                        .load_nav,
+                        .lea_nav,
+                        .load_uav,
+                        .lea_uav,
+                        .load_lazy_sym,
+                        .lea_lazy_sym,
+                        .load_extern_func,
+                        .lea_extern_func,
                         => {
                             const result = try cg.allocRegOrMem(inst, true);
                             try cg.genCopy(cg.typeOfIndex(inst), result, temp_mcv, .{});
@@ -187714,7 +187533,7 @@ fn tempInit(cg: *CodeGen, ty: Type, value: MCValue) InnerError!Temp {
 }
 
 fn tempFromValue(cg: *CodeGen, value: Value) InnerError!Temp {
-    return cg.tempInit(value.typeOf(cg.pt.zcu), try cg.genTypedValue(value));
+    return cg.tempInit(value.typeOf(cg.pt.zcu), try cg.lowerValue(value));
 }
 
 fn tempMemFromValue(cg: *CodeGen, value: Value) InnerError!Temp {
@@ -187722,13 +187541,20 @@ fn tempMemFromValue(cg: *CodeGen, value: Value) InnerError!Temp {
 }
 
 fn tempMemFromAlignedValue(cg: *CodeGen, alignment: InternPool.Alignment, value: Value) InnerError!Temp {
-    return cg.tempInit(value.typeOf(cg.pt.zcu), try cg.lowerUav(value, alignment));
+    const ty = value.typeOf(cg.pt.zcu);
+    return cg.tempInit(ty, .{ .load_uav = .{
+        .val = value.toIntern(),
+        .orig_ty = (try cg.pt.ptrType(.{
+            .child = ty.toIntern(),
+            .flags = .{
+                .is_const = true,
+                .alignment = alignment,
+            },
+        })).toIntern(),
+    } });
 }
 
 fn tempFromOperand(cg: *CodeGen, op_ref: Air.Inst.Ref, op_dies: bool) InnerError!Temp {
-    const zcu = cg.pt.zcu;
-    const ip = &zcu.intern_pool;
-
     if (op_dies) {
         const temp_index = cg.next_temp_index;
         const temp: Temp = .{ .index = temp_index.toIndex() };
@@ -187742,8 +187568,7 @@ fn tempFromOperand(cg: *CodeGen, op_ref: Air.Inst.Ref, op_dies: bool) InnerError
     }
 
     if (op_ref.toIndex()) |op_inst| return .{ .index = op_inst };
-    const val = op_ref.toInterned().?;
-    return cg.tempInit(.fromInterned(ip.typeOf(val)), try cg.genTypedValue(.fromInterned(val)));
+    return cg.tempFromValue(.fromInterned(op_ref.toInterned().?));
 }
 
 fn tempsFromOperandsInner(
@@ -188578,8 +188403,8 @@ const Select = struct {
             splat_int_mem: struct { ref: Select.Operand.Ref, inside: enum { umin, smin, smax } = .umin, outside: enum { smin, smax } },
             splat_float_mem: struct { ref: Select.Operand.Ref, inside: enum { zero } = .zero, outside: f16 },
             frame: FrameIndex,
-            lazy_symbol: struct { kind: link.File.LazySymbol.Kind, ref: Select.Operand.Ref = .none },
-            symbol: *const struct { lib: ?[]const u8 = null, name: []const u8 },
+            lazy_sym: struct { kind: link.File.LazySymbol.Kind, ref: Select.Operand.Ref = .none },
+            extern_func: [*:0]const u8,
 
             const ConstSpec = struct {
                 ref: Select.Operand.Ref = .none,
@@ -189010,43 +188835,21 @@ const Select = struct {
                     } }))), true };
                 },
                 .frame => |frame_index| .{ try cg.tempInit(spec.type, .{ .load_frame = .{ .index = frame_index } }), true },
-                .lazy_symbol => |lazy_symbol_spec| {
+                .lazy_sym => |lazy_symbol_spec| {
                     const ip = &pt.zcu.intern_pool;
                     const ty = if (lazy_symbol_spec.ref == .none) spec.type else lazy_symbol_spec.ref.typeOf(s);
-                    const lazy_symbol: link.File.LazySymbol = .{
+                    return .{ try cg.tempInit(.usize, .{ .lea_lazy_sym = .{
                         .kind = lazy_symbol_spec.kind,
                         .ty = switch (ip.indexToKey(ty.toIntern())) {
                             .inferred_error_set_type => |func_index| switch (ip.funcIesResolvedUnordered(func_index)) {
-                                .none => unreachable, // unresolved inferred error set
+                                .none => unreachable,
                                 else => |ty_index| ty_index,
                             },
                             else => ty.toIntern(),
                         },
-                    };
-                    return .{ try cg.tempInit(.usize, .{ .lea_symbol = .{
-                        .sym_index = if (cg.bin_file.cast(.elf)) |elf_file|
-                            elf_file.zigObjectPtr().?.getOrCreateMetadataForLazySymbol(elf_file, pt, lazy_symbol) catch |err|
-                                return cg.fail("{s} creating lazy symbol", .{@errorName(err)})
-                        else if (cg.bin_file.cast(.macho)) |macho_file|
-                            macho_file.getZigObject().?.getOrCreateMetadataForLazySymbol(macho_file, pt, lazy_symbol) catch |err|
-                                return cg.fail("{s} creating lazy symbol", .{@errorName(err)})
-                        else if (cg.bin_file.cast(.coff)) |coff_file|
-                            coff_file.getAtom(coff_file.getOrCreateAtomForLazySymbol(pt, lazy_symbol) catch |err|
-                                return cg.fail("{s} creating lazy symbol", .{@errorName(err)})).getSymbolIndex().?
-                        else
-                            return cg.fail("external symbols unimplemented for {s}", .{@tagName(cg.bin_file.tag)}),
                     } }), true };
                 },
-                .symbol => |symbol_spec| .{ try cg.tempInit(spec.type, .{ .lea_symbol = .{
-                    .sym_index = if (cg.bin_file.cast(.elf)) |elf_file|
-                        try elf_file.getGlobalSymbol(symbol_spec.name, symbol_spec.lib)
-                    else if (cg.bin_file.cast(.macho)) |macho_file|
-                        try macho_file.getGlobalSymbol(symbol_spec.name, symbol_spec.lib)
-                    else if (cg.bin_file.cast(.coff)) |coff_file|
-                        link.File.Coff.global_symbol_bit | try coff_file.getGlobalSymbol(symbol_spec.name, symbol_spec.lib)
-                    else
-                        return cg.fail("external symbols unimplemented for {s}", .{@tagName(cg.bin_file.tag)}),
-                } }), true },
+                .extern_func => |extern_func_spec| .{ try cg.tempInit(spec.type, .{ .lea_extern_func = try cg.addString(std.mem.span(extern_func_spec)) }), true },
             };
         }
 
@@ -190089,9 +189892,12 @@ const Select = struct {
                         .register => |reg| .{ .reg = s.lowerReg(reg.toSize(op.flags.base.size, s.cg.target)) },
                         .register_pair, .register_triple, .register_quadruple, .register_offset, .register_overflow => unreachable,
                         .register_mask => |reg_mask| .{ .reg = s.lowerReg(reg_mask.reg.toSize(op.flags.base.size, s.cg.target)) },
+                        .lea_nav => |nav| .{ .imm = .{ .nav = .{ .index = nav } } },
+                        .lea_uav => |uav| .{ .imm = .{ .uav = uav } },
+                        .lea_lazy_sym => |lazy_sym| .{ .imm = .{ .lazy_sym = lazy_sym } },
+                        .lea_extern_func => |extern_func| .{ .imm = .{ .extern_func = extern_func } },
                         else => |mcv| .{ .mem = try mcv.mem(s.cg, .{ .size = op.flags.base.size }) },
-                        .lea_symbol => |sym_off| .{ .imm = .rel(sym_off) },
-                        .load_direct, .lea_direct, .load_got, .lea_got, .lea_frame, .elementwise_args, .reserved_frame, .air_ref => unreachable,
+                        .lea_frame, .elementwise_args, .reserved_frame, .air_ref => unreachable,
                     },
                     1...2 => |imm| switch (op.flags.base.ref.valueOf(s)) {
                         inline .register_pair, .register_triple, .register_quadruple => |regs| .{
@@ -190105,37 +189911,20 @@ const Select = struct {
                 },
                 .simm => .{ .imm = .s(op.adjustedImm(i32, s)) },
                 .uimm => .{ .imm = .u(@bitCast(op.adjustedImm(i64, s))) },
-                .lea => .{ .mem = .{
-                    .base = switch (op.flags.base.ref.valueOf(s)) {
+                .lea => .{ .mem = try op.flags.base.ref.valueOf(s).deref().mem(s.cg, .{
+                    .size = op.flags.base.size,
+                    .index = switch (op.flags.index.ref.valueOf(s)) {
                         else => unreachable,
                         .none => .none,
-                        .register => |base_reg| .{ .reg = base_reg.toSize(.ptr, s.cg.target) },
-                        .register_offset => |base_reg_off| .{ .reg = base_reg_off.reg.toSize(.ptr, s.cg.target) },
-                        .lea_symbol => |base_sym_off| .{ .reloc = base_sym_off.sym_index },
-                        .lea_pcrel => |base_sym_off| .{ .pcrel = base_sym_off.sym_index },
+                        .register => |index_reg| index_reg.toSize(.ptr, s.cg.target),
                     },
-                    .mod = .{ .rm = .{
-                        .size = op.flags.base.size,
-                        .index = switch (op.flags.index.ref.valueOf(s)) {
-                            else => unreachable,
-                            .none => .none,
-                            .register => |index_reg| index_reg.toSize(.ptr, s.cg.target),
-                            .register_offset => |index_reg_off| index_reg_off.reg.toSize(.ptr, s.cg.target),
-                        },
-                        .scale = op.flags.index.scale,
-                        .disp = op.adjustedImm(i32, s) + switch (op.flags.base.ref.valueOf(s)) {
-                            else => unreachable,
-                            .none, .register => 0,
-                            .register_offset => |base_reg_off| base_reg_off.off,
-                            .lea_symbol => |base_sym_off| base_sym_off.off,
-                        } + switch (op.flags.index.ref.valueOf(s)) {
-                            else => unreachable,
-                            .none, .register => 0,
-                            .register_offset => |base_reg_off| base_reg_off.off,
-                            .lea_symbol => |base_sym_off| base_sym_off.off,
-                        },
-                    } },
-                } },
+                    .scale = op.flags.index.scale,
+                    .disp = op.adjustedImm(i32, s) + switch (op.flags.index.ref.valueOf(s)) {
+                        else => unreachable,
+                        .none, .register, .lea_nav, .lea_uav, .lea_lazy_sym, .lea_extern_func => 0,
+                        .register_offset => |base_reg_off| base_reg_off.off,
+                    },
+                }) },
                 .mem => .{ .mem = try op.flags.base.ref.valueOf(s).mem(s.cg, .{
                     .size = op.flags.base.size,
                     .index = switch (op.flags.index.ref.valueOf(s)) {
src/arch/x86_64/Emit.zig
@@ -1,6 +1,9 @@
 //! This file contains the functionality for emitting x86_64 MIR as machine code
 
 lower: Lower,
+bin_file: *link.File,
+pt: Zcu.PerThread,
+pic: bool,
 atom_index: u32,
 debug_output: link.File.DebugInfoOutput,
 code: *std.ArrayListUnmanaged(u8),
@@ -9,28 +12,28 @@ prev_di_loc: Loc,
 /// Relative to the beginning of `code`.
 prev_di_pc: usize,
 
+code_offset_mapping: std.ArrayListUnmanaged(u32),
+relocs: std.ArrayListUnmanaged(Reloc),
+table_relocs: std.ArrayListUnmanaged(TableReloc),
+
 pub const Error = Lower.Error || error{
     EmitFail,
 } || link.File.UpdateDebugInfoError;
 
 pub fn emitMir(emit: *Emit) Error!void {
-    const gpa = emit.lower.bin_file.comp.gpa;
-    const code_offset_mapping = try emit.lower.allocator.alloc(u32, emit.lower.mir.instructions.len);
-    defer emit.lower.allocator.free(code_offset_mapping);
-    var relocs: std.ArrayListUnmanaged(Reloc) = .empty;
-    defer relocs.deinit(emit.lower.allocator);
-    var table_relocs: std.ArrayListUnmanaged(TableReloc) = .empty;
-    defer table_relocs.deinit(emit.lower.allocator);
-    var local_name_index: usize = 0;
+    const gpa = emit.bin_file.comp.gpa;
+    try emit.code_offset_mapping.resize(gpa, emit.lower.mir.instructions.len);
+    emit.relocs.clearRetainingCapacity();
+    emit.table_relocs.clearRetainingCapacity();
     var local_index: usize = 0;
     for (0..emit.lower.mir.instructions.len) |mir_i| {
         const mir_index: Mir.Inst.Index = @intCast(mir_i);
-        code_offset_mapping[mir_index] = @intCast(emit.code.items.len);
+        emit.code_offset_mapping.items[mir_index] = @intCast(emit.code.items.len);
         const lowered = try emit.lower.lowerMir(mir_index);
         var lowered_relocs = lowered.relocs;
-        for (lowered.insts, 0..) |lowered_inst, lowered_index| {
-            const start_offset: u32 = @intCast(emit.code.items.len);
+        lowered_inst: for (lowered.insts, 0..) |lowered_inst, lowered_index| {
             if (lowered_inst.prefix == .directive) {
+                const start_offset: u32 = @intCast(emit.code.items.len);
                 switch (emit.debug_output) {
                     .dwarf => |dwarf| switch (lowered_inst.encoding.mnemonic) {
                         .@".cfi_def_cfa" => try dwarf.genDebugFrame(start_offset, .{ .def_cfa = .{
@@ -83,204 +86,305 @@ pub fn emitMir(emit: *Emit) Error!void {
                 }
                 continue;
             }
-            try lowered_inst.encode(emit.code.writer(gpa), .{});
-            const end_offset: u32 = @intCast(emit.code.items.len);
+            var reloc_info_buf: [2]RelocInfo = undefined;
+            var reloc_info_index: usize = 0;
             while (lowered_relocs.len > 0 and
                 lowered_relocs[0].lowered_inst_index == lowered_index) : ({
                 lowered_relocs = lowered_relocs[1..];
-            }) switch (lowered_relocs[0].target) {
-                .inst => |target| {
-                    const inst_length: u4 = @intCast(end_offset - start_offset);
-                    const reloc_offset, const reloc_length = reloc_offset_length: {
-                        var reloc_offset = inst_length;
-                        var op_index: usize = lowered_inst.ops.len;
-                        while (true) {
-                            op_index -= 1;
-                            const op = lowered_inst.encoding.data.ops[op_index];
-                            if (op == .none) continue;
-                            const is_mem = op.isMemory();
-                            const enc_length: u4 = if (is_mem) switch (lowered_inst.ops[op_index].mem.sib.base) {
-                                .rip_inst => 4,
-                                else => unreachable,
-                            } else @intCast(std.math.divCeil(u7, @intCast(op.immBitSize()), 8) catch unreachable);
-                            reloc_offset -= enc_length;
-                            if (op_index == lowered_relocs[0].op_index) break :reloc_offset_length .{ reloc_offset, enc_length };
-                            std.debug.assert(!is_mem);
-                        }
-                    };
-                    try relocs.append(emit.lower.allocator, .{
-                        .inst_offset = start_offset,
-                        .inst_length = inst_length,
-                        .source_offset = reloc_offset,
-                        .source_length = reloc_length,
-                        .target = target,
-                        .target_offset = lowered_relocs[0].off,
-                    });
-                },
-                .table => try table_relocs.append(emit.lower.allocator, .{
-                    .source_offset = end_offset - 4,
-                    .target_offset = lowered_relocs[0].off,
-                }),
-                .linker_extern_fn => |sym_index| if (emit.lower.bin_file.cast(.elf)) |elf_file| {
-                    // Add relocation to the decl.
-                    const zo = elf_file.zigObjectPtr().?;
-                    const atom_ptr = zo.symbol(emit.atom_index).atom(elf_file).?;
-                    const r_type = @intFromEnum(std.elf.R_X86_64.PLT32);
-                    try atom_ptr.addReloc(gpa, .{
-                        .r_offset = end_offset - 4,
-                        .r_info = @as(u64, sym_index) << 32 | r_type,
-                        .r_addend = lowered_relocs[0].off - 4,
-                    }, zo);
-                } else if (emit.lower.bin_file.cast(.macho)) |macho_file| {
-                    // Add relocation to the decl.
-                    const zo = macho_file.getZigObject().?;
-                    const atom = zo.symbols.items[emit.atom_index].getAtom(macho_file).?;
-                    try atom.addReloc(macho_file, .{
-                        .tag = .@"extern",
-                        .offset = end_offset - 4,
-                        .target = sym_index,
-                        .addend = lowered_relocs[0].off,
-                        .type = .branch,
-                        .meta = .{
-                            .pcrel = true,
-                            .has_subtractor = false,
-                            .length = 2,
-                            .symbolnum = @intCast(sym_index),
+                reloc_info_index += 1;
+            }) reloc_info_buf[reloc_info_index] = .{
+                .op_index = lowered_relocs[0].op_index,
+                .off = lowered_relocs[0].off,
+                .target = target: switch (lowered_relocs[0].target) {
+                    .inst => |inst| .{ .index = inst, .is_extern = false, .type = .inst },
+                    .table => .{ .index = undefined, .is_extern = false, .type = .table },
+                    .nav => |nav| {
+                        const ip = &emit.pt.zcu.intern_pool;
+                        const sym_index = switch (try codegen.genNavRef(
+                            emit.bin_file,
+                            emit.pt,
+                            emit.lower.src_loc,
+                            .fromInterned(ip.getNav(nav).typeOf(ip)),
+                            nav,
+                            emit.lower.target.*,
+                        )) {
+                            .mcv => |mcv| switch (mcv) {
+                                else => std.debug.panic("{s}: {}\n", .{ @src().fn_name, mcv }),
+                                .lea_symbol => |sym_index| sym_index,
+                            },
+                            .fail => |em| {
+                                assert(emit.lower.err_msg == null);
+                                emit.lower.err_msg = em;
+                                return error.EmitFail;
+                            },
+                        };
+                        break :target switch (ip.getNav(nav).status) {
+                            .unresolved => unreachable,
+                            .type_resolved => |type_resolved| .{
+                                .index = sym_index,
+                                .is_extern = false,
+                                .type = if (type_resolved.is_threadlocal) .tlv else .symbol,
+                            },
+                            .fully_resolved => |fully_resolved| switch (ip.indexToKey(fully_resolved.val)) {
+                                .@"extern" => |@"extern"| .{
+                                    .index = sym_index,
+                                    .is_extern = switch (@"extern".visibility) {
+                                        .default => true,
+                                        .hidden, .protected => false,
+                                    },
+                                    .type = if (@"extern".is_threadlocal) .tlv else .symbol,
+                                    .force_pcrel_direct = switch (@"extern".relocation) {
+                                        .any => false,
+                                        .pcrel => true,
+                                    },
+                                },
+                                .variable => |variable| .{
+                                    .index = sym_index,
+                                    .is_extern = false,
+                                    .type = if (variable.is_threadlocal) .tlv else .symbol,
+                                },
+                                else => .{ .index = sym_index, .is_extern = false, .type = .symbol },
+                            },
+                        };
+                    },
+                    .uav => |uav| .{
+                        .index = switch (try emit.bin_file.lowerUav(
+                            emit.pt,
+                            uav.val,
+                            Type.fromInterned(uav.orig_ty).ptrAlignment(emit.pt.zcu),
+                            emit.lower.src_loc,
+                        )) {
+                            .mcv => |mcv| switch (mcv) {
+                                else => std.debug.panic("{s}: {}\n", .{ @src().fn_name, mcv }),
+                                .load_direct, .load_symbol => |sym_index| sym_index,
+                            },
+                            .fail => |em| {
+                                assert(emit.lower.err_msg == null);
+                                emit.lower.err_msg = em;
+                                return error.EmitFail;
+                            },
                         },
-                    });
-                } else if (emit.lower.bin_file.cast(.coff)) |coff_file| {
-                    // Add relocation to the decl.
-                    const atom_index = coff_file.getAtomIndexForSymbol(
-                        .{ .sym_index = emit.atom_index, .file = null },
-                    ).?;
-                    const target = if (link.File.Coff.global_symbol_bit & sym_index != 0)
-                        coff_file.getGlobalByIndex(link.File.Coff.global_symbol_mask & sym_index)
-                    else
-                        link.File.Coff.SymbolWithLoc{ .sym_index = sym_index, .file = null };
-                    try coff_file.addRelocation(atom_index, .{
-                        .type = .direct,
-                        .target = target,
-                        .offset = end_offset - 4,
-                        .addend = @intCast(lowered_relocs[0].off),
-                        .pcrel = true,
-                        .length = 2,
-                    });
-                } else return emit.fail("TODO implement extern reloc for {s}", .{
-                    @tagName(emit.lower.bin_file.tag),
-                }),
-                .linker_tlsld => |sym_index| {
-                    const elf_file = emit.lower.bin_file.cast(.elf).?;
-                    const zo = elf_file.zigObjectPtr().?;
-                    const atom = zo.symbol(emit.atom_index).atom(elf_file).?;
-                    const r_type = @intFromEnum(std.elf.R_X86_64.TLSLD);
-                    try atom.addReloc(gpa, .{
-                        .r_offset = end_offset - 4,
-                        .r_info = @as(u64, sym_index) << 32 | r_type,
-                        .r_addend = lowered_relocs[0].off - 4,
-                    }, zo);
-                },
-                .linker_dtpoff => |sym_index| {
-                    const elf_file = emit.lower.bin_file.cast(.elf).?;
-                    const zo = elf_file.zigObjectPtr().?;
-                    const atom = zo.symbol(emit.atom_index).atom(elf_file).?;
-                    const r_type = @intFromEnum(std.elf.R_X86_64.DTPOFF32);
-                    try atom.addReloc(gpa, .{
-                        .r_offset = end_offset - 4,
-                        .r_info = @as(u64, sym_index) << 32 | r_type,
-                        .r_addend = lowered_relocs[0].off,
-                    }, zo);
-                },
-                .linker_reloc, .linker_pcrel => |sym_index| if (emit.lower.bin_file.cast(.elf)) |elf_file| {
-                    const zo = elf_file.zigObjectPtr().?;
-                    const atom = zo.symbol(emit.atom_index).atom(elf_file).?;
-                    const sym = zo.symbol(sym_index);
-                    if (emit.lower.pic) {
-                        const r_type: u32 = if (sym.flags.is_extern_ptr and lowered_relocs[0].target != .linker_pcrel)
-                            @intFromEnum(std.elf.R_X86_64.GOTPCREL)
+                        .is_extern = false,
+                        .type = .symbol,
+                    },
+                    .lazy_sym => |lazy_sym| .{
+                        .index = if (emit.bin_file.cast(.elf)) |elf_file|
+                            elf_file.zigObjectPtr().?.getOrCreateMetadataForLazySymbol(elf_file, emit.pt, lazy_sym) catch |err|
+                                return emit.fail("{s} creating lazy symbol", .{@errorName(err)})
+                        else if (emit.bin_file.cast(.macho)) |macho_file|
+                            macho_file.getZigObject().?.getOrCreateMetadataForLazySymbol(macho_file, emit.pt, lazy_sym) catch |err|
+                                return emit.fail("{s} creating lazy symbol", .{@errorName(err)})
+                        else if (emit.bin_file.cast(.coff)) |coff_file| sym_index: {
+                            const atom = coff_file.getOrCreateAtomForLazySymbol(emit.pt, lazy_sym) catch |err|
+                                return emit.fail("{s} creating lazy symbol", .{@errorName(err)});
+                            break :sym_index coff_file.getAtom(atom).getSymbolIndex().?;
+                        } else if (emit.bin_file.cast(.plan9)) |p9_file|
+                            p9_file.getOrCreateAtomForLazySymbol(emit.pt, lazy_sym) catch |err|
+                                return emit.fail("{s} creating lazy symbol", .{@errorName(err)})
                         else
-                            @intFromEnum(std.elf.R_X86_64.PC32);
-                        try atom.addReloc(gpa, .{
-                            .r_offset = end_offset - 4,
-                            .r_info = @as(u64, sym_index) << 32 | r_type,
-                            .r_addend = lowered_relocs[0].off - 4,
-                        }, zo);
-                    } else {
-                        const r_type: u32 = if (sym.flags.is_tls)
-                            @intFromEnum(std.elf.R_X86_64.TPOFF32)
+                            return emit.fail("lazy symbols unimplemented for {s}", .{@tagName(emit.bin_file.tag)}),
+                        .is_extern = false,
+                        .type = .symbol,
+                    },
+                    .extern_func => |extern_func| .{
+                        .index = if (emit.bin_file.cast(.elf)) |elf_file|
+                            try elf_file.getGlobalSymbol(extern_func.toSlice(&emit.lower.mir).?, null)
+                        else if (emit.bin_file.cast(.macho)) |macho_file|
+                            try macho_file.getGlobalSymbol(extern_func.toSlice(&emit.lower.mir).?, null)
+                        else if (emit.bin_file.cast(.coff)) |coff_file|
+                            link.File.Coff.global_symbol_bit | try coff_file.getGlobalSymbol(extern_func.toSlice(&emit.lower.mir).?, null)
                         else
-                            @intFromEnum(std.elf.R_X86_64.@"32");
-                        try atom.addReloc(gpa, .{
-                            .r_offset = end_offset - 4,
-                            .r_info = @as(u64, sym_index) << 32 | r_type,
-                            .r_addend = lowered_relocs[0].off,
-                        }, zo);
-                    }
-                } else if (emit.lower.bin_file.cast(.macho)) |macho_file| {
-                    const zo = macho_file.getZigObject().?;
-                    const atom = zo.symbols.items[emit.atom_index].getAtom(macho_file).?;
-                    const sym = &zo.symbols.items[sym_index];
-                    const @"type": link.File.MachO.Relocation.Type = if (sym.flags.is_extern_ptr and lowered_relocs[0].target != .linker_pcrel)
-                        .got_load
-                    else if (sym.flags.tlv)
-                        .tlv
-                    else
-                        .signed;
-                    try atom.addReloc(macho_file, .{
-                        .tag = .@"extern",
-                        .offset = @intCast(end_offset - 4),
-                        .target = sym_index,
-                        .addend = lowered_relocs[0].off,
-                        .type = @"type",
-                        .meta = .{
-                            .pcrel = true,
-                            .has_subtractor = false,
-                            .length = 2,
-                            .symbolnum = @intCast(sym_index),
+                            return emit.fail("external symbols unimplemented for {s}", .{@tagName(emit.bin_file.tag)}),
+                        .is_extern = true,
+                        .type = .symbol,
+                    },
+                },
+            };
+            const reloc_info = reloc_info_buf[0..reloc_info_index];
+            for (reloc_info) |*reloc| switch (reloc.target.type) {
+                .inst, .table => {},
+                .symbol => {
+                    switch (lowered_inst.encoding.mnemonic) {
+                        .call => {
+                            reloc.target.type = .branch;
+                            try emit.encodeInst(lowered_inst, reloc_info);
+                            continue :lowered_inst;
                         },
+                        else => {},
+                    }
+                    if (emit.bin_file.cast(.elf)) |_| {
+                        if (!emit.pic) switch (lowered_inst.encoding.mnemonic) {
+                            .lea => try emit.encodeInst(try .new(.none, .mov, &.{
+                                lowered_inst.ops[0],
+                                .{ .imm = .s(0) },
+                            }, emit.lower.target), reloc_info),
+                            .mov => try emit.encodeInst(try .new(.none, .mov, &.{
+                                lowered_inst.ops[0],
+                                .{ .mem = .initSib(lowered_inst.ops[reloc.op_index].mem.sib.ptr_size, .{
+                                    .base = .{ .reg = .ds },
+                                }) },
+                            }, emit.lower.target), reloc_info),
+                            else => unreachable,
+                        } else if (reloc.target.is_extern) switch (lowered_inst.encoding.mnemonic) {
+                            .lea => try emit.encodeInst(try .new(.none, .mov, &.{
+                                lowered_inst.ops[0],
+                                .{ .mem = .initRip(.ptr, 0) },
+                            }, emit.lower.target), reloc_info),
+                            .mov => {
+                                try emit.encodeInst(try .new(.none, .mov, &.{
+                                    lowered_inst.ops[0],
+                                    .{ .mem = .initRip(.ptr, 0) },
+                                }, emit.lower.target), reloc_info);
+                                try emit.encodeInst(try .new(.none, .mov, &.{
+                                    lowered_inst.ops[0],
+                                    .{ .mem = .initSib(lowered_inst.ops[reloc.op_index].mem.sib.ptr_size, .{ .base = .{
+                                        .reg = lowered_inst.ops[0].reg.to64(),
+                                    } }) },
+                                }, emit.lower.target), &.{});
+                            },
+                            else => unreachable,
+                        } else switch (lowered_inst.encoding.mnemonic) {
+                            .lea => try emit.encodeInst(try .new(.none, .lea, &.{
+                                lowered_inst.ops[0],
+                                .{ .mem = .initRip(.none, 0) },
+                            }, emit.lower.target), reloc_info),
+                            .mov => try emit.encodeInst(try .new(.none, .mov, &.{
+                                lowered_inst.ops[0],
+                                .{ .mem = .initRip(lowered_inst.ops[reloc.op_index].mem.sib.ptr_size, 0) },
+                            }, emit.lower.target), reloc_info),
+                            else => unreachable,
+                        }
+                    } else if (emit.bin_file.cast(.macho)) |_| {
+                        if (reloc.target.is_extern) switch (lowered_inst.encoding.mnemonic) {
+                            .lea => try emit.encodeInst(try .new(.none, .mov, &.{
+                                lowered_inst.ops[0],
+                                .{ .mem = .initRip(.ptr, 0) },
+                            }, emit.lower.target), reloc_info),
+                            .mov => {
+                                try emit.encodeInst(try .new(.none, .mov, &.{
+                                    lowered_inst.ops[0],
+                                    .{ .mem = .initRip(.ptr, 0) },
+                                }, emit.lower.target), reloc_info);
+                                try emit.encodeInst(try .new(.none, .mov, &.{
+                                    lowered_inst.ops[0],
+                                    .{ .mem = .initSib(lowered_inst.ops[reloc.op_index].mem.sib.ptr_size, .{ .base = .{
+                                        .reg = lowered_inst.ops[0].reg.to64(),
+                                    } }) },
+                                }, emit.lower.target), &.{});
+                            },
+                            else => unreachable,
+                        } else switch (lowered_inst.encoding.mnemonic) {
+                            .lea => try emit.encodeInst(try .new(.none, .lea, &.{
+                                lowered_inst.ops[0],
+                                .{ .mem = .initRip(.none, 0) },
+                            }, emit.lower.target), reloc_info),
+                            .mov => try emit.encodeInst(try .new(.none, .mov, &.{
+                                lowered_inst.ops[0],
+                                .{ .mem = .initRip(lowered_inst.ops[reloc.op_index].mem.sib.ptr_size, 0) },
+                            }, emit.lower.target), reloc_info),
+                            else => unreachable,
+                        }
+                    } else return emit.fail("TODO implement relocs for {s}", .{
+                        @tagName(emit.bin_file.tag),
                     });
-                } else unreachable,
-                .linker_got,
-                .linker_direct,
-                .linker_import,
-                => |sym_index| if (emit.lower.bin_file.cast(.elf)) |_| {
-                    unreachable;
-                } else if (emit.lower.bin_file.cast(.macho)) |_| {
-                    unreachable;
-                } else if (emit.lower.bin_file.cast(.coff)) |coff_file| {
-                    const atom_index = coff_file.getAtomIndexForSymbol(.{
-                        .sym_index = emit.atom_index,
-                        .file = null,
-                    }).?;
-                    const target = if (link.File.Coff.global_symbol_bit & sym_index != 0)
-                        coff_file.getGlobalByIndex(link.File.Coff.global_symbol_mask & sym_index)
-                    else
-                        link.File.Coff.SymbolWithLoc{ .sym_index = sym_index, .file = null };
-                    try coff_file.addRelocation(atom_index, .{
-                        .type = switch (lowered_relocs[0].target) {
-                            .linker_got => .got,
-                            .linker_direct => .direct,
-                            .linker_import => .import,
+                    continue :lowered_inst;
+                },
+                .branch, .tls => unreachable,
+                .tlv => {
+                    if (emit.bin_file.cast(.elf)) |elf_file| {
+                        if (reloc.target.is_extern) {
+                            // TODO handle extern TLS vars, i.e., emit GD model
+                            return emit.fail("TODO implement extern {s} reloc for {s}", .{
+                                @tagName(reloc.target.type), @tagName(emit.bin_file.tag),
+                            });
+                        } else if (emit.pic) switch (lowered_inst.encoding.mnemonic) {
+                            .lea, .mov => {
+                                // Here, we currently assume local dynamic TLS vars, and so
+                                // we emit LD model.
+                                try emit.encodeInst(try .new(.none, .lea, &.{
+                                    .{ .reg = .rdi },
+                                    .{ .mem = .initRip(.none, 0) },
+                                }, emit.lower.target), &.{.{
+                                    .op_index = 1,
+                                    .target = .{
+                                        .index = reloc.target.index,
+                                        .is_extern = false,
+                                        .type = .tls,
+                                    },
+                                }});
+                                try emit.encodeInst(try .new(.none, .call, &.{
+                                    .{ .imm = .s(0) },
+                                }, emit.lower.target), &.{.{
+                                    .op_index = 0,
+                                    .target = .{
+                                        .index = try elf_file.getGlobalSymbol("__tls_get_addr", null),
+                                        .is_extern = true,
+                                        .type = .branch,
+                                    },
+                                }});
+                                try emit.encodeInst(try .new(.none, lowered_inst.encoding.mnemonic, &.{
+                                    lowered_inst.ops[0],
+                                    .{ .mem = .initSib(.none, .{
+                                        .base = .{ .reg = .rax },
+                                        .disp = std.math.minInt(i32),
+                                    }) },
+                                }, emit.lower.target), reloc_info);
+                            },
                             else => unreachable,
+                        } else switch (lowered_inst.encoding.mnemonic) {
+                            .lea, .mov => {
+                                // Since we are linking statically, we emit LE model directly.
+                                try emit.encodeInst(try .new(.none, .mov, &.{
+                                    .{ .reg = .rax },
+                                    .{ .mem = .initSib(.qword, .{ .base = .{ .reg = .fs } }) },
+                                }, emit.lower.target), &.{});
+                                try emit.encodeInst(try .new(.none, lowered_inst.encoding.mnemonic, &.{
+                                    lowered_inst.ops[0],
+                                    .{ .mem = .initSib(.none, .{
+                                        .base = .{ .reg = .rax },
+                                        .disp = std.math.minInt(i32),
+                                    }) },
+                                }, emit.lower.target), reloc_info);
+                            },
+                            else => unreachable,
+                        }
+                    } else if (emit.bin_file.cast(.macho)) |_| switch (lowered_inst.encoding.mnemonic) {
+                        .lea => {
+                            try emit.encodeInst(try .new(.none, .mov, &.{
+                                .{ .reg = .rdi },
+                                .{ .mem = .initRip(.ptr, 0) },
+                            }, emit.lower.target), reloc_info);
+                            try emit.encodeInst(try .new(.none, .call, &.{
+                                .{ .mem = .initSib(.qword, .{ .base = .{ .reg = .rdi } }) },
+                            }, emit.lower.target), &.{});
+                            try emit.encodeInst(try .new(.none, .mov, &.{
+                                lowered_inst.ops[0],
+                                .{ .reg = .rax },
+                            }, emit.lower.target), &.{});
                         },
-                        .target = target,
-                        .offset = @intCast(end_offset - 4),
-                        .addend = @intCast(lowered_relocs[0].off),
-                        .pcrel = true,
-                        .length = 2,
-                    });
-                } else if (emit.lower.bin_file.cast(.plan9)) |p9_file| {
-                    try p9_file.addReloc(emit.atom_index, .{ // TODO we may need to add a .type field to the relocs if they are .linker_got instead of just .linker_direct
-                        .target = sym_index, // we set sym_index to just be the atom index
-                        .offset = @intCast(end_offset - 4),
-                        .addend = @intCast(lowered_relocs[0].off),
-                        .type = .pcrel,
+                        .mov => {
+                            try emit.encodeInst(try .new(.none, .mov, &.{
+                                .{ .reg = .rdi },
+                                .{ .mem = .initRip(.ptr, 0) },
+                            }, emit.lower.target), reloc_info);
+                            try emit.encodeInst(try .new(.none, .call, &.{
+                                .{ .mem = .initSib(.qword, .{ .base = .{ .reg = .rdi } }) },
+                            }, emit.lower.target), &.{});
+                            try emit.encodeInst(try .new(.none, .mov, &.{
+                                lowered_inst.ops[0],
+                                .{ .mem = .initSib(.qword, .{ .base = .{ .reg = .rax } }) },
+                            }, emit.lower.target), &.{});
+                        },
+                        else => unreachable,
+                    } else return emit.fail("TODO implement relocs for {s}", .{
+                        @tagName(emit.bin_file.tag),
                     });
-                } else return emit.fail("TODO implement linker reloc for {s}", .{
-                    @tagName(emit.lower.bin_file.tag),
-                }),
+                    continue :lowered_inst;
+                },
             };
+            try emit.encodeInst(lowered_inst, reloc_info);
         }
-        std.debug.assert(lowered_relocs.len == 0);
+        assert(lowered_relocs.len == 0);
 
         if (lowered.insts.len == 0) {
             const mir_inst = emit.lower.mir.instructions.get(mir_index);
@@ -358,7 +462,6 @@ pub fn emitMir(emit: *Emit) Error!void {
                     .pseudo_dbg_arg_i_s,
                     .pseudo_dbg_arg_i_u,
                     .pseudo_dbg_arg_i_64,
-                    .pseudo_dbg_arg_reloc,
                     .pseudo_dbg_arg_ro,
                     .pseudo_dbg_arg_fa,
                     .pseudo_dbg_arg_m,
@@ -366,7 +469,6 @@ pub fn emitMir(emit: *Emit) Error!void {
                     .pseudo_dbg_var_i_s,
                     .pseudo_dbg_var_i_u,
                     .pseudo_dbg_var_i_64,
-                    .pseudo_dbg_var_reloc,
                     .pseudo_dbg_var_ro,
                     .pseudo_dbg_var_fa,
                     .pseudo_dbg_var_m,
@@ -391,16 +493,6 @@ pub fn emitMir(emit: *Emit) Error!void {
                                     loc_buf[0] = .{ .constu = mir_inst.data.i64 };
                                     break :stack_value &loc_buf[0];
                                 } },
-                                .pseudo_dbg_arg_reloc, .pseudo_dbg_var_reloc => .{ .plus = .{
-                                    sym: {
-                                        loc_buf[0] = .{ .addr_reloc = mir_inst.data.reloc.sym_index };
-                                        break :sym &loc_buf[0];
-                                    },
-                                    off: {
-                                        loc_buf[1] = .{ .consts = mir_inst.data.reloc.off };
-                                        break :off &loc_buf[1];
-                                    },
-                                } },
                                 .pseudo_dbg_arg_fa, .pseudo_dbg_var_fa => {
                                     const reg_off = emit.lower.mir.resolveFrameAddr(mir_inst.data.fa);
                                     break :loc .{ .plus = .{
@@ -415,15 +507,53 @@ pub fn emitMir(emit: *Emit) Error!void {
                                     } };
                                 },
                                 .pseudo_dbg_arg_m, .pseudo_dbg_var_m => {
-                                    const mem = emit.lower.mem(undefined, mir_inst.data.x.payload);
+                                    const ip = &emit.pt.zcu.intern_pool;
+                                    const mem = emit.lower.mir.resolveMemoryExtra(mir_inst.data.x.payload).decode();
                                     break :loc .{ .plus = .{
                                         base: {
                                             loc_buf[0] = switch (mem.base()) {
                                                 .none => .{ .constu = 0 },
                                                 .reg => |reg| .{ .breg = reg.dwarfNum() },
                                                 .frame, .table, .rip_inst => unreachable,
-                                                .reloc => |sym_index| .{ .addr_reloc = sym_index },
-                                                .pcrel => unreachable,
+                                                .nav => |nav| .{ .addr_reloc = switch (codegen.genNavRef(
+                                                    emit.bin_file,
+                                                    emit.pt,
+                                                    emit.lower.src_loc,
+                                                    .fromInterned(ip.getNav(nav).typeOf(ip)),
+                                                    nav,
+                                                    emit.lower.target.*,
+                                                ) catch |err| switch (err) {
+                                                    error.CodegenFail,
+                                                    => return emit.fail("unable to codegen: {s}", .{@errorName(err)}),
+                                                    else => |e| return e,
+                                                }) {
+                                                    .mcv => |mcv| switch (mcv) {
+                                                        else => unreachable,
+                                                        .load_direct, .load_symbol => |sym_index| sym_index,
+                                                    },
+                                                    .fail => |em| {
+                                                        assert(emit.lower.err_msg == null);
+                                                        emit.lower.err_msg = em;
+                                                        return error.EmitFail;
+                                                    },
+                                                } },
+                                                .uav => |uav| .{ .addr_reloc = switch (try emit.bin_file.lowerUav(
+                                                    emit.pt,
+                                                    uav.val,
+                                                    Type.fromInterned(uav.orig_ty).ptrAlignment(emit.pt.zcu),
+                                                    emit.lower.src_loc,
+                                                )) {
+                                                    .mcv => |mcv| switch (mcv) {
+                                                        else => unreachable,
+                                                        .load_direct, .load_symbol => |sym_index| sym_index,
+                                                    },
+                                                    .fail => |em| {
+                                                        assert(emit.lower.err_msg == null);
+                                                        emit.lower.err_msg = em;
+                                                        return error.EmitFail;
+                                                    },
+                                                } },
+                                                .lazy_sym, .extern_func => unreachable,
                                             };
                                             break :base &loc_buf[0];
                                         },
@@ -438,13 +568,8 @@ pub fn emitMir(emit: *Emit) Error!void {
                                 },
                             };
 
-                            const local_name_bytes = emit.lower.mir.local_name_bytes[local_name_index..];
-                            const local_name = local_name_bytes[0..std.mem.indexOfScalar(u8, local_name_bytes, 0).? :0];
-                            local_name_index += local_name.len + 1;
-
-                            const local_type = emit.lower.mir.local_types[local_index];
+                            const local = &emit.lower.mir.locals[local_index];
                             local_index += 1;
-
                             try dwarf.genLocalVarDebugInfo(
                                 switch (mir_inst.ops) {
                                     else => unreachable,
@@ -452,7 +577,6 @@ pub fn emitMir(emit: *Emit) Error!void {
                                     .pseudo_dbg_arg_i_s,
                                     .pseudo_dbg_arg_i_u,
                                     .pseudo_dbg_arg_i_64,
-                                    .pseudo_dbg_arg_reloc,
                                     .pseudo_dbg_arg_ro,
                                     .pseudo_dbg_arg_fa,
                                     .pseudo_dbg_arg_m,
@@ -462,27 +586,23 @@ pub fn emitMir(emit: *Emit) Error!void {
                                     .pseudo_dbg_var_i_s,
                                     .pseudo_dbg_var_i_u,
                                     .pseudo_dbg_var_i_64,
-                                    .pseudo_dbg_var_reloc,
                                     .pseudo_dbg_var_ro,
                                     .pseudo_dbg_var_fa,
                                     .pseudo_dbg_var_m,
                                     .pseudo_dbg_var_val,
                                     => .local_var,
                                 },
-                                local_name,
-                                .fromInterned(local_type),
+                                local.name.toSlice(&emit.lower.mir),
+                                .fromInterned(local.type),
                                 loc,
                             );
                         },
-                        .plan9 => {},
-                        .none => {},
+                        .plan9, .none => local_index += 1,
                     },
                     .pseudo_dbg_arg_val, .pseudo_dbg_var_val => switch (emit.debug_output) {
                         .dwarf => |dwarf| {
-                            const local_name_bytes = emit.lower.mir.local_name_bytes[local_name_index..];
-                            const local_name = local_name_bytes[0..std.mem.indexOfScalar(u8, local_name_bytes, 0).? :0];
-                            local_name_index += local_name.len + 1;
-
+                            const local = &emit.lower.mir.locals[local_index];
+                            local_index += 1;
                             try dwarf.genLocalConstDebugInfo(
                                 emit.lower.src_loc,
                                 switch (mir_inst.ops) {
@@ -490,12 +610,11 @@ pub fn emitMir(emit: *Emit) Error!void {
                                     .pseudo_dbg_arg_val => .comptime_arg,
                                     .pseudo_dbg_var_val => .local_const,
                                 },
-                                local_name,
+                                local.name.toSlice(&emit.lower.mir),
                                 .fromInterned(mir_inst.data.ip_index),
                             );
                         },
-                        .plan9 => {},
-                        .none => {},
+                        .plan9, .none => local_index += 1,
                     },
                     .pseudo_dbg_var_args_none => switch (emit.debug_output) {
                         .dwarf => |dwarf| try dwarf.genVarArgsDebugInfo(),
@@ -507,8 +626,8 @@ pub fn emitMir(emit: *Emit) Error!void {
             }
         }
     }
-    for (relocs.items) |reloc| {
-        const target = code_offset_mapping[reloc.target];
+    for (emit.relocs.items) |reloc| {
+        const target = emit.code_offset_mapping.items[reloc.target];
         const disp = @as(i64, @intCast(target)) - @as(i64, @intCast(reloc.inst_offset + reloc.inst_length)) + reloc.target_offset;
         const inst_bytes = emit.code.items[reloc.inst_offset..][0..reloc.inst_length];
         switch (reloc.source_length) {
@@ -522,13 +641,13 @@ pub fn emitMir(emit: *Emit) Error!void {
         }
     }
     if (emit.lower.mir.table.len > 0) {
-        if (emit.lower.bin_file.cast(.elf)) |elf_file| {
+        if (emit.bin_file.cast(.elf)) |elf_file| {
             const zo = elf_file.zigObjectPtr().?;
             const atom = zo.symbol(emit.atom_index).atom(elf_file).?;
 
             const ptr_size = @divExact(emit.lower.target.ptrBitWidth(), 8);
             var table_offset = std.mem.alignForward(u32, @intCast(emit.code.items.len), ptr_size);
-            for (table_relocs.items) |table_reloc| try atom.addReloc(gpa, .{
+            for (emit.table_relocs.items) |table_reloc| try atom.addReloc(gpa, .{
                 .r_offset = table_reloc.source_offset,
                 .r_info = @as(u64, emit.atom_index) << 32 | @intFromEnum(std.elf.R_X86_64.@"32"),
                 .r_addend = @as(i64, table_offset) + table_reloc.target_offset,
@@ -537,7 +656,7 @@ pub fn emitMir(emit: *Emit) Error!void {
                 try atom.addReloc(gpa, .{
                     .r_offset = table_offset,
                     .r_info = @as(u64, emit.atom_index) << 32 | @intFromEnum(std.elf.R_X86_64.@"64"),
-                    .r_addend = code_offset_mapping[entry],
+                    .r_addend = emit.code_offset_mapping.items[entry],
                 }, zo);
                 table_offset += ptr_size;
             }
@@ -546,6 +665,192 @@ pub fn emitMir(emit: *Emit) Error!void {
     }
 }
 
+pub fn deinit(emit: *Emit) void {
+    const gpa = emit.bin_file.comp.gpa;
+    emit.code_offset_mapping.deinit(gpa);
+    emit.relocs.deinit(gpa);
+    emit.table_relocs.deinit(gpa);
+    emit.* = undefined;
+}
+
+const RelocInfo = struct {
+    op_index: Lower.InstOpIndex,
+    off: i32 = 0,
+    target: Target,
+
+    const Target = struct {
+        index: u32,
+        is_extern: bool,
+        type: Target.Type,
+        force_pcrel_direct: bool = false,
+
+        const Type = enum { inst, table, symbol, branch, tls, tlv };
+    };
+};
+
+fn encodeInst(emit: *Emit, lowered_inst: Instruction, reloc_info: []const RelocInfo) Error!void {
+    const comp = emit.bin_file.comp;
+    const gpa = comp.gpa;
+    const start_offset: u32 = @intCast(emit.code.items.len);
+    try lowered_inst.encode(emit.code.writer(gpa), .{});
+    const end_offset: u32 = @intCast(emit.code.items.len);
+    for (reloc_info) |reloc| switch (reloc.target.type) {
+        .inst => {
+            const inst_length: u4 = @intCast(end_offset - start_offset);
+            const reloc_offset, const reloc_length = reloc_offset_length: {
+                var reloc_offset = inst_length;
+                var op_index: usize = lowered_inst.ops.len;
+                while (true) {
+                    op_index -= 1;
+                    const op = lowered_inst.encoding.data.ops[op_index];
+                    if (op == .none) continue;
+                    const is_mem = op.isMemory();
+                    const enc_length: u4 = if (is_mem) switch (lowered_inst.ops[op_index].mem.sib.base) {
+                        .rip_inst => 4,
+                        else => unreachable,
+                    } else @intCast(std.math.divCeil(u7, @intCast(op.immBitSize()), 8) catch unreachable);
+                    reloc_offset -= enc_length;
+                    if (op_index == reloc.op_index) break :reloc_offset_length .{ reloc_offset, enc_length };
+                    assert(!is_mem);
+                }
+            };
+            try emit.relocs.append(emit.lower.allocator, .{
+                .inst_offset = start_offset,
+                .inst_length = inst_length,
+                .source_offset = reloc_offset,
+                .source_length = reloc_length,
+                .target = reloc.target.index,
+                .target_offset = reloc.off,
+            });
+        },
+        .table => try emit.table_relocs.append(emit.lower.allocator, .{
+            .source_offset = end_offset - 4,
+            .target_offset = reloc.off,
+        }),
+        .symbol => if (emit.bin_file.cast(.elf)) |elf_file| {
+            const zo = elf_file.zigObjectPtr().?;
+            const atom = zo.symbol(emit.atom_index).atom(elf_file).?;
+            const r_type: std.elf.R_X86_64 = if (!emit.pic)
+                .@"32"
+            else if (reloc.target.is_extern and !reloc.target.force_pcrel_direct)
+                .GOTPCREL
+            else
+                .PC32;
+            try atom.addReloc(gpa, .{
+                .r_offset = end_offset - 4,
+                .r_info = @as(u64, reloc.target.index) << 32 | @intFromEnum(r_type),
+                .r_addend = if (emit.pic) reloc.off - 4 else reloc.off,
+            }, zo);
+        } else if (emit.bin_file.cast(.macho)) |macho_file| {
+            const zo = macho_file.getZigObject().?;
+            const atom = zo.symbols.items[emit.atom_index].getAtom(macho_file).?;
+            try atom.addReloc(macho_file, .{
+                .tag = .@"extern",
+                .offset = end_offset - 4,
+                .target = reloc.target.index,
+                .addend = reloc.off,
+                .type = if (reloc.target.is_extern and !reloc.target.force_pcrel_direct) .got_load else .signed,
+                .meta = .{
+                    .pcrel = true,
+                    .has_subtractor = false,
+                    .length = 2,
+                    .symbolnum = @intCast(reloc.target.index),
+                },
+            });
+        } else unreachable,
+        .branch => if (emit.bin_file.cast(.elf)) |elf_file| {
+            const zo = elf_file.zigObjectPtr().?;
+            const atom = zo.symbol(emit.atom_index).atom(elf_file).?;
+            const r_type: std.elf.R_X86_64 = .PLT32;
+            try atom.addReloc(gpa, .{
+                .r_offset = end_offset - 4,
+                .r_info = @as(u64, reloc.target.index) << 32 | @intFromEnum(r_type),
+                .r_addend = reloc.off - 4,
+            }, zo);
+        } else if (emit.bin_file.cast(.macho)) |macho_file| {
+            const zo = macho_file.getZigObject().?;
+            const atom = zo.symbols.items[emit.atom_index].getAtom(macho_file).?;
+            try atom.addReloc(macho_file, .{
+                .tag = .@"extern",
+                .offset = end_offset - 4,
+                .target = reloc.target.index,
+                .addend = reloc.off,
+                .type = .branch,
+                .meta = .{
+                    .pcrel = true,
+                    .has_subtractor = false,
+                    .length = 2,
+                    .symbolnum = @intCast(reloc.target.index),
+                },
+            });
+        } else if (emit.bin_file.cast(.coff)) |coff_file| {
+            const atom_index = coff_file.getAtomIndexForSymbol(
+                .{ .sym_index = emit.atom_index, .file = null },
+            ).?;
+            const target: link.File.Coff.SymbolWithLoc = if (link.File.Coff.global_symbol_bit & reloc.target.index != 0)
+                coff_file.getGlobalByIndex(link.File.Coff.global_symbol_mask & reloc.target.index)
+            else
+                .{ .sym_index = reloc.target.index, .file = null };
+            try coff_file.addRelocation(atom_index, .{
+                .type = .direct,
+                .target = target,
+                .offset = end_offset - 4,
+                .addend = @intCast(reloc.off),
+                .pcrel = true,
+                .length = 2,
+            });
+        } else return emit.fail("TODO implement {s} reloc for {s}", .{
+            @tagName(reloc.target.type), @tagName(emit.bin_file.tag),
+        }),
+        .tls => if (emit.bin_file.cast(.elf)) |elf_file| {
+            if (reloc.target.is_extern) return emit.fail("TODO implement extern {s} reloc for {s}", .{
+                @tagName(reloc.target.type), @tagName(emit.bin_file.tag),
+            });
+            const zo = elf_file.zigObjectPtr().?;
+            const atom = zo.symbol(emit.atom_index).atom(elf_file).?;
+            const r_type: std.elf.R_X86_64 = if (emit.pic) .TLSLD else unreachable;
+            try atom.addReloc(gpa, .{
+                .r_offset = end_offset - 4,
+                .r_info = @as(u64, reloc.target.index) << 32 | @intFromEnum(r_type),
+                .r_addend = reloc.off - 4,
+            }, zo);
+        } else return emit.fail("TODO implement {s} reloc for {s}", .{
+            @tagName(reloc.target.type), @tagName(emit.bin_file.tag),
+        }),
+        .tlv => if (emit.bin_file.cast(.elf)) |elf_file| {
+            if (reloc.target.is_extern) return emit.fail("TODO implement extern {s} reloc for {s}", .{
+                @tagName(reloc.target.type), @tagName(emit.bin_file.tag),
+            });
+            const zo = elf_file.zigObjectPtr().?;
+            const atom = zo.symbol(emit.atom_index).atom(elf_file).?;
+            const r_type: std.elf.R_X86_64 = if (emit.pic) .DTPOFF32 else .TPOFF32;
+            try atom.addReloc(gpa, .{
+                .r_offset = end_offset - 4,
+                .r_info = @as(u64, reloc.target.index) << 32 | @intFromEnum(r_type),
+                .r_addend = reloc.off,
+            }, zo);
+        } else if (emit.bin_file.cast(.macho)) |macho_file| {
+            const zo = macho_file.getZigObject().?;
+            const atom = zo.symbols.items[emit.atom_index].getAtom(macho_file).?;
+            try atom.addReloc(macho_file, .{
+                .tag = .@"extern",
+                .offset = end_offset - 4,
+                .target = reloc.target.index,
+                .addend = reloc.off,
+                .type = .tlv,
+                .meta = .{
+                    .pcrel = true,
+                    .has_subtractor = false,
+                    .length = 2,
+                    .symbolnum = @intCast(reloc.target.index),
+                },
+            });
+        } else return emit.fail("TODO implement {s} reloc for {s}", .{
+            @tagName(reloc.target.type), @tagName(emit.bin_file.tag),
+        }),
+    };
+}
+
 fn fail(emit: *Emit, comptime format: []const u8, args: anytype) Error {
     return switch (emit.lower.fail(format, args)) {
         error.LowerFail => error.EmitFail,
@@ -629,11 +934,17 @@ fn dbgAdvancePCAndLine(emit: *Emit, loc: Loc) Error!void {
     }
 }
 
+const assert = std.debug.assert;
 const bits = @import("bits.zig");
+const codegen = @import("../../codegen.zig");
 const Emit = @This();
+const encoder = @import("encoder.zig");
+const Instruction = encoder.Instruction;
 const InternPool = @import("../../InternPool.zig");
 const link = @import("../../link.zig");
 const log = std.log.scoped(.emit);
 const Lower = @import("Lower.zig");
 const Mir = @import("Mir.zig");
 const std = @import("std");
+const Type = @import("../../Type.zig");
+const Zcu = @import("../../Zcu.zig");
src/arch/x86_64/encoder.zig
@@ -138,7 +138,7 @@ pub const Instruction = struct {
                 .moffs => true,
                 .rip => false,
                 .sib => |s| switch (s.base) {
-                    .none, .frame, .table, .reloc, .pcrel, .rip_inst => false,
+                    .none, .frame, .table, .rip_inst, .nav, .uav, .lazy_sym, .extern_func => false,
                     .reg => |reg| reg.isClass(.segment),
                 },
             };
@@ -211,7 +211,7 @@ pub const Instruction = struct {
                 .none, .imm => 0b00,
                 .reg => |reg| @truncate(reg.enc() >> 3),
                 .mem => |mem| switch (mem.base()) {
-                    .none, .frame, .table, .reloc, .pcrel, .rip_inst => 0b00, // rsp, rbp, and rip are not extended
+                    .none, .frame, .table, .rip_inst, .nav, .uav, .lazy_sym, .extern_func => 0b00, // rsp, rbp, and rip are not extended
                     .reg => |reg| @truncate(reg.enc() >> 3),
                 },
                 .bytes => unreachable,
@@ -281,9 +281,14 @@ pub const Instruction = struct {
                             .reg => |reg| try writer.print("{s}", .{@tagName(reg)}),
                             .frame => |frame_index| try writer.print("{}", .{frame_index}),
                             .table => try writer.print("Table", .{}),
-                            .reloc => |sym_index| try writer.print("Symbol({d})", .{sym_index}),
-                            .pcrel => |sym_index| try writer.print("PcRelSymbol({d})", .{sym_index}),
                             .rip_inst => |inst_index| try writer.print("RipInst({d})", .{inst_index}),
+                            .nav => |nav| try writer.print("Nav({d})", .{@intFromEnum(nav)}),
+                            .uav => |uav| try writer.print("Uav({d})", .{@intFromEnum(uav.val)}),
+                            .lazy_sym => |lazy_sym| try writer.print("LazySym({s}, {d})", .{
+                                @tagName(lazy_sym.kind),
+                                @intFromEnum(lazy_sym.ty),
+                            }),
+                            .extern_func => |extern_func| try writer.print("ExternFunc({d})", .{@intFromEnum(extern_func)}),
                         }
                         if (mem.scaleIndex()) |si| {
                             if (any) try writer.writeAll(" + ");
@@ -718,11 +723,11 @@ pub const Instruction = struct {
                     try encoder.modRm_indirectDisp32(operand_enc, 0);
                     try encoder.disp32(undefined);
                 } else return error.CannotEncode,
-                .reloc => if (@TypeOf(encoder).options.allow_symbols) {
+                .nav, .uav, .lazy_sym, .extern_func => if (@TypeOf(encoder).options.allow_symbols) {
                     try encoder.modRm_indirectDisp32(operand_enc, 0);
                     try encoder.disp32(undefined);
                 } else return error.CannotEncode,
-                .pcrel, .rip_inst => {
+                .rip_inst => {
                     try encoder.modRm_RIPDisp32(operand_enc);
                     try encoder.disp32(sib.disp);
                 },
src/arch/x86_64/Lower.zig
@@ -1,10 +1,6 @@
 //! This file contains the functionality for lowering x86_64 MIR to Instructions
 
-bin_file: *link.File,
 target: *const std.Target,
-output_mode: std.builtin.OutputMode,
-link_mode: std.builtin.LinkMode,
-pic: bool,
 allocator: std.mem.Allocator,
 mir: Mir,
 cc: std.builtin.CallingConvention,
@@ -17,7 +13,6 @@ result_relocs: [max_result_relocs]Reloc = undefined,
 
 const max_result_insts = @max(
     1, // non-pseudo instructions
-    3, // (ELF only) TLS local dynamic (LD) sequence in PIC mode
     2, // cmovcc: cmovcc \ cmovcc
     3, // setcc: setcc \ setcc \ logicop
     2, // jcc: jcc \ jcc
@@ -25,6 +20,7 @@ const max_result_insts = @max(
     pseudo_probe_adjust_unrolled_max_insts,
     pseudo_probe_adjust_setup_insts,
     pseudo_probe_adjust_loop_insts,
+    abi.zigcc.callee_preserved_regs.len * 2, // push_regs/pop_regs
     abi.Win64.callee_preserved_regs.len * 2, // push_regs/pop_regs
     abi.SysV.callee_preserved_regs.len * 2, // push_regs/pop_regs
 );
@@ -33,14 +29,13 @@ const max_result_relocs = @max(
     2, // jcc: jcc \ jcc
     2, // test \ jcc \ probe \ sub \ jmp
     1, // probe \ sub \ jcc
-    3, // (ELF only) TLS local dynamic (LD) sequence in PIC mode
 );
 
-const ResultInstIndex = std.math.IntFittingRange(0, max_result_insts - 1);
-const ResultRelocIndex = std.math.IntFittingRange(0, max_result_relocs - 1);
-const InstOpIndex = std.math.IntFittingRange(
+const ResultInstIndex = std.math.IntFittingRange(0, max_result_insts);
+const ResultRelocIndex = std.math.IntFittingRange(0, max_result_relocs);
+pub const InstOpIndex = std.math.IntFittingRange(
     0,
-    @typeInfo(@FieldType(Instruction, "ops")).array.len - 1,
+    @typeInfo(@FieldType(Instruction, "ops")).array.len,
 );
 
 pub const pseudo_probe_align_insts = 5; // test \ jcc \ probe \ sub \ jmp
@@ -54,7 +49,8 @@ pub const Error = error{
     LowerFail,
     InvalidInstruction,
     CannotEncode,
-};
+    CodegenFail,
+} || codegen.GenerateSymbolError;
 
 pub const Reloc = struct {
     lowered_inst_index: ResultInstIndex,
@@ -65,14 +61,10 @@ pub const Reloc = struct {
     const Target = union(enum) {
         inst: Mir.Inst.Index,
         table,
-        linker_reloc: u32,
-        linker_pcrel: u32,
-        linker_tlsld: u32,
-        linker_dtpoff: u32,
-        linker_extern_fn: u32,
-        linker_got: u32,
-        linker_direct: u32,
-        linker_import: u32,
+        nav: InternPool.Nav.Index,
+        uav: InternPool.Key.Ptr.BaseAddr.Uav,
+        lazy_sym: link.File.LazySymbol,
+        extern_func: Mir.NullTerminatedString,
     };
 };
 
@@ -80,7 +72,7 @@ const Options = struct { allow_frame_locs: bool };
 
 /// The returned slice is overwritten by the next call to lowerMir.
 pub fn lowerMir(lower: *Lower, index: Mir.Inst.Index) Error!struct {
-    insts: []const Instruction,
+    insts: []Instruction,
     relocs: []const Reloc,
 } {
     lower.result_insts = undefined;
@@ -98,130 +90,130 @@ pub fn lowerMir(lower: *Lower, index: Mir.Inst.Index) Error!struct {
         .pseudo => switch (inst.ops) {
             .pseudo_cmov_z_and_np_rr => {
                 assert(inst.data.rr.fixes == ._);
-                try lower.emit(.none, .cmovnz, &.{
+                try lower.encode(.none, .cmovnz, &.{
                     .{ .reg = inst.data.rr.r2 },
                     .{ .reg = inst.data.rr.r1 },
                 });
-                try lower.emit(.none, .cmovnp, &.{
+                try lower.encode(.none, .cmovnp, &.{
                     .{ .reg = inst.data.rr.r1 },
                     .{ .reg = inst.data.rr.r2 },
                 });
             },
             .pseudo_cmov_nz_or_p_rr => {
                 assert(inst.data.rr.fixes == ._);
-                try lower.emit(.none, .cmovnz, &.{
+                try lower.encode(.none, .cmovnz, &.{
                     .{ .reg = inst.data.rr.r1 },
                     .{ .reg = inst.data.rr.r2 },
                 });
-                try lower.emit(.none, .cmovp, &.{
+                try lower.encode(.none, .cmovp, &.{
                     .{ .reg = inst.data.rr.r1 },
                     .{ .reg = inst.data.rr.r2 },
                 });
             },
             .pseudo_cmov_nz_or_p_rm => {
                 assert(inst.data.rx.fixes == ._);
-                try lower.emit(.none, .cmovnz, &.{
+                try lower.encode(.none, .cmovnz, &.{
                     .{ .reg = inst.data.rx.r1 },
                     .{ .mem = lower.mem(1, inst.data.rx.payload) },
                 });
-                try lower.emit(.none, .cmovp, &.{
+                try lower.encode(.none, .cmovp, &.{
                     .{ .reg = inst.data.rx.r1 },
                     .{ .mem = lower.mem(1, inst.data.rx.payload) },
                 });
             },
             .pseudo_set_z_and_np_r => {
                 assert(inst.data.rr.fixes == ._);
-                try lower.emit(.none, .setz, &.{
+                try lower.encode(.none, .setz, &.{
                     .{ .reg = inst.data.rr.r1 },
                 });
-                try lower.emit(.none, .setnp, &.{
+                try lower.encode(.none, .setnp, &.{
                     .{ .reg = inst.data.rr.r2 },
                 });
-                try lower.emit(.none, .@"and", &.{
+                try lower.encode(.none, .@"and", &.{
                     .{ .reg = inst.data.rr.r1 },
                     .{ .reg = inst.data.rr.r2 },
                 });
             },
             .pseudo_set_z_and_np_m => {
                 assert(inst.data.rx.fixes == ._);
-                try lower.emit(.none, .setz, &.{
+                try lower.encode(.none, .setz, &.{
                     .{ .mem = lower.mem(0, inst.data.rx.payload) },
                 });
-                try lower.emit(.none, .setnp, &.{
+                try lower.encode(.none, .setnp, &.{
                     .{ .reg = inst.data.rx.r1 },
                 });
-                try lower.emit(.none, .@"and", &.{
+                try lower.encode(.none, .@"and", &.{
                     .{ .mem = lower.mem(0, inst.data.rx.payload) },
                     .{ .reg = inst.data.rx.r1 },
                 });
             },
             .pseudo_set_nz_or_p_r => {
                 assert(inst.data.rr.fixes == ._);
-                try lower.emit(.none, .setnz, &.{
+                try lower.encode(.none, .setnz, &.{
                     .{ .reg = inst.data.rr.r1 },
                 });
-                try lower.emit(.none, .setp, &.{
+                try lower.encode(.none, .setp, &.{
                     .{ .reg = inst.data.rr.r2 },
                 });
-                try lower.emit(.none, .@"or", &.{
+                try lower.encode(.none, .@"or", &.{
                     .{ .reg = inst.data.rr.r1 },
                     .{ .reg = inst.data.rr.r2 },
                 });
             },
             .pseudo_set_nz_or_p_m => {
                 assert(inst.data.rx.fixes == ._);
-                try lower.emit(.none, .setnz, &.{
+                try lower.encode(.none, .setnz, &.{
                     .{ .mem = lower.mem(0, inst.data.rx.payload) },
                 });
-                try lower.emit(.none, .setp, &.{
+                try lower.encode(.none, .setp, &.{
                     .{ .reg = inst.data.rx.r1 },
                 });
-                try lower.emit(.none, .@"or", &.{
+                try lower.encode(.none, .@"or", &.{
                     .{ .mem = lower.mem(0, inst.data.rx.payload) },
                     .{ .reg = inst.data.rx.r1 },
                 });
             },
             .pseudo_j_z_and_np_inst => {
                 assert(inst.data.inst.fixes == ._);
-                try lower.emit(.none, .jnz, &.{
+                try lower.encode(.none, .jnz, &.{
                     .{ .imm = lower.reloc(0, .{ .inst = index + 1 }, 0) },
                 });
-                try lower.emit(.none, .jnp, &.{
+                try lower.encode(.none, .jnp, &.{
                     .{ .imm = lower.reloc(0, .{ .inst = inst.data.inst.inst }, 0) },
                 });
             },
             .pseudo_j_nz_or_p_inst => {
                 assert(inst.data.inst.fixes == ._);
-                try lower.emit(.none, .jnz, &.{
+                try lower.encode(.none, .jnz, &.{
                     .{ .imm = lower.reloc(0, .{ .inst = inst.data.inst.inst }, 0) },
                 });
-                try lower.emit(.none, .jp, &.{
+                try lower.encode(.none, .jp, &.{
                     .{ .imm = lower.reloc(0, .{ .inst = inst.data.inst.inst }, 0) },
                 });
             },
 
             .pseudo_probe_align_ri_s => {
-                try lower.emit(.none, .@"test", &.{
+                try lower.encode(.none, .@"test", &.{
                     .{ .reg = inst.data.ri.r1 },
                     .{ .imm = .s(@bitCast(inst.data.ri.i)) },
                 });
-                try lower.emit(.none, .jz, &.{
+                try lower.encode(.none, .jz, &.{
                     .{ .imm = lower.reloc(0, .{ .inst = index + 1 }, 0) },
                 });
-                try lower.emit(.none, .lea, &.{
+                try lower.encode(.none, .lea, &.{
                     .{ .reg = inst.data.ri.r1 },
                     .{ .mem = Memory.initSib(.qword, .{
                         .base = .{ .reg = inst.data.ri.r1 },
                         .disp = -page_size,
                     }) },
                 });
-                try lower.emit(.none, .@"test", &.{
+                try lower.encode(.none, .@"test", &.{
                     .{ .mem = Memory.initSib(.dword, .{
                         .base = .{ .reg = inst.data.ri.r1 },
                     }) },
                     .{ .reg = inst.data.ri.r1.to32() },
                 });
-                try lower.emit(.none, .jmp, &.{
+                try lower.encode(.none, .jmp, &.{
                     .{ .imm = lower.reloc(0, .{ .inst = index }, 0) },
                 });
                 assert(lower.result_insts_len == pseudo_probe_align_insts);
@@ -229,7 +221,7 @@ pub fn lowerMir(lower: *Lower, index: Mir.Inst.Index) Error!struct {
             .pseudo_probe_adjust_unrolled_ri_s => {
                 var offset = page_size;
                 while (offset < @as(i32, @bitCast(inst.data.ri.i))) : (offset += page_size) {
-                    try lower.emit(.none, .@"test", &.{
+                    try lower.encode(.none, .@"test", &.{
                         .{ .mem = Memory.initSib(.dword, .{
                             .base = .{ .reg = inst.data.ri.r1 },
                             .disp = -offset,
@@ -237,25 +229,25 @@ pub fn lowerMir(lower: *Lower, index: Mir.Inst.Index) Error!struct {
                         .{ .reg = inst.data.ri.r1.to32() },
                     });
                 }
-                try lower.emit(.none, .sub, &.{
+                try lower.encode(.none, .sub, &.{
                     .{ .reg = inst.data.ri.r1 },
                     .{ .imm = .s(@bitCast(inst.data.ri.i)) },
                 });
                 assert(lower.result_insts_len <= pseudo_probe_adjust_unrolled_max_insts);
             },
             .pseudo_probe_adjust_setup_rri_s => {
-                try lower.emit(.none, .mov, &.{
+                try lower.encode(.none, .mov, &.{
                     .{ .reg = inst.data.rri.r2.to32() },
                     .{ .imm = .s(@bitCast(inst.data.rri.i)) },
                 });
-                try lower.emit(.none, .sub, &.{
+                try lower.encode(.none, .sub, &.{
                     .{ .reg = inst.data.rri.r1 },
                     .{ .reg = inst.data.rri.r2 },
                 });
                 assert(lower.result_insts_len == pseudo_probe_adjust_setup_insts);
             },
             .pseudo_probe_adjust_loop_rr => {
-                try lower.emit(.none, .@"test", &.{
+                try lower.encode(.none, .@"test", &.{
                     .{ .mem = Memory.initSib(.dword, .{
                         .base = .{ .reg = inst.data.rr.r1 },
                         .scale_index = .{ .scale = 1, .index = inst.data.rr.r2 },
@@ -263,11 +255,11 @@ pub fn lowerMir(lower: *Lower, index: Mir.Inst.Index) Error!struct {
                     }) },
                     .{ .reg = inst.data.rr.r1.to32() },
                 });
-                try lower.emit(.none, .sub, &.{
+                try lower.encode(.none, .sub, &.{
                     .{ .reg = inst.data.rr.r2 },
                     .{ .imm = .s(page_size) },
                 });
-                try lower.emit(.none, .jae, &.{
+                try lower.encode(.none, .jae, &.{
                     .{ .imm = lower.reloc(0, .{ .inst = index }, 0) },
                 });
                 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 {
             .pseudo_push_reg_list => try lower.pushPopRegList(.push, inst),
             .pseudo_pop_reg_list => try lower.pushPopRegList(.pop, inst),
 
-            .pseudo_cfi_def_cfa_ri_s => try lower.emit(.directive, .@".cfi_def_cfa", &.{
+            .pseudo_cfi_def_cfa_ri_s => try lower.encode(.directive, .@".cfi_def_cfa", &.{
                 .{ .reg = inst.data.ri.r1 },
                 .{ .imm = lower.imm(.ri_s, inst.data.ri.i) },
             }),
-            .pseudo_cfi_def_cfa_register_r => try lower.emit(.directive, .@".cfi_def_cfa_register", &.{
+            .pseudo_cfi_def_cfa_register_r => try lower.encode(.directive, .@".cfi_def_cfa_register", &.{
                 .{ .reg = inst.data.r.r1 },
             }),
-            .pseudo_cfi_def_cfa_offset_i_s => try lower.emit(.directive, .@".cfi_def_cfa_offset", &.{
+            .pseudo_cfi_def_cfa_offset_i_s => try lower.encode(.directive, .@".cfi_def_cfa_offset", &.{
                 .{ .imm = lower.imm(.i_s, inst.data.i.i) },
             }),
-            .pseudo_cfi_adjust_cfa_offset_i_s => try lower.emit(.directive, .@".cfi_adjust_cfa_offset", &.{
+            .pseudo_cfi_adjust_cfa_offset_i_s => try lower.encode(.directive, .@".cfi_adjust_cfa_offset", &.{
                 .{ .imm = lower.imm(.i_s, inst.data.i.i) },
             }),
-            .pseudo_cfi_offset_ri_s => try lower.emit(.directive, .@".cfi_offset", &.{
+            .pseudo_cfi_offset_ri_s => try lower.encode(.directive, .@".cfi_offset", &.{
                 .{ .reg = inst.data.ri.r1 },
                 .{ .imm = lower.imm(.ri_s, inst.data.ri.i) },
             }),
-            .pseudo_cfi_val_offset_ri_s => try lower.emit(.directive, .@".cfi_val_offset", &.{
+            .pseudo_cfi_val_offset_ri_s => try lower.encode(.directive, .@".cfi_val_offset", &.{
                 .{ .reg = inst.data.ri.r1 },
                 .{ .imm = lower.imm(.ri_s, inst.data.ri.i) },
             }),
-            .pseudo_cfi_rel_offset_ri_s => try lower.emit(.directive, .@".cfi_rel_offset", &.{
+            .pseudo_cfi_rel_offset_ri_s => try lower.encode(.directive, .@".cfi_rel_offset", &.{
                 .{ .reg = inst.data.ri.r1 },
                 .{ .imm = lower.imm(.ri_s, inst.data.ri.i) },
             }),
-            .pseudo_cfi_register_rr => try lower.emit(.directive, .@".cfi_register", &.{
+            .pseudo_cfi_register_rr => try lower.encode(.directive, .@".cfi_register", &.{
                 .{ .reg = inst.data.rr.r1 },
                 .{ .reg = inst.data.rr.r2 },
             }),
-            .pseudo_cfi_restore_r => try lower.emit(.directive, .@".cfi_restore", &.{
+            .pseudo_cfi_restore_r => try lower.encode(.directive, .@".cfi_restore", &.{
                 .{ .reg = inst.data.r.r1 },
             }),
-            .pseudo_cfi_undefined_r => try lower.emit(.directive, .@".cfi_undefined", &.{
+            .pseudo_cfi_undefined_r => try lower.encode(.directive, .@".cfi_undefined", &.{
                 .{ .reg = inst.data.r.r1 },
             }),
-            .pseudo_cfi_same_value_r => try lower.emit(.directive, .@".cfi_same_value", &.{
+            .pseudo_cfi_same_value_r => try lower.encode(.directive, .@".cfi_same_value", &.{
                 .{ .reg = inst.data.r.r1 },
             }),
-            .pseudo_cfi_remember_state_none => try lower.emit(.directive, .@".cfi_remember_state", &.{}),
-            .pseudo_cfi_restore_state_none => try lower.emit(.directive, .@".cfi_restore_state", &.{}),
-            .pseudo_cfi_escape_bytes => try lower.emit(.directive, .@".cfi_escape", &.{
+            .pseudo_cfi_remember_state_none => try lower.encode(.directive, .@".cfi_remember_state", &.{}),
+            .pseudo_cfi_restore_state_none => try lower.encode(.directive, .@".cfi_restore_state", &.{}),
+            .pseudo_cfi_escape_bytes => try lower.encode(.directive, .@".cfi_escape", &.{
                 .{ .bytes = inst.data.bytes.get(lower.mir) },
             }),
 
@@ -331,7 +323,6 @@ pub fn lowerMir(lower: *Lower, index: Mir.Inst.Index) Error!struct {
             .pseudo_dbg_arg_i_s,
             .pseudo_dbg_arg_i_u,
             .pseudo_dbg_arg_i_64,
-            .pseudo_dbg_arg_reloc,
             .pseudo_dbg_arg_ro,
             .pseudo_dbg_arg_fa,
             .pseudo_dbg_arg_m,
@@ -341,7 +332,6 @@ pub fn lowerMir(lower: *Lower, index: Mir.Inst.Index) Error!struct {
             .pseudo_dbg_var_i_s,
             .pseudo_dbg_var_i_u,
             .pseudo_dbg_var_i_64,
-            .pseudo_dbg_var_reloc,
             .pseudo_dbg_var_ro,
             .pseudo_dbg_var_fa,
             .pseudo_dbg_var_m,
@@ -362,7 +352,7 @@ pub fn lowerMir(lower: *Lower, index: Mir.Inst.Index) Error!struct {
 pub fn fail(lower: *Lower, comptime format: []const u8, args: anytype) Error {
     @branchHint(.cold);
     assert(lower.err_msg == null);
-    lower.err_msg = try Zcu.ErrorMsg.create(lower.allocator, lower.src_loc, format, args);
+    lower.err_msg = try .create(lower.allocator, lower.src_loc, format, args);
     return error.LowerFail;
 }
 
@@ -404,13 +394,17 @@ pub fn imm(lower: *const Lower, ops: Mir.Inst.Ops, i: u32) Immediate {
     };
 }
 
-pub fn mem(lower: *Lower, op_index: InstOpIndex, payload: u32) Memory {
-    var m = lower.mir.resolveFrameLoc(lower.mir.extraData(Mir.Memory, payload).data).decode();
+fn mem(lower: *Lower, op_index: InstOpIndex, payload: u32) Memory {
+    var m = lower.mir.resolveMemoryExtra(payload).decode();
     switch (m) {
         .sib => |*sib| switch (sib.base) {
-            else => {},
+            .none, .reg, .frame => {},
             .table => sib.disp = lower.reloc(op_index, .table, sib.disp).signed,
             .rip_inst => |inst_index| sib.disp = lower.reloc(op_index, .{ .inst = inst_index }, sib.disp).signed,
+            .nav => |nav| sib.disp = lower.reloc(op_index, .{ .nav = nav }, sib.disp).signed,
+            .uav => |uav| sib.disp = lower.reloc(op_index, .{ .uav = uav }, sib.disp).signed,
+            .lazy_sym => |lazy_sym| sib.disp = lower.reloc(op_index, .{ .lazy_sym = lazy_sym }, sib.disp).signed,
+            .extern_func => |extern_func| sib.disp = lower.reloc(op_index, .{ .extern_func = extern_func }, sib.disp).signed,
         },
         else => {},
     }
@@ -428,172 +422,8 @@ fn reloc(lower: *Lower, op_index: InstOpIndex, target: Reloc.Target, off: i32) I
     return .s(0);
 }
 
-fn emit(lower: *Lower, prefix: Prefix, mnemonic: Mnemonic, ops: []const Operand) Error!void {
-    const emit_prefix = prefix;
-    var emit_mnemonic = mnemonic;
-    var emit_ops_storage: [4]Operand = undefined;
-    const emit_ops = emit_ops_storage[0..ops.len];
-    for (emit_ops, ops, 0..) |*emit_op, op, op_index| {
-        emit_op.* = switch (op) {
-            else => op,
-            .mem => |mem_op| op: switch (mem_op.base()) {
-                else => op,
-                .reloc => |sym_index| {
-                    assert(prefix == .none);
-                    assert(mem_op.sib.disp == 0);
-                    assert(mem_op.sib.scale_index.scale == 0);
-
-                    if (lower.bin_file.cast(.elf)) |elf_file| {
-                        const zo = elf_file.zigObjectPtr().?;
-                        const elf_sym = zo.symbol(sym_index);
-
-                        if (elf_sym.flags.is_tls) {
-                            // TODO handle extern TLS vars, i.e., emit GD model
-                            if (lower.pic) {
-                                // Here, we currently assume local dynamic TLS vars, and so
-                                // we emit LD model.
-                                _ = lower.reloc(1, .{ .linker_tlsld = sym_index }, 0);
-                                lower.result_insts[lower.result_insts_len] = try .new(.none, .lea, &.{
-                                    .{ .reg = .rdi },
-                                    .{ .mem = Memory.initRip(.none, 0) },
-                                }, lower.target);
-                                lower.result_insts_len += 1;
-                                _ = lower.reloc(0, .{
-                                    .linker_extern_fn = try elf_file.getGlobalSymbol("__tls_get_addr", null),
-                                }, 0);
-                                lower.result_insts[lower.result_insts_len] = try .new(.none, .call, &.{
-                                    .{ .imm = .s(0) },
-                                }, lower.target);
-                                lower.result_insts_len += 1;
-                                _ = lower.reloc(@intCast(op_index), .{ .linker_dtpoff = sym_index }, 0);
-                                emit_mnemonic = .lea;
-                                break :op .{ .mem = Memory.initSib(.none, .{
-                                    .base = .{ .reg = .rax },
-                                    .disp = std.math.minInt(i32),
-                                }) };
-                            } else {
-                                // Since we are linking statically, we emit LE model directly.
-                                lower.result_insts[lower.result_insts_len] = try .new(.none, .mov, &.{
-                                    .{ .reg = .rax },
-                                    .{ .mem = Memory.initSib(.qword, .{ .base = .{ .reg = .fs } }) },
-                                }, lower.target);
-                                lower.result_insts_len += 1;
-                                _ = lower.reloc(@intCast(op_index), .{ .linker_reloc = sym_index }, 0);
-                                emit_mnemonic = .lea;
-                                break :op .{ .mem = Memory.initSib(.none, .{
-                                    .base = .{ .reg = .rax },
-                                    .disp = std.math.minInt(i32),
-                                }) };
-                            }
-                        }
-
-                        if (lower.pic) switch (mnemonic) {
-                            .lea => {
-                                _ = lower.reloc(@intCast(op_index), .{ .linker_reloc = sym_index }, 0);
-                                if (!elf_sym.flags.is_extern_ptr) break :op .{ .mem = Memory.initRip(.none, 0) };
-                                emit_mnemonic = .mov;
-                                break :op .{ .mem = Memory.initRip(.ptr, 0) };
-                            },
-                            .mov => {
-                                if (elf_sym.flags.is_extern_ptr) {
-                                    const reg = ops[0].reg;
-                                    _ = lower.reloc(1, .{ .linker_reloc = sym_index }, 0);
-                                    lower.result_insts[lower.result_insts_len] = try .new(.none, .mov, &.{
-                                        .{ .reg = reg.to64() },
-                                        .{ .mem = Memory.initRip(.qword, 0) },
-                                    }, lower.target);
-                                    lower.result_insts_len += 1;
-                                    break :op .{ .mem = Memory.initSib(mem_op.sib.ptr_size, .{ .base = .{
-                                        .reg = reg.to64(),
-                                    } }) };
-                                }
-                                _ = lower.reloc(@intCast(op_index), .{ .linker_reloc = sym_index }, 0);
-                                break :op .{ .mem = Memory.initRip(mem_op.sib.ptr_size, 0) };
-                            },
-                            else => unreachable,
-                        };
-                        _ = lower.reloc(@intCast(op_index), .{ .linker_reloc = sym_index }, 0);
-                        switch (mnemonic) {
-                            .call => break :op .{ .mem = Memory.initSib(mem_op.sib.ptr_size, .{
-                                .base = .{ .reg = .ds },
-                            }) },
-                            .lea => {
-                                emit_mnemonic = .mov;
-                                break :op .{ .imm = .s(0) };
-                            },
-                            .mov => break :op .{ .mem = Memory.initSib(mem_op.sib.ptr_size, .{
-                                .base = .{ .reg = .ds },
-                            }) },
-                            else => unreachable,
-                        }
-                    } else if (lower.bin_file.cast(.macho)) |macho_file| {
-                        const zo = macho_file.getZigObject().?;
-                        const macho_sym = zo.symbols.items[sym_index];
-
-                        if (macho_sym.flags.tlv) {
-                            _ = lower.reloc(1, .{ .linker_reloc = sym_index }, 0);
-                            lower.result_insts[lower.result_insts_len] = try .new(.none, .mov, &.{
-                                .{ .reg = .rdi },
-                                .{ .mem = Memory.initRip(.ptr, 0) },
-                            }, lower.target);
-                            lower.result_insts_len += 1;
-                            lower.result_insts[lower.result_insts_len] = try .new(.none, .call, &.{
-                                .{ .mem = Memory.initSib(.qword, .{ .base = .{ .reg = .rdi } }) },
-                            }, lower.target);
-                            lower.result_insts_len += 1;
-                            emit_mnemonic = .mov;
-                            break :op .{ .reg = .rax };
-                        }
-
-                        break :op switch (mnemonic) {
-                            .lea => {
-                                _ = lower.reloc(@intCast(op_index), .{ .linker_reloc = sym_index }, 0);
-                                if (!macho_sym.flags.is_extern_ptr) break :op .{ .mem = Memory.initRip(.none, 0) };
-                                emit_mnemonic = .mov;
-                                break :op .{ .mem = Memory.initRip(.ptr, 0) };
-                            },
-                            .mov => {
-                                if (macho_sym.flags.is_extern_ptr) {
-                                    const reg = ops[0].reg;
-                                    _ = lower.reloc(1, .{ .linker_reloc = sym_index }, 0);
-                                    lower.result_insts[lower.result_insts_len] = try .new(.none, .mov, &.{
-                                        .{ .reg = reg.to64() },
-                                        .{ .mem = Memory.initRip(.qword, 0) },
-                                    }, lower.target);
-                                    lower.result_insts_len += 1;
-                                    break :op .{ .mem = Memory.initSib(mem_op.sib.ptr_size, .{ .base = .{
-                                        .reg = reg.to64(),
-                                    } }) };
-                                }
-                                _ = lower.reloc(@intCast(op_index), .{ .linker_reloc = sym_index }, 0);
-                                break :op .{ .mem = Memory.initRip(mem_op.sib.ptr_size, 0) };
-                            },
-                            else => unreachable,
-                        };
-                    } else {
-                        return lower.fail("TODO: bin format '{s}'", .{@tagName(lower.bin_file.tag)});
-                    }
-                },
-                .pcrel => |sym_index| {
-                    assert(prefix == .none);
-                    assert(mem_op.sib.disp == 0);
-                    assert(mem_op.sib.scale_index.scale == 0);
-
-                    _ = lower.reloc(@intCast(op_index), .{ .linker_pcrel = sym_index }, 0);
-                    break :op switch (lower.bin_file.tag) {
-                        .elf => op,
-                        .macho => switch (mnemonic) {
-                            .lea => .{ .mem = Memory.initRip(.none, 0) },
-                            .mov => .{ .mem = Memory.initRip(mem_op.sib.ptr_size, 0) },
-                            else => unreachable,
-                        },
-                        else => |tag| return lower.fail("TODO: bin format '{s}'", .{@tagName(tag)}),
-                    };
-                },
-            },
-        };
-    }
-    lower.result_insts[lower.result_insts_len] = try .new(emit_prefix, emit_mnemonic, emit_ops, lower.target);
+fn encode(lower: *Lower, prefix: Prefix, mnemonic: Mnemonic, ops: []const Operand) Error!void {
+    lower.result_insts[lower.result_insts_len] = try .new(prefix, mnemonic, ops, lower.target);
     lower.result_insts_len += 1;
 }
 
@@ -618,10 +448,10 @@ fn generic(lower: *Lower, inst: Mir.Inst) Error!void {
         .rrmi => inst.data.rrix.fixes,
         .mi_u, .mi_s => inst.data.x.fixes,
         .m => inst.data.x.fixes,
-        .extern_fn_reloc, .got_reloc, .direct_reloc, .import_reloc, .tlv_reloc, .rel => ._,
+        .nav, .uav, .lazy_sym, .extern_func => ._,
         else => return lower.fail("TODO lower .{s}", .{@tagName(inst.ops)}),
     };
-    try lower.emit(switch (fixes) {
+    try lower.encode(switch (fixes) {
         inline else => |tag| comptime if (std.mem.indexOfScalar(u8, @tagName(tag), ' ')) |space|
             @field(Prefix, @tagName(tag)[0..space])
         else
@@ -752,22 +582,17 @@ fn generic(lower: *Lower, inst: Mir.Inst) Error!void {
             .{ .mem = lower.mem(2, inst.data.rrix.payload) },
             .{ .imm = lower.imm(inst.ops, inst.data.rrix.i) },
         },
-        .extern_fn_reloc, .rel => &.{
-            .{ .imm = lower.reloc(0, .{ .linker_extern_fn = inst.data.reloc.sym_index }, inst.data.reloc.off) },
+        .nav => &.{
+            .{ .imm = lower.reloc(0, .{ .nav = inst.data.nav.index }, inst.data.nav.off) },
         },
-        .got_reloc, .direct_reloc, .import_reloc => ops: {
-            const reg = inst.data.rx.r1;
-            const extra = lower.mir.extraData(bits.SymbolOffset, inst.data.rx.payload).data;
-            _ = lower.reloc(1, switch (inst.ops) {
-                .got_reloc => .{ .linker_got = extra.sym_index },
-                .direct_reloc => .{ .linker_direct = extra.sym_index },
-                .import_reloc => .{ .linker_import = extra.sym_index },
-                else => unreachable,
-            }, extra.off);
-            break :ops &.{
-                .{ .reg = reg },
-                .{ .mem = Memory.initRip(Memory.PtrSize.fromBitSize(reg.bitSize()), 0) },
-            };
+        .uav => &.{
+            .{ .imm = lower.reloc(0, .{ .uav = inst.data.uav }, 0) },
+        },
+        .lazy_sym => &.{
+            .{ .imm = lower.reloc(0, .{ .lazy_sym = inst.data.lazy_sym }, 0) },
+        },
+        .extern_func => &.{
+            .{ .imm = lower.reloc(0, .{ .extern_func = inst.data.extern_func }, 0) },
         },
         else => return lower.fail("TODO lower {s} {s}", .{ @tagName(inst.tag), @tagName(inst.ops) }),
     });
@@ -787,7 +612,7 @@ fn pushPopRegList(lower: *Lower, comptime mnemonic: Mnemonic, inst: Mir.Inst) Er
             else => unreachable,
         } });
         while (it.next()) |i| {
-            try lower.emit(.none, mnemonic, &.{.{
+            try lower.encode(.none, mnemonic, &.{.{
                 .reg = callee_preserved_regs[i],
             }});
             switch (mnemonic) {
@@ -801,7 +626,7 @@ fn pushPopRegList(lower: *Lower, comptime mnemonic: Mnemonic, inst: Mir.Inst) Er
         .push => {
             var it = inst.data.reg_list.iterator(.{});
             while (it.next()) |i| {
-                try lower.emit(.directive, .@".cfi_rel_offset", &.{
+                try lower.encode(.directive, .@".cfi_rel_offset", &.{
                     .{ .reg = callee_preserved_regs[i] },
                     .{ .imm = .s(off) },
                 });
@@ -819,12 +644,14 @@ const page_size: i32 = 1 << 12;
 const abi = @import("abi.zig");
 const assert = std.debug.assert;
 const bits = @import("bits.zig");
+const codegen = @import("../../codegen.zig");
 const encoder = @import("encoder.zig");
 const link = @import("../../link.zig");
 const std = @import("std");
 
 const Immediate = Instruction.Immediate;
 const Instruction = encoder.Instruction;
+const InternPool = @import("../../InternPool.zig");
 const Lower = @This();
 const Memory = Instruction.Memory;
 const Mir = @import("Mir.zig");
@@ -833,3 +660,4 @@ const Zcu = @import("../../Zcu.zig");
 const Operand = Instruction.Operand;
 const Prefix = Instruction.Prefix;
 const Register = bits.Register;
+const Type = @import("../../Type.zig");
src/arch/x86_64/Mir.zig
@@ -9,8 +9,8 @@
 instructions: std.MultiArrayList(Inst).Slice,
 /// The meaning of this data is determined by `Inst.Tag` value.
 extra: []const u32,
-local_name_bytes: []const u8,
-local_types: []const InternPool.Index,
+string_bytes: []const u8,
+locals: []const Local,
 table: []const Inst.Index,
 frame_locs: std.MultiArrayList(FrameLoc).Slice,
 
@@ -1363,9 +1363,6 @@ pub const Inst = struct {
         /// Immediate (byte), register operands.
         /// Uses `ri` payload.
         ir,
-        /// Relative displacement operand.
-        /// Uses `reloc` payload.
-        rel,
         /// Register, memory operands.
         /// Uses `rx` payload with extra data of type `Memory`.
         rm,
@@ -1411,21 +1408,18 @@ pub const Inst = struct {
         /// References another Mir instruction directly.
         /// Uses `inst` payload.
         inst,
-        /// Linker relocation - external function.
-        /// Uses `reloc` payload.
-        extern_fn_reloc,
-        /// Linker relocation - GOT indirection.
-        /// Uses `rx` payload with extra data of type `bits.SymbolOffset`.
-        got_reloc,
-        /// Linker relocation - direct reference.
-        /// Uses `rx` payload with extra data of type `bits.SymbolOffset`.
-        direct_reloc,
-        /// Linker relocation - imports table indirection (binding).
-        /// Uses `rx` payload with extra data of type `bits.SymbolOffset`.
-        import_reloc,
-        /// Linker relocation - threadlocal variable via GOT indirection.
-        /// Uses `rx` payload with extra data of type `bits.SymbolOffset`.
-        tlv_reloc,
+        /// References a nav.
+        /// Uses `nav` payload.
+        nav,
+        /// References an uav.
+        /// Uses `uav` payload.
+        uav,
+        /// References a lazy symbol.
+        /// Uses `lazy_sym` payload.
+        lazy_sym,
+        /// References an external symbol.
+        /// Uses `extern_func` payload.
+        extern_func,
 
         // Pseudo instructions:
 
@@ -1560,9 +1554,6 @@ pub const Inst = struct {
         /// Uses `i64` payload.
         pseudo_dbg_arg_i_64,
         /// Local argument.
-        /// Uses `reloc` payload.
-        pseudo_dbg_arg_reloc,
-        /// Local argument.
         /// Uses `ro` payload.
         pseudo_dbg_arg_ro,
         /// Local argument.
@@ -1589,9 +1580,6 @@ pub const Inst = struct {
         /// Uses `i64` payload.
         pseudo_dbg_var_i_64,
         /// Local variable.
-        /// Uses `reloc` payload.
-        pseudo_dbg_var_reloc,
-        /// Local variable.
         /// Uses `ro` payload.
         pseudo_dbg_var_ro,
         /// Local variable.
@@ -1719,12 +1707,12 @@ pub const Inst = struct {
                 return std.mem.sliceAsBytes(mir.extra[bytes.payload..])[0..bytes.len];
             }
         },
-        /// Relocation for the linker where:
-        /// * `sym_index` is the index of the target
-        /// * `off` is the offset from the target
-        reloc: bits.SymbolOffset,
         fa: bits.FrameAddr,
         ro: bits.RegisterOffset,
+        nav: bits.NavOffset,
+        uav: InternPool.Key.Ptr.BaseAddr.Uav,
+        lazy_sym: link.File.LazySymbol,
+        extern_func: Mir.NullTerminatedString,
         /// Debug line and column position
         line_column: struct {
             line: u32,
@@ -1787,7 +1775,7 @@ pub const Inst = struct {
 pub const RegisterList = struct {
     bitset: BitSet,
 
-    const BitSet = IntegerBitSet(32);
+    const BitSet = std.bit_set.IntegerBitSet(32);
     const Self = @This();
 
     pub const empty: RegisterList = .{ .bitset = .initEmpty() };
@@ -1826,6 +1814,22 @@ pub const RegisterList = struct {
     }
 };
 
+pub const NullTerminatedString = enum(u32) {
+    none = std.math.maxInt(u32),
+    _,
+
+    pub fn toSlice(nts: NullTerminatedString, mir: *const Mir) ?[:0]const u8 {
+        if (nts == .none) return null;
+        const string_bytes = mir.string_bytes[@intFromEnum(nts)..];
+        return string_bytes[0..std.mem.indexOfScalar(u8, string_bytes, 0).? :0];
+    }
+};
+
+pub const Local = struct {
+    name: NullTerminatedString,
+    type: InternPool.Index,
+};
+
 pub const Imm32 = struct {
     imm: u32,
 };
@@ -1861,11 +1865,10 @@ pub const Memory = struct {
         size: bits.Memory.Size,
         index: Register,
         scale: bits.Memory.Scale,
-        _: u14 = undefined,
+        _: u13 = undefined,
     };
 
     pub fn encode(mem: bits.Memory) Memory {
-        assert(mem.base != .reloc or mem.mod != .off);
         return .{
             .info = .{
                 .base = mem.base,
@@ -1887,17 +1890,27 @@ pub const Memory = struct {
                 .none, .table => undefined,
                 .reg => |reg| @intFromEnum(reg),
                 .frame => |frame_index| @intFromEnum(frame_index),
-                .reloc, .pcrel => |sym_index| sym_index,
                 .rip_inst => |inst_index| inst_index,
+                .nav => |nav| @intFromEnum(nav),
+                .uav => |uav| @intFromEnum(uav.val),
+                .lazy_sym => |lazy_sym| @intFromEnum(lazy_sym.ty),
+                .extern_func => |extern_func| @intFromEnum(extern_func),
             },
             .off = switch (mem.mod) {
                 .rm => |rm| @bitCast(rm.disp),
                 .off => |off| @truncate(off),
             },
-            .extra = if (mem.mod == .off)
-                @intCast(mem.mod.off >> 32)
-            else
-                undefined,
+            .extra = switch (mem.mod) {
+                .rm => switch (mem.base) {
+                    else => undefined,
+                    .uav => |uav| @intFromEnum(uav.orig_ty),
+                    .lazy_sym => |lazy_sym| @intFromEnum(lazy_sym.kind),
+                },
+                .off => switch (mem.base) {
+                    .reg => @intCast(mem.mod.off >> 32),
+                    else => unreachable,
+                },
+            },
         };
     }
 
@@ -1915,9 +1928,11 @@ pub const Memory = struct {
                         .reg => .{ .reg = @enumFromInt(mem.base) },
                         .frame => .{ .frame = @enumFromInt(mem.base) },
                         .table => .table,
-                        .reloc => .{ .reloc = mem.base },
-                        .pcrel => .{ .pcrel = mem.base },
                         .rip_inst => .{ .rip_inst = mem.base },
+                        .nav => .{ .nav = @enumFromInt(mem.base) },
+                        .uav => .{ .uav = .{ .val = @enumFromInt(mem.base), .orig_ty = @enumFromInt(mem.extra) } },
+                        .lazy_sym => .{ .lazy_sym = .{ .kind = @enumFromInt(mem.extra), .ty = @enumFromInt(mem.base) } },
+                        .extern_func => .{ .extern_func = @enumFromInt(mem.base) },
                     },
                     .scale_index = switch (mem.info.index) {
                         .none => null,
@@ -1945,8 +1960,8 @@ pub const Memory = struct {
 pub fn deinit(mir: *Mir, gpa: std.mem.Allocator) void {
     mir.instructions.deinit(gpa);
     gpa.free(mir.extra);
-    gpa.free(mir.local_name_bytes);
-    gpa.free(mir.local_types);
+    gpa.free(mir.string_bytes);
+    gpa.free(mir.locals);
     gpa.free(mir.table);
     mir.frame_locs.deinit(gpa);
     mir.* = undefined;
@@ -1970,16 +1985,15 @@ pub fn emit(
     const mod = zcu.navFileScope(nav).mod.?;
     var e: Emit = .{
         .lower = .{
-            .bin_file = lf,
             .target = &mod.resolved_target.result,
             .allocator = gpa,
             .mir = mir,
             .cc = fn_info.cc,
             .src_loc = src_loc,
-            .output_mode = comp.config.output_mode,
-            .link_mode = comp.config.link_mode,
-            .pic = mod.pic,
         },
+        .bin_file = lf,
+        .pt = pt,
+        .pic = mod.pic,
         .atom_index = sym: {
             if (lf.cast(.elf)) |ef| break :sym try ef.zigObjectPtr().?.getOrCreateMetadataForNav(zcu, nav);
             if (lf.cast(.macho)) |mf| break :sym try mf.getZigObject().?.getOrCreateMetadataForNav(mf, nav);
@@ -1992,6 +2006,7 @@ pub fn emit(
         },
         .debug_output = debug_output,
         .code = code,
+
         .prev_di_loc = .{
             .line = func.lbrace_line,
             .column = func.lbrace_column,
@@ -2002,7 +2017,12 @@ pub fn emit(
             },
         },
         .prev_di_pc = 0,
+
+        .code_offset_mapping = .empty,
+        .relocs = .empty,
+        .table_relocs = .empty,
     };
+    defer e.deinit();
     e.emitMir() catch |err| switch (err) {
         error.LowerFail, error.EmitFail => return zcu.codegenFailMsg(nav, e.lower.err_msg.?),
         error.InvalidInstruction, error.CannotEncode => return zcu.codegenFail(nav, "emit MIR failed: {s} (Zig compiler bug)", .{@errorName(err)}),
@@ -2010,6 +2030,62 @@ pub fn emit(
     };
 }
 
+pub fn emitLazy(
+    mir: Mir,
+    lf: *link.File,
+    pt: Zcu.PerThread,
+    src_loc: Zcu.LazySrcLoc,
+    lazy_sym: link.File.LazySymbol,
+    code: *std.ArrayListUnmanaged(u8),
+    debug_output: link.File.DebugInfoOutput,
+) codegen.CodeGenError!void {
+    const zcu = pt.zcu;
+    const comp = zcu.comp;
+    const gpa = comp.gpa;
+    const mod = comp.root_mod;
+    var e: Emit = .{
+        .lower = .{
+            .target = &mod.resolved_target.result,
+            .allocator = gpa,
+            .mir = mir,
+            .cc = .auto,
+            .src_loc = src_loc,
+        },
+        .bin_file = lf,
+        .pt = pt,
+        .pic = mod.pic,
+        .atom_index = sym: {
+            if (lf.cast(.elf)) |ef| break :sym ef.zigObjectPtr().?.getOrCreateMetadataForLazySymbol(ef, pt, lazy_sym) catch |err|
+                return zcu.codegenFailType(lazy_sym.ty, "{s} creating lazy symbol", .{@errorName(err)});
+            if (lf.cast(.macho)) |mf| break :sym mf.getZigObject().?.getOrCreateMetadataForLazySymbol(mf, pt, lazy_sym) catch |err|
+                return zcu.codegenFailType(lazy_sym.ty, "{s} creating lazy symbol", .{@errorName(err)});
+            if (lf.cast(.coff)) |cf| {
+                const atom = cf.getOrCreateAtomForLazySymbol(pt, lazy_sym) catch |err|
+                    return zcu.codegenFailType(lazy_sym.ty, "{s} creating lazy symbol", .{@errorName(err)});
+                break :sym cf.getAtom(atom).getSymbolIndex().?;
+            }
+            if (lf.cast(.plan9)) |p9f| break :sym p9f.getOrCreateAtomForLazySymbol(pt, lazy_sym) catch |err|
+                return zcu.codegenFailType(lazy_sym.ty, "{s} creating lazy symbol", .{@errorName(err)});
+            unreachable;
+        },
+        .debug_output = debug_output,
+        .code = code,
+
+        .prev_di_loc = undefined,
+        .prev_di_pc = undefined,
+
+        .code_offset_mapping = .empty,
+        .relocs = .empty,
+        .table_relocs = .empty,
+    };
+    defer e.deinit();
+    e.emitMir() catch |err| switch (err) {
+        error.LowerFail, error.EmitFail => return zcu.codegenFailTypeMsg(lazy_sym.ty, e.lower.err_msg.?),
+        error.InvalidInstruction, error.CannotEncode => return zcu.codegenFailType(lazy_sym.ty, "emit MIR failed: {s} (Zig compiler bug)", .{@errorName(err)}),
+        else => return zcu.codegenFailType(lazy_sym.ty, "emit MIR failed: {s}", .{@errorName(err)}),
+    };
+}
+
 pub fn extraData(mir: Mir, comptime T: type, index: u32) struct { data: T, end: u32 } {
     const fields = std.meta.fields(T);
     var i: u32 = index;
@@ -2039,9 +2115,10 @@ pub fn resolveFrameAddr(mir: Mir, frame_addr: bits.FrameAddr) bits.RegisterOffse
     return .{ .reg = frame_loc.base, .off = frame_loc.disp + frame_addr.off };
 }
 
-pub fn resolveFrameLoc(mir: Mir, mem: Memory) Memory {
+pub fn resolveMemoryExtra(mir: Mir, payload: u32) Memory {
+    const mem = mir.extraData(Mir.Memory, payload).data;
     return switch (mem.info.base) {
-        .none, .reg, .table, .reloc, .pcrel, .rip_inst => mem,
+        .none, .reg, .table, .rip_inst, .nav, .uav, .lazy_sym, .extern_func => mem,
         .frame => if (mir.frame_locs.len > 0) .{
             .info = .{
                 .base = .reg,
@@ -2063,7 +2140,6 @@ const builtin = @import("builtin");
 const encoder = @import("encoder.zig");
 const std = @import("std");
 
-const IntegerBitSet = std.bit_set.IntegerBitSet;
 const InternPool = @import("../../InternPool.zig");
 const Mir = @This();
 const Register = bits.Register;
src/link/Elf/Symbol.zig
@@ -462,9 +462,6 @@ pub const Flags = packed struct {
 
     /// Whether the symbol is a TLS variable.
     is_tls: bool = false,
-
-    /// Whether the symbol is an extern pointer (as opposed to function).
-    is_extern_ptr: bool = false,
 };
 
 pub const Extra = struct {
src/link/Elf/ZigObject.zig
@@ -1542,11 +1542,7 @@ pub fn updateNav(
                 nav.name.toSlice(ip),
                 @"extern".lib_name.toSlice(ip),
             );
-            if (!ip.isFunctionType(@"extern".ty)) {
-                const sym = self.symbol(sym_index);
-                sym.flags.is_extern_ptr = true;
-                if (@"extern".is_threadlocal) sym.flags.is_tls = true;
-            }
+            if (@"extern".is_threadlocal) self.symbol(sym_index).flags.is_tls = true;
             if (self.dwarf) |*dwarf| dwarf: {
                 var debug_wip_nav = try dwarf.initWipNav(pt, nav_index, sym_index) orelse break :dwarf;
                 defer debug_wip_nav.deinit();
src/link/MachO/Symbol.zig
@@ -389,9 +389,6 @@ pub const Flags = packed struct {
     /// ZigObject specific flags
     /// Whether the symbol has a trampoline
     trampoline: bool = false,
-
-    /// Whether the symbol is an extern pointer (as opposed to function).
-    is_extern_ptr: bool = false,
 };
 
 pub const SectionFlags = packed struct(u8) {
src/link/MachO/ZigObject.zig
@@ -881,11 +881,7 @@ pub fn updateNav(
             const name = @"extern".name.toSlice(ip);
             const lib_name = @"extern".lib_name.toSlice(ip);
             const sym_index = try self.getGlobalSymbol(macho_file, name, lib_name);
-            if (!ip.isFunctionType(@"extern".ty)) {
-                const sym = &self.symbols.items[sym_index];
-                sym.flags.is_extern_ptr = true;
-                if (@"extern".is_threadlocal) sym.flags.tlv = true;
-            }
+            if (@"extern".is_threadlocal) self.symbols.items[sym_index].flags.tlv = true;
             if (self.dwarf) |*dwarf| dwarf: {
                 var debug_wip_nav = try dwarf.initWipNav(pt, nav_index, sym_index) orelse break :dwarf;
                 defer debug_wip_nav.deinit();
src/link/Dwarf.zig
@@ -1478,16 +1478,16 @@ pub const WipNav = struct {
     pub fn genLocalVarDebugInfo(
         wip_nav: *WipNav,
         tag: LocalVarTag,
-        name: []const u8,
+        opt_name: ?[]const u8,
         ty: Type,
         loc: Loc,
     ) UpdateError!void {
         assert(wip_nav.func != .none);
         try wip_nav.abbrevCode(switch (tag) {
-            .arg => .arg,
-            .local_var => .local_var,
+            .arg => if (opt_name) |_| .arg else .unnamed_arg,
+            .local_var => if (opt_name) |_| .local_var else unreachable,
         });
-        try wip_nav.strp(name);
+        if (opt_name) |name| try wip_nav.strp(name);
         try wip_nav.refType(ty);
         try wip_nav.infoExprLoc(loc);
         wip_nav.any_children = true;
@@ -1498,7 +1498,7 @@ pub const WipNav = struct {
         wip_nav: *WipNav,
         src_loc: Zcu.LazySrcLoc,
         tag: LocalConstTag,
-        name: []const u8,
+        opt_name: ?[]const u8,
         val: Value,
     ) UpdateError!void {
         assert(wip_nav.func != .none);
@@ -1508,19 +1508,19 @@ pub const WipNav = struct {
         const has_runtime_bits = ty.hasRuntimeBits(zcu);
         const has_comptime_state = ty.comptimeOnly(zcu) and try ty.onePossibleValue(pt) == null;
         try wip_nav.abbrevCode(if (has_runtime_bits and has_comptime_state) switch (tag) {
-            .comptime_arg => .comptime_arg_runtime_bits_comptime_state,
-            .local_const => .local_const_runtime_bits_comptime_state,
+            .comptime_arg => if (opt_name) |_| .comptime_arg_runtime_bits_comptime_state else .unnamed_comptime_arg_runtime_bits_comptime_state,
+            .local_const => if (opt_name) |_| .local_const_runtime_bits_comptime_state else unreachable,
         } else if (has_comptime_state) switch (tag) {
-            .comptime_arg => .comptime_arg_comptime_state,
-            .local_const => .local_const_comptime_state,
+            .comptime_arg => if (opt_name) |_| .comptime_arg_comptime_state else .unnamed_comptime_arg_comptime_state,
+            .local_const => if (opt_name) |_| .local_const_comptime_state else unreachable,
         } else if (has_runtime_bits) switch (tag) {
-            .comptime_arg => .comptime_arg_runtime_bits,
-            .local_const => .local_const_runtime_bits,
+            .comptime_arg => if (opt_name) |_| .comptime_arg_runtime_bits else .unnamed_comptime_arg_runtime_bits,
+            .local_const => if (opt_name) |_| .local_const_runtime_bits else unreachable,
         } else switch (tag) {
-            .comptime_arg => .comptime_arg,
-            .local_const => .local_const,
+            .comptime_arg => if (opt_name) |_| .comptime_arg else .unnamed_comptime_arg,
+            .local_const => if (opt_name) |_| .local_const else unreachable,
         });
-        try wip_nav.strp(name);
+        if (opt_name) |name| try wip_nav.strp(name);
         try wip_nav.refType(ty);
         if (has_runtime_bits) try wip_nav.blockValue(src_loc, val);
         if (has_comptime_state) try wip_nav.refValue(val);
@@ -4945,10 +4945,15 @@ const AbbrevCode = enum {
     empty_inlined_func,
     inlined_func,
     arg,
+    unnamed_arg,
     comptime_arg,
+    unnamed_comptime_arg,
     comptime_arg_runtime_bits,
+    unnamed_comptime_arg_runtime_bits,
     comptime_arg_comptime_state,
+    unnamed_comptime_arg_comptime_state,
     comptime_arg_runtime_bits_comptime_state,
+    unnamed_comptime_arg_runtime_bits_comptime_state,
     local_var,
     local_const,
     local_const_runtime_bits,
@@ -5734,6 +5739,13 @@ const AbbrevCode = enum {
                 .{ .location, .exprloc },
             },
         },
+        .unnamed_arg = .{
+            .tag = .formal_parameter,
+            .attrs = &.{
+                .{ .type, .ref_addr },
+                .{ .location, .exprloc },
+            },
+        },
         .comptime_arg = .{
             .tag = .formal_parameter,
             .attrs = &.{
@@ -5742,6 +5754,13 @@ const AbbrevCode = enum {
                 .{ .type, .ref_addr },
             },
         },
+        .unnamed_comptime_arg = .{
+            .tag = .formal_parameter,
+            .attrs = &.{
+                .{ .const_expr, .flag_present },
+                .{ .type, .ref_addr },
+            },
+        },
         .comptime_arg_runtime_bits = .{
             .tag = .formal_parameter,
             .attrs = &.{
@@ -5751,6 +5770,14 @@ const AbbrevCode = enum {
                 .{ .const_value, .block },
             },
         },
+        .unnamed_comptime_arg_runtime_bits = .{
+            .tag = .formal_parameter,
+            .attrs = &.{
+                .{ .const_expr, .flag_present },
+                .{ .type, .ref_addr },
+                .{ .const_value, .block },
+            },
+        },
         .comptime_arg_comptime_state = .{
             .tag = .formal_parameter,
             .attrs = &.{
@@ -5760,6 +5787,14 @@ const AbbrevCode = enum {
                 .{ .ZIG_comptime_value, .ref_addr },
             },
         },
+        .unnamed_comptime_arg_comptime_state = .{
+            .tag = .formal_parameter,
+            .attrs = &.{
+                .{ .const_expr, .flag_present },
+                .{ .type, .ref_addr },
+                .{ .ZIG_comptime_value, .ref_addr },
+            },
+        },
         .comptime_arg_runtime_bits_comptime_state = .{
             .tag = .formal_parameter,
             .attrs = &.{
@@ -5770,6 +5805,15 @@ const AbbrevCode = enum {
                 .{ .ZIG_comptime_value, .ref_addr },
             },
         },
+        .unnamed_comptime_arg_runtime_bits_comptime_state = .{
+            .tag = .formal_parameter,
+            .attrs = &.{
+                .{ .const_expr, .flag_present },
+                .{ .type, .ref_addr },
+                .{ .const_value, .block },
+                .{ .ZIG_comptime_value, .ref_addr },
+            },
+        },
         .local_var = .{
             .tag = .variable,
             .attrs = &.{
src/codegen.zig
@@ -951,18 +951,17 @@ pub const GenResult = union(enum) {
     };
 };
 
-fn genNavRef(
+pub fn genNavRef(
     lf: *link.File,
     pt: Zcu.PerThread,
     src_loc: Zcu.LazySrcLoc,
-    val: Value,
+    ty: Type,
     nav_index: InternPool.Nav.Index,
     target: std.Target,
 ) CodeGenError!GenResult {
     const zcu = pt.zcu;
     const ip = &zcu.intern_pool;
-    const ty = val.typeOf(zcu);
-    log.debug("genNavRef: val = {}", .{val.fmtValue(pt)});
+    log.debug("genNavRef: ty = {}", .{ty.fmt(pt)});
 
     if (!ty.isFnOrHasRuntimeBitsIgnoreComptime(zcu)) {
         const imm: u64 = switch (@divExact(target.ptrBitWidth(), 8)) {
@@ -991,12 +990,10 @@ fn genNavRef(
     }
 
     const nav = ip.getNav(nav_index);
-    assert(!nav.isThreadlocal(ip));
-
-    const lib_name, const linkage, const visibility = if (nav.getExtern(ip)) |e|
-        .{ e.lib_name, e.linkage, e.visibility }
+    const lib_name, const linkage, const is_threadlocal = if (nav.getExtern(ip)) |e|
+        .{ e.lib_name, e.linkage, e.is_threadlocal and !zcu.navFileScope(nav_index).mod.?.single_threaded }
     else
-        .{ .none, .internal, .default };
+        .{ .none, .internal, false };
 
     const name = nav.name;
     if (lf.cast(.elf)) |elf_file| {
@@ -1004,6 +1001,7 @@ fn genNavRef(
         switch (linkage) {
             .internal => {
                 const sym_index = try zo.getOrCreateMetadataForNav(zcu, nav_index);
+                if (is_threadlocal) zo.symbol(sym_index).flags.is_tls = true;
                 return .{ .mcv = .{ .lea_symbol = sym_index } };
             },
             .strong, .weak => {
@@ -1014,10 +1012,7 @@ fn genNavRef(
                     .weak => zo.symbol(sym_index).flags.weak = true,
                     .link_once => unreachable,
                 }
-                switch (visibility) {
-                    .default => zo.symbol(sym_index).flags.is_extern_ptr = true,
-                    .hidden, .protected => {},
-                }
+                if (is_threadlocal) zo.symbol(sym_index).flags.is_tls = true;
                 return .{ .mcv = .{ .lea_symbol = sym_index } };
             },
             .link_once => unreachable,
@@ -1027,8 +1022,8 @@ fn genNavRef(
         switch (linkage) {
             .internal => {
                 const sym_index = try zo.getOrCreateMetadataForNav(macho_file, nav_index);
-                const sym = zo.symbols.items[sym_index];
-                return .{ .mcv = .{ .lea_symbol = sym.nlist_idx } };
+                if (is_threadlocal) zo.symbols.items[sym_index].flags.tlv = true;
+                return .{ .mcv = .{ .lea_symbol = sym_index } };
             },
             .strong, .weak => {
                 const sym_index = try macho_file.getGlobalSymbol(name.toSlice(ip), lib_name.toSlice(ip));
@@ -1038,10 +1033,7 @@ fn genNavRef(
                     .weak => zo.symbols.items[sym_index].flags.weak = true,
                     .link_once => unreachable,
                 }
-                switch (visibility) {
-                    .default => zo.symbols.items[sym_index].flags.is_extern_ptr = true,
-                    .hidden, .protected => {},
-                }
+                if (is_threadlocal) zo.symbols.items[sym_index].flags.tlv = true;
                 return .{ .mcv = .{ .lea_symbol = sym_index } };
             },
             .link_once => unreachable,
@@ -1071,6 +1063,7 @@ fn genNavRef(
     }
 }
 
+/// deprecated legacy code path
 pub fn genTypedValue(
     lf: *link.File,
     pt: Zcu.PerThread,
@@ -1078,45 +1071,97 @@ pub fn genTypedValue(
     val: Value,
     target: std.Target,
 ) CodeGenError!GenResult {
+    const ip = &pt.zcu.intern_pool;
+    return switch (try lowerValue(pt, val, &target)) {
+        .none => .{ .mcv = .none },
+        .undef => .{ .mcv = .undef },
+        .immediate => |imm| .{ .mcv = .{ .immediate = imm } },
+        .lea_nav => |nav| genNavRef(lf, pt, src_loc, .fromInterned(ip.getNav(nav).typeOf(ip)), nav, target),
+        .lea_uav => |uav| switch (try lf.lowerUav(
+            pt,
+            uav.val,
+            Type.fromInterned(uav.orig_ty).ptrAlignment(pt.zcu),
+            src_loc,
+        )) {
+            .mcv => |mcv| .{ .mcv = switch (mcv) {
+                else => unreachable,
+                .load_direct => |sym_index| .{ .lea_direct = sym_index },
+                .load_symbol => |sym_index| .{ .lea_symbol = sym_index },
+            } },
+            .fail => |em| .{ .fail = em },
+        },
+        .load_uav => |uav| lf.lowerUav(
+            pt,
+            uav.val,
+            Type.fromInterned(uav.orig_ty).ptrAlignment(pt.zcu),
+            src_loc,
+        ),
+    };
+}
+
+const LowerResult = union(enum) {
+    none,
+    undef,
+    /// The bit-width of the immediate may be smaller than `u64`. For example, on 32-bit targets
+    /// such as ARM, the immediate will never exceed 32-bits.
+    immediate: u64,
+    lea_nav: InternPool.Nav.Index,
+    lea_uav: InternPool.Key.Ptr.BaseAddr.Uav,
+    load_uav: InternPool.Key.Ptr.BaseAddr.Uav,
+};
+
+pub fn lowerValue(pt: Zcu.PerThread, val: Value, target: *const std.Target) Allocator.Error!LowerResult {
     const zcu = pt.zcu;
     const ip = &zcu.intern_pool;
     const ty = val.typeOf(zcu);
 
-    log.debug("genTypedValue: val = {}", .{val.fmtValue(pt)});
+    log.debug("lowerValue(@as({}, {}))", .{ ty.fmt(pt), val.fmtValue(pt) });
 
-    if (val.isUndef(zcu)) return .{ .mcv = .undef };
+    if (val.isUndef(zcu)) return .undef;
 
     switch (ty.zigTypeTag(zcu)) {
-        .void => return .{ .mcv = .none },
+        .void => return .none,
         .pointer => switch (ty.ptrSize(zcu)) {
             .slice => {},
             else => switch (val.toIntern()) {
                 .null_value => {
-                    return .{ .mcv = .{ .immediate = 0 } };
+                    return .{ .immediate = 0 };
                 },
                 else => switch (ip.indexToKey(val.toIntern())) {
                     .int => {
-                        return .{ .mcv = .{ .immediate = val.toUnsignedInt(zcu) } };
+                        return .{ .immediate = val.toUnsignedInt(zcu) };
                     },
                     .ptr => |ptr| if (ptr.byte_offset == 0) switch (ptr.base_addr) {
-                        .nav => |nav| return genNavRef(lf, pt, src_loc, val, nav, target),
-                        .uav => |uav| if (Value.fromInterned(uav.val).typeOf(zcu).hasRuntimeBits(zcu))
-                            return switch (try lf.lowerUav(
-                                pt,
-                                uav.val,
-                                Type.fromInterned(uav.orig_ty).ptrAlignment(zcu),
-                                src_loc,
-                            )) {
-                                .mcv => |mcv| return .{ .mcv = switch (mcv) {
-                                    .load_direct => |sym_index| .{ .lea_direct = sym_index },
-                                    .load_symbol => |sym_index| .{ .lea_symbol = sym_index },
+                        .nav => |nav| {
+                            if (!ty.isFnOrHasRuntimeBitsIgnoreComptime(zcu)) {
+                                const imm: u64 = switch (@divExact(target.ptrBitWidth(), 8)) {
+                                    1 => 0xaa,
+                                    2 => 0xaaaa,
+                                    4 => 0xaaaaaaaa,
+                                    8 => 0xaaaaaaaaaaaaaaaa,
                                     else => unreachable,
-                                } },
-                                .fail => |em| return .{ .fail = em },
+                                };
+                                return .{ .immediate = imm };
                             }
+
+                            if (ty.castPtrToFn(zcu)) |fn_ty| {
+                                if (zcu.typeToFunc(fn_ty).?.is_generic) {
+                                    return .{ .immediate = fn_ty.abiAlignment(zcu).toByteUnits().? };
+                                }
+                            } else if (ty.zigTypeTag(zcu) == .pointer) {
+                                const elem_ty = ty.elemType2(zcu);
+                                if (!elem_ty.hasRuntimeBits(zcu)) {
+                                    return .{ .immediate = elem_ty.abiAlignment(zcu).toByteUnits().? };
+                                }
+                            }
+
+                            return .{ .lea_nav = nav };
+                        },
+                        .uav => |uav| if (Value.fromInterned(uav.val).typeOf(zcu).hasRuntimeBits(zcu))
+                            return .{ .lea_uav = uav }
                         else
-                            return .{ .mcv = .{ .immediate = Type.fromInterned(uav.orig_ty).ptrAlignment(zcu)
-                                .forward(@intCast((@as(u66, 1) << @intCast(target.ptrBitWidth() | 1)) / 3)) } },
+                            return .{ .immediate = Type.fromInterned(uav.orig_ty).ptrAlignment(zcu)
+                                .forward(@intCast((@as(u66, 1) << @intCast(target.ptrBitWidth() | 1)) / 3)) },
                         else => {},
                     },
                     else => {},
@@ -1130,39 +1175,35 @@ pub fn genTypedValue(
                     .signed => @bitCast(val.toSignedInt(zcu)),
                     .unsigned => val.toUnsignedInt(zcu),
                 };
-                return .{ .mcv = .{ .immediate = unsigned } };
+                return .{ .immediate = unsigned };
             }
         },
         .bool => {
-            return .{ .mcv = .{ .immediate = @intFromBool(val.toBool()) } };
+            return .{ .immediate = @intFromBool(val.toBool()) };
         },
         .optional => {
             if (ty.isPtrLikeOptional(zcu)) {
-                return genTypedValue(
-                    lf,
+                return lowerValue(
                     pt,
-                    src_loc,
-                    val.optionalValue(zcu) orelse return .{ .mcv = .{ .immediate = 0 } },
+                    val.optionalValue(zcu) orelse return .{ .immediate = 0 },
                     target,
                 );
             } else if (ty.abiSize(zcu) == 1) {
-                return .{ .mcv = .{ .immediate = @intFromBool(!val.isNull(zcu)) } };
+                return .{ .immediate = @intFromBool(!val.isNull(zcu)) };
             }
         },
         .@"enum" => {
             const enum_tag = ip.indexToKey(val.toIntern()).enum_tag;
-            return genTypedValue(
-                lf,
+            return lowerValue(
                 pt,
-                src_loc,
                 Value.fromInterned(enum_tag.int),
                 target,
             );
         },
         .error_set => {
             const err_name = ip.indexToKey(val.toIntern()).err.name;
-            const error_index = try pt.getErrorValue(err_name);
-            return .{ .mcv = .{ .immediate = error_index } };
+            const error_index = ip.getErrorValueIfExists(err_name).?;
+            return .{ .immediate = error_index };
         },
         .error_union => {
             const err_type = ty.errorUnionSet(zcu);
@@ -1171,20 +1212,16 @@ pub fn genTypedValue(
                 // We use the error type directly as the type.
                 const err_int_ty = try pt.errorIntType();
                 switch (ip.indexToKey(val.toIntern()).error_union.val) {
-                    .err_name => |err_name| return genTypedValue(
-                        lf,
+                    .err_name => |err_name| return lowerValue(
                         pt,
-                        src_loc,
                         Value.fromInterned(try pt.intern(.{ .err = .{
                             .ty = err_type.toIntern(),
                             .name = err_name,
                         } })),
                         target,
                     ),
-                    .payload => return genTypedValue(
-                        lf,
+                    .payload => return lowerValue(
                         pt,
-                        src_loc,
                         try pt.intValue(err_int_ty, 0),
                         target,
                     ),
@@ -1204,7 +1241,10 @@ pub fn genTypedValue(
         else => {},
     }
 
-    return lf.lowerUav(pt, val.toIntern(), .none, src_loc);
+    return .{ .load_uav = .{
+        .val = val.toIntern(),
+        .orig_ty = (try pt.singleConstPtrType(ty)).toIntern(),
+    } };
 }
 
 pub fn errUnionPayloadOffset(payload_ty: Type, zcu: *Zcu) u64 {
src/target.zig
@@ -850,7 +850,7 @@ pub inline fn backendSupportsFeature(backend: std.builtin.CompilerBackend, compt
         },
         .separate_thread => switch (backend) {
             .stage2_llvm => false,
-            .stage2_c, .stage2_wasm => true,
+            .stage2_c, .stage2_wasm, .stage2_x86_64 => true,
             // TODO: most self-hosted backends should be able to support this without too much work.
             else => false,
         },