authorgravatar for jacobly@ziglang.orgJacob Young <jacobly@ziglang.org> 2025-06-20 00:20:56-04:00
committergravatar for noreply@github.comGitHub <noreply@github.com> 2025-06-20 00:20:56-04:00
logcf1a7bbd44b9542552c7b5dc6532aafb5142bf7a
tree23d82265b3a4500514063f0fa13533b255f88f64
parentf5a327cd366348a739a282f380acd627815183b5
parent1f98c98fffb09bf15a9fc04ecd5f1fa38a4bd4b8
signaturebadge-check Signed by PGP key B5690EEEBB952194

Merge pull request #24193 from jacobly0/x86_64-spring-cleaning

x86_64: increase passing test coverage on windows

145 files changed, 13032 insertions(+), 8489 deletions(-)

build.zig+5-5
......@@ -203,6 +203,10 @@ pub fn build(b: *std.Build) !void {
203203 exe.pie = pie;
204204 exe.entitlements = entitlements;
205205
206 const use_llvm = b.option(bool, "use-llvm", "Use the llvm backend");
207 exe.use_llvm = use_llvm;
208 exe.use_lld = use_llvm;
209
206210 if (no_bin) {
207211 b.getInstallStep().dependOn(&exe.step);
208212 } else {
......@@ -214,10 +218,6 @@ pub fn build(b: *std.Build) !void {
214218
215219 test_step.dependOn(&exe.step);
216220
217 const use_llvm = b.option(bool, "use-llvm", "Use the llvm backend");
218 exe.use_llvm = use_llvm;
219 exe.use_lld = use_llvm;
220
221221 const exe_options = b.addOptions();
222222 exe.root_module.addOptions("build_options", exe_options);
223223
......@@ -759,7 +759,7 @@ fn addCmakeCfgOptionsToExe(
759759 use_zig_libcxx: bool,
760760) !void {
761761 const mod = exe.root_module;
762 const target = mod.resolved_target.?.result;
762 const target = &mod.resolved_target.?.result;
763763
764764 if (target.os.tag.isDarwin()) {
765765 // useful for package maintainers
lib/compiler/resinator/main.zig+2-2
......@@ -525,7 +525,7 @@ fn getIncludePaths(arena: std.mem.Allocator, auto_includes_option: cli.Options.A
525525 };
526526 const target = std.zig.resolveTargetQueryOrFatal(target_query);
527527 const is_native_abi = target_query.isNativeAbi();
528 const detected_libc = std.zig.LibCDirs.detect(arena, zig_lib_dir, target, is_native_abi, true, null) catch {
528 const detected_libc = std.zig.LibCDirs.detect(arena, zig_lib_dir, &target, is_native_abi, true, null) catch {
529529 if (includes == .any) {
530530 // fall back to mingw
531531 includes = .gnu;
......@@ -550,7 +550,7 @@ fn getIncludePaths(arena: std.mem.Allocator, auto_includes_option: cli.Options.A
550550 };
551551 const target = std.zig.resolveTargetQueryOrFatal(target_query);
552552 const is_native_abi = target_query.isNativeAbi();
553 const detected_libc = std.zig.LibCDirs.detect(arena, zig_lib_dir, target, is_native_abi, true, null) catch |err| switch (err) {
553 const detected_libc = std.zig.LibCDirs.detect(arena, zig_lib_dir, &target, is_native_abi, true, null) catch |err| switch (err) {
554554 error.OutOfMemory => |e| return e,
555555 else => return error.MingwIncludesNotFound,
556556 };
lib/compiler_rt/common.zig+3-3
......@@ -16,10 +16,10 @@ else
1616/// Determines the symbol's visibility to other objects.
1717/// For WebAssembly this allows the symbol to be resolved to other modules, but will not
1818/// export it to the host runtime.
19pub const visibility: std.builtin.SymbolVisibility = if (linkage != .internal)
20 .hidden
19pub const visibility: std.builtin.SymbolVisibility = if (linkage == .internal or builtin.link_mode == .dynamic)
20 .default
2121else
22 .default;
22 .hidden;
2323
2424pub const PreferredLoadStoreElement = element: {
2525 if (std.simd.suggestVectorLength(u8)) |vec_size| {
lib/compiler_rt/divmodei4.zig+2-2
......@@ -35,7 +35,7 @@ fn divmod(q: ?[]u32, r: ?[]u32, u: []u32, v: []u32) !void {
3535
3636pub fn __divei4(q_p: [*]u8, u_p: [*]u8, v_p: [*]u8, bits: usize) callconv(.c) void {
3737 @setRuntimeSafety(builtin.is_test);
38 const byte_size = std.zig.target.intByteSize(builtin.target, @intCast(bits));
38 const byte_size = std.zig.target.intByteSize(&builtin.target, @intCast(bits));
3939 const q: []u32 = @ptrCast(@alignCast(q_p[0..byte_size]));
4040 const u: []u32 = @ptrCast(@alignCast(u_p[0..byte_size]));
4141 const v: []u32 = @ptrCast(@alignCast(v_p[0..byte_size]));
......@@ -44,7 +44,7 @@ pub fn __divei4(q_p: [*]u8, u_p: [*]u8, v_p: [*]u8, bits: usize) callconv(.c) vo
4444
4545pub fn __modei4(r_p: [*]u8, u_p: [*]u8, v_p: [*]u8, bits: usize) callconv(.c) void {
4646 @setRuntimeSafety(builtin.is_test);
47 const byte_size = std.zig.target.intByteSize(builtin.target, @intCast(bits));
47 const byte_size = std.zig.target.intByteSize(&builtin.target, @intCast(bits));
4848 const r: []u32 = @ptrCast(@alignCast(r_p[0..byte_size]));
4949 const u: []u32 = @ptrCast(@alignCast(u_p[0..byte_size]));
5050 const v: []u32 = @ptrCast(@alignCast(v_p[0..byte_size]));
lib/compiler_rt/fixdfei.zig+1-1
......@@ -10,6 +10,6 @@ comptime {
1010}
1111
1212pub fn __fixdfei(r: [*]u8, bits: usize, a: f64) callconv(.c) void {
13 const byte_size = std.zig.target.intByteSize(builtin.target, @intCast(bits));
13 const byte_size = std.zig.target.intByteSize(&builtin.target, @intCast(bits));
1414 return bigIntFromFloat(.signed, @ptrCast(@alignCast(r[0..byte_size])), a);
1515}
lib/compiler_rt/fixhfei.zig+1-1
......@@ -10,6 +10,6 @@ comptime {
1010}
1111
1212pub fn __fixhfei(r: [*]u8, bits: usize, a: f16) callconv(.c) void {
13 const byte_size = std.zig.target.intByteSize(builtin.target, @intCast(bits));
13 const byte_size = std.zig.target.intByteSize(&builtin.target, @intCast(bits));
1414 return bigIntFromFloat(.signed, @ptrCast(@alignCast(r[0..byte_size])), a);
1515}
lib/compiler_rt/fixsfei.zig+1-1
......@@ -10,6 +10,6 @@ comptime {
1010}
1111
1212pub fn __fixsfei(r: [*]u8, bits: usize, a: f32) callconv(.c) void {
13 const byte_size = std.zig.target.intByteSize(builtin.target, @intCast(bits));
13 const byte_size = std.zig.target.intByteSize(&builtin.target, @intCast(bits));
1414 return bigIntFromFloat(.signed, @ptrCast(@alignCast(r[0..byte_size])), a);
1515}
lib/compiler_rt/fixtfei.zig+1-1
......@@ -10,6 +10,6 @@ comptime {
1010}
1111
1212pub fn __fixtfei(r: [*]u8, bits: usize, a: f128) callconv(.c) void {
13 const byte_size = std.zig.target.intByteSize(builtin.target, @intCast(bits));
13 const byte_size = std.zig.target.intByteSize(&builtin.target, @intCast(bits));
1414 return bigIntFromFloat(.signed, @ptrCast(@alignCast(r[0..byte_size])), a);
1515}
lib/compiler_rt/fixunsdfei.zig+1-1
......@@ -10,6 +10,6 @@ comptime {
1010}
1111
1212pub fn __fixunsdfei(r: [*]u8, bits: usize, a: f64) callconv(.c) void {
13 const byte_size = std.zig.target.intByteSize(builtin.target, @intCast(bits));
13 const byte_size = std.zig.target.intByteSize(&builtin.target, @intCast(bits));
1414 return bigIntFromFloat(.unsigned, @ptrCast(@alignCast(r[0..byte_size])), a);
1515}
lib/compiler_rt/fixunshfei.zig+1-1
......@@ -10,6 +10,6 @@ comptime {
1010}
1111
1212pub fn __fixunshfei(r: [*]u8, bits: usize, a: f16) callconv(.c) void {
13 const byte_size = std.zig.target.intByteSize(builtin.target, @intCast(bits));
13 const byte_size = std.zig.target.intByteSize(&builtin.target, @intCast(bits));
1414 return bigIntFromFloat(.unsigned, @ptrCast(@alignCast(r[0..byte_size])), a);
1515}
lib/compiler_rt/fixunssfei.zig+1-1
......@@ -10,6 +10,6 @@ comptime {
1010}
1111
1212pub fn __fixunssfei(r: [*]u8, bits: usize, a: f32) callconv(.c) void {
13 const byte_size = std.zig.target.intByteSize(builtin.target, @intCast(bits));
13 const byte_size = std.zig.target.intByteSize(&builtin.target, @intCast(bits));
1414 return bigIntFromFloat(.unsigned, @ptrCast(@alignCast(r[0..byte_size])), a);
1515}
lib/compiler_rt/fixunstfei.zig+1-1
......@@ -10,6 +10,6 @@ comptime {
1010}
1111
1212pub fn __fixunstfei(r: [*]u8, bits: usize, a: f128) callconv(.c) void {
13 const byte_size = std.zig.target.intByteSize(builtin.target, @intCast(bits));
13 const byte_size = std.zig.target.intByteSize(&builtin.target, @intCast(bits));
1414 return bigIntFromFloat(.unsigned, @ptrCast(@alignCast(r[0..byte_size])), a);
1515}
lib/compiler_rt/fixunsxfei.zig+1-1
......@@ -10,6 +10,6 @@ comptime {
1010}
1111
1212pub fn __fixunsxfei(r: [*]u8, bits: usize, a: f80) callconv(.c) void {
13 const byte_size = std.zig.target.intByteSize(builtin.target, @intCast(bits));
13 const byte_size = std.zig.target.intByteSize(&builtin.target, @intCast(bits));
1414 return bigIntFromFloat(.unsigned, @ptrCast(@alignCast(r[0..byte_size])), a);
1515}
lib/compiler_rt/fixxfei.zig+1-1
......@@ -10,6 +10,6 @@ comptime {
1010}
1111
1212pub fn __fixxfei(r: [*]u8, bits: usize, a: f80) callconv(.c) void {
13 const byte_size = std.zig.target.intByteSize(builtin.target, @intCast(bits));
13 const byte_size = std.zig.target.intByteSize(&builtin.target, @intCast(bits));
1414 return bigIntFromFloat(.signed, @ptrCast(@alignCast(r[0..byte_size])), a);
1515}
lib/compiler_rt/floateidf.zig+1-1
......@@ -10,6 +10,6 @@ comptime {
1010}
1111
1212pub fn __floateidf(a: [*]const u8, bits: usize) callconv(.c) f64 {
13 const byte_size = std.zig.target.intByteSize(builtin.target, @intCast(bits));
13 const byte_size = std.zig.target.intByteSize(&builtin.target, @intCast(bits));
1414 return floatFromBigInt(f64, .signed, @ptrCast(@alignCast(a[0..byte_size])));
1515}
lib/compiler_rt/floateihf.zig+1-1
......@@ -10,6 +10,6 @@ comptime {
1010}
1111
1212pub fn __floateihf(a: [*]const u8, bits: usize) callconv(.c) f16 {
13 const byte_size = std.zig.target.intByteSize(builtin.target, @intCast(bits));
13 const byte_size = std.zig.target.intByteSize(&builtin.target, @intCast(bits));
1414 return floatFromBigInt(f16, .signed, @ptrCast(@alignCast(a[0..byte_size])));
1515}
lib/compiler_rt/floateisf.zig+1-1
......@@ -10,6 +10,6 @@ comptime {
1010}
1111
1212pub fn __floateisf(a: [*]const u8, bits: usize) callconv(.c) f32 {
13 const byte_size = std.zig.target.intByteSize(builtin.target, @intCast(bits));
13 const byte_size = std.zig.target.intByteSize(&builtin.target, @intCast(bits));
1414 return floatFromBigInt(f32, .signed, @ptrCast(@alignCast(a[0..byte_size])));
1515}
lib/compiler_rt/floateitf.zig+1-1
......@@ -10,6 +10,6 @@ comptime {
1010}
1111
1212pub fn __floateitf(a: [*]const u8, bits: usize) callconv(.c) f128 {
13 const byte_size = std.zig.target.intByteSize(builtin.target, @intCast(bits));
13 const byte_size = std.zig.target.intByteSize(&builtin.target, @intCast(bits));
1414 return floatFromBigInt(f128, .signed, @ptrCast(@alignCast(a[0..byte_size])));
1515}
lib/compiler_rt/floateixf.zig+1-1
......@@ -10,6 +10,6 @@ comptime {
1010}
1111
1212pub fn __floateixf(a: [*]const u8, bits: usize) callconv(.c) f80 {
13 const byte_size = std.zig.target.intByteSize(builtin.target, @intCast(bits));
13 const byte_size = std.zig.target.intByteSize(&builtin.target, @intCast(bits));
1414 return floatFromBigInt(f80, .signed, @ptrCast(@alignCast(a[0..byte_size])));
1515}
lib/compiler_rt/floatuneidf.zig+1-1
......@@ -10,6 +10,6 @@ comptime {
1010}
1111
1212pub fn __floatuneidf(a: [*]const u8, bits: usize) callconv(.c) f64 {
13 const byte_size = std.zig.target.intByteSize(builtin.target, @intCast(bits));
13 const byte_size = std.zig.target.intByteSize(&builtin.target, @intCast(bits));
1414 return floatFromBigInt(f64, .unsigned, @ptrCast(@alignCast(a[0..byte_size])));
1515}
lib/compiler_rt/floatuneihf.zig+1-1
......@@ -10,6 +10,6 @@ comptime {
1010}
1111
1212pub fn __floatuneihf(a: [*]const u8, bits: usize) callconv(.c) f16 {
13 const byte_size = std.zig.target.intByteSize(builtin.target, @intCast(bits));
13 const byte_size = std.zig.target.intByteSize(&builtin.target, @intCast(bits));
1414 return floatFromBigInt(f16, .unsigned, @ptrCast(@alignCast(a[0..byte_size])));
1515}
lib/compiler_rt/floatuneisf.zig+1-1
......@@ -10,6 +10,6 @@ comptime {
1010}
1111
1212pub fn __floatuneisf(a: [*]const u8, bits: usize) callconv(.c) f32 {
13 const byte_size = std.zig.target.intByteSize(builtin.target, @intCast(bits));
13 const byte_size = std.zig.target.intByteSize(&builtin.target, @intCast(bits));
1414 return floatFromBigInt(f32, .unsigned, @ptrCast(@alignCast(a[0..byte_size])));
1515}
lib/compiler_rt/floatuneitf.zig+1-1
......@@ -10,6 +10,6 @@ comptime {
1010}
1111
1212pub fn __floatuneitf(a: [*]const u8, bits: usize) callconv(.c) f128 {
13 const byte_size = std.zig.target.intByteSize(builtin.target, @intCast(bits));
13 const byte_size = std.zig.target.intByteSize(&builtin.target, @intCast(bits));
1414 return floatFromBigInt(f128, .unsigned, @ptrCast(@alignCast(a[0..byte_size])));
1515}
lib/compiler_rt/floatuneixf.zig+1-1
......@@ -10,6 +10,6 @@ comptime {
1010}
1111
1212pub fn __floatuneixf(a: [*]const u8, bits: usize) callconv(.c) f80 {
13 const byte_size = std.zig.target.intByteSize(builtin.target, @intCast(bits));
13 const byte_size = std.zig.target.intByteSize(&builtin.target, @intCast(bits));
1414 return floatFromBigInt(f80, .unsigned, @ptrCast(@alignCast(a[0..byte_size])));
1515}
lib/compiler_rt/stack_probe.zig+28-28
......@@ -127,23 +127,23 @@ fn win_probe_stack_only() void {
127127 },
128128 .x86_64 => {
129129 asm volatile (
130 \\ push %%rcx
131 \\ push %%rax
132 \\ cmp $0x1000,%%rax
133 \\ lea 24(%%rsp),%%rcx
130 \\ pushq %%rcx
131 \\ pushq %%rax
132 \\ cmpq $0x1000,%%rax
133 \\ leaq 24(%%rsp),%%rcx
134134 \\ jb 1f
135135 \\ 2:
136 \\ sub $0x1000,%%rcx
137 \\ test %%rcx,(%%rcx)
138 \\ sub $0x1000,%%rax
139 \\ cmp $0x1000,%%rax
136 \\ subq $0x1000,%%rcx
137 \\ testq %%rcx,(%%rcx)
138 \\ subq $0x1000,%%rax
139 \\ cmpq $0x1000,%%rax
140140 \\ ja 2b
141141 \\ 1:
142 \\ sub %%rax,%%rcx
143 \\ test %%rcx,(%%rcx)
144 \\ pop %%rax
145 \\ pop %%rcx
146 \\ ret
142 \\ subq %%rax,%%rcx
143 \\ testq %%rcx,(%%rcx)
144 \\ popq %%rax
145 \\ popq %%rcx
146 \\ retq
147147 );
148148 },
149149 .x86 => {
......@@ -179,26 +179,26 @@ fn win_probe_stack_adjust_sp() void {
179179 switch (arch) {
180180 .x86_64 => {
181181 asm volatile (
182 \\ push %%rcx
183 \\ cmp $0x1000,%%rax
184 \\ lea 16(%%rsp),%%rcx
182 \\ pushq %%rcx
183 \\ cmpq $0x1000,%%rax
184 \\ leaq 16(%%rsp),%%rcx
185185 \\ jb 1f
186186 \\ 2:
187 \\ sub $0x1000,%%rcx
188 \\ test %%rcx,(%%rcx)
189 \\ sub $0x1000,%%rax
190 \\ cmp $0x1000,%%rax
187 \\ subq $0x1000,%%rcx
188 \\ testq %%rcx,(%%rcx)
189 \\ subq $0x1000,%%rax
190 \\ cmpq $0x1000,%%rax
191191 \\ ja 2b
192192 \\ 1:
193 \\ sub %%rax,%%rcx
194 \\ test %%rcx,(%%rcx)
193 \\ subq %%rax,%%rcx
194 \\ testq %%rcx,(%%rcx)
195195 \\
196 \\ lea 8(%%rsp),%%rax
197 \\ mov %%rcx,%%rsp
198 \\ mov -8(%%rax),%%rcx
199 \\ push (%%rax)
200 \\ sub %%rsp,%%rax
201 \\ ret
196 \\ leaq 8(%%rsp),%%rax
197 \\ movq %%rcx,%%rsp
198 \\ movq -8(%%rax),%%rcx
199 \\ pushq (%%rax)
200 \\ subq %%rsp,%%rax
201 \\ retq
202202 );
203203 },
204204 .x86 => {
lib/compiler_rt/udivmodei4.zig+2-2
......@@ -114,7 +114,7 @@ pub fn divmod(q: ?[]u32, r: ?[]u32, u: []const u32, v: []const u32) !void {
114114
115115pub fn __udivei4(q_p: [*]u8, u_p: [*]const u8, v_p: [*]const u8, bits: usize) callconv(.c) void {
116116 @setRuntimeSafety(builtin.is_test);
117 const byte_size = std.zig.target.intByteSize(builtin.target, @intCast(bits));
117 const byte_size = std.zig.target.intByteSize(&builtin.target, @intCast(bits));
118118 const q: []u32 = @ptrCast(@alignCast(q_p[0..byte_size]));
119119 const u: []const u32 = @ptrCast(@alignCast(u_p[0..byte_size]));
120120 const v: []const u32 = @ptrCast(@alignCast(v_p[0..byte_size]));
......@@ -123,7 +123,7 @@ pub fn __udivei4(q_p: [*]u8, u_p: [*]const u8, v_p: [*]const u8, bits: usize) ca
123123
124124pub fn __umodei4(r_p: [*]u8, u_p: [*]const u8, v_p: [*]const u8, bits: usize) callconv(.c) void {
125125 @setRuntimeSafety(builtin.is_test);
126 const byte_size = std.zig.target.intByteSize(builtin.target, @intCast(bits));
126 const byte_size = std.zig.target.intByteSize(&builtin.target, @intCast(bits));
127127 const r: []u32 = @ptrCast(@alignCast(r_p[0..byte_size]));
128128 const u: []const u32 = @ptrCast(@alignCast(u_p[0..byte_size]));
129129 const v: []const u32 = @ptrCast(@alignCast(v_p[0..byte_size]));
lib/std/Build.zig+31-1
......@@ -1164,7 +1164,14 @@ pub fn addRunArtifact(b: *Build, exe: *Step.Compile) *Step.Run {
11641164 // It doesn't have to be native. We catch that if you actually try to run it.
11651165 // Consider that this is declarative; the run step may not be run unless a user
11661166 // option is supplied.
1167 const run_step = Step.Run.create(b, b.fmt("run {s}", .{exe.name}));
1167
1168 // Avoid the common case of the step name looking like "run test test".
1169 const step_name = if (exe.kind.isTest() and mem.eql(u8, exe.name, "test"))
1170 b.fmt("run {s}", .{@tagName(exe.kind)})
1171 else
1172 b.fmt("run {s} {s}", .{ @tagName(exe.kind), exe.name });
1173
1174 const run_step = Step.Run.create(b, step_name);
11681175 run_step.producer = exe;
11691176 if (exe.kind == .@"test") {
11701177 if (exe.exec_cmd_args) |exec_cmd_args| {
......@@ -2449,12 +2456,23 @@ pub const GeneratedFile = struct {
24492456 /// This value must be set in the `fn make()` of the `step` and must not be `null` afterwards.
24502457 path: ?[]const u8 = null,
24512458
2459 /// Deprecated, see `getPath2`.
24522460 pub fn getPath(gen: GeneratedFile) []const u8 {
24532461 return gen.step.owner.pathFromCwd(gen.path orelse std.debug.panic(
24542462 "getPath() was called on a GeneratedFile that wasn't built yet. Is there a missing Step dependency on step '{s}'?",
24552463 .{gen.step.name},
24562464 ));
24572465 }
2466
2467 pub fn getPath2(gen: GeneratedFile, src_builder: *Build, asking_step: ?*Step) []const u8 {
2468 return gen.path orelse {
2469 std.debug.lockStdErr();
2470 const stderr = std.io.getStdErr();
2471 dumpBadGetPathHelp(gen.step, stderr, src_builder, asking_step) catch {};
2472 std.debug.unlockStdErr();
2473 @panic("misconfigured build script");
2474 };
2475 }
24582476};
24592477
24602478// dirnameAllowEmpty is a variant of fs.path.dirname
......@@ -2705,6 +2723,18 @@ pub const LazyPath = union(enum) {
27052723 }
27062724 }
27072725
2726 pub fn basename(lazy_path: LazyPath, src_builder: *Build, asking_step: ?*Step) []const u8 {
2727 return fs.path.basename(switch (lazy_path) {
2728 .src_path => |sp| sp.sub_path,
2729 .cwd_relative => |sub_path| sub_path,
2730 .generated => |gen| if (gen.sub_path.len > 0)
2731 gen.sub_path
2732 else
2733 gen.file.getPath2(src_builder, asking_step),
2734 .dependency => |dep| dep.sub_path,
2735 });
2736 }
2737
27082738 /// Copies the internal strings.
27092739 ///
27102740 /// The `b` parameter is only used for its allocator. All *Build instances
lib/std/Build/Fuzz/WebServer.zig+2-2
......@@ -198,10 +198,10 @@ fn serveWasm(
198198 const wasm_base_path = try buildWasmBinary(ws, arena, optimize_mode);
199199 const bin_name = try std.zig.binNameAlloc(arena, .{
200200 .root_name = fuzzer_bin_name,
201 .target = std.zig.system.resolveTargetQuery(std.Build.parseTargetQuery(.{
201 .target = &(std.zig.system.resolveTargetQuery(std.Build.parseTargetQuery(.{
202202 .arch_os_abi = fuzzer_arch_os_abi,
203203 .cpu_features = fuzzer_cpu_features,
204 }) catch unreachable) catch unreachable,
204 }) catch unreachable) catch unreachable),
205205 .output_mode = .Exe,
206206 });
207207 // std.http.Server does not have a sendfile API yet.
lib/std/Build/Module.zig+4-4
......@@ -655,10 +655,10 @@ fn linkLibraryOrObject(m: *Module, other: *Step.Compile) void {
655655 m.include_dirs.append(allocator, .{ .other_step = other }) catch @panic("OOM");
656656}
657657
658fn requireKnownTarget(m: *Module) std.Target {
659 const resolved_target = m.resolved_target orelse
660 @panic("this API requires the Module to be created with a known 'target' field");
661 return resolved_target.result;
658fn requireKnownTarget(m: *Module) *const std.Target {
659 const resolved_target = &(m.resolved_target orelse
660 @panic("this API requires the Module to be created with a known 'target' field"));
661 return &resolved_target.result;
662662}
663663
664664/// Elements of `modules` and `names` are matched one-to-one.
lib/std/Build/Step.zig+67-4
......@@ -478,6 +478,29 @@ pub fn evalZigProcess(
478478 return result;
479479}
480480
481/// Wrapper around `std.fs.Dir.updateFile` that handles verbose and error output.
482pub fn installFile(s: *Step, src_lazy_path: Build.LazyPath, dest_path: []const u8) !std.fs.Dir.PrevStatus {
483 const b = s.owner;
484 const src_path = src_lazy_path.getPath3(b, s);
485 try handleVerbose(b, null, &.{ "install", "-C", b.fmt("{}", .{src_path}), dest_path });
486 return src_path.root_dir.handle.updateFile(src_path.sub_path, std.fs.cwd(), dest_path, .{}) catch |err| {
487 return s.fail("unable to update file from '{}' to '{s}': {s}", .{
488 src_path, dest_path, @errorName(err),
489 });
490 };
491}
492
493/// Wrapper around `std.fs.Dir.makePathStatus` that handles verbose and error output.
494pub fn installDir(s: *Step, dest_path: []const u8) !std.fs.Dir.MakePathStatus {
495 const b = s.owner;
496 try handleVerbose(b, null, &.{ "install", "-d", dest_path });
497 return std.fs.cwd().makePathStatus(dest_path) catch |err| {
498 return s.fail("unable to create dir '{s}': {s}", .{
499 dest_path, @errorName(err),
500 });
501 };
502}
503
481504fn zigProcessUpdate(s: *Step, zp: *ZigProcess, watch: bool) !?Path {
482505 const b = s.owner;
483506 const arena = b.allocator;
......@@ -714,8 +737,44 @@ pub fn allocPrintCmd2(
714737 opt_env: ?*const std.process.EnvMap,
715738 argv: []const []const u8,
716739) Allocator.Error![]u8 {
740 const shell = struct {
741 fn escape(writer: anytype, string: []const u8, is_argv0: bool) !void {
742 for (string) |c| {
743 if (switch (c) {
744 else => true,
745 '%', '+'...':', '@'...'Z', '_', 'a'...'z' => false,
746 '=' => is_argv0,
747 }) break;
748 } else return writer.writeAll(string);
749
750 try writer.writeByte('"');
751 for (string) |c| {
752 if (switch (c) {
753 std.ascii.control_code.nul => break,
754 '!', '"', '$', '\\', '`' => true,
755 else => !std.ascii.isPrint(c),
756 }) try writer.writeByte('\\');
757 switch (c) {
758 std.ascii.control_code.nul => unreachable,
759 std.ascii.control_code.bel => try writer.writeByte('a'),
760 std.ascii.control_code.bs => try writer.writeByte('b'),
761 std.ascii.control_code.ht => try writer.writeByte('t'),
762 std.ascii.control_code.lf => try writer.writeByte('n'),
763 std.ascii.control_code.vt => try writer.writeByte('v'),
764 std.ascii.control_code.ff => try writer.writeByte('f'),
765 std.ascii.control_code.cr => try writer.writeByte('r'),
766 std.ascii.control_code.esc => try writer.writeByte('E'),
767 ' '...'~' => try writer.writeByte(c),
768 else => try writer.print("{o:0>3}", .{c}),
769 }
770 }
771 try writer.writeByte('"');
772 }
773 };
774
717775 var buf: std.ArrayListUnmanaged(u8) = .empty;
718 if (opt_cwd) |cwd| try buf.writer(arena).print("cd {s} && ", .{cwd});
776 const writer = buf.writer(arena);
777 if (opt_cwd) |cwd| try writer.print("cd {s} && ", .{cwd});
719778 if (opt_env) |env| {
720779 const process_env_map = std.process.getEnvMap(arena) catch std.process.EnvMap.init(arena);
721780 var it = env.iterator();
......@@ -725,11 +784,15 @@ pub fn allocPrintCmd2(
725784 if (process_env_map.get(key)) |process_value| {
726785 if (std.mem.eql(u8, value, process_value)) continue;
727786 }
728 try buf.writer(arena).print("{s}={s} ", .{ key, value });
787 try writer.print("{s}=", .{key});
788 try shell.escape(writer, value, false);
789 try writer.writeByte(' ');
729790 }
730791 }
731 for (argv) |arg| {
732 try buf.writer(arena).print("{s} ", .{arg});
792 try shell.escape(writer, argv[0], true);
793 for (argv[1..]) |arg| {
794 try writer.writeByte(' ');
795 try shell.escape(writer, arg, false);
733796 }
734797 return buf.toOwnedSlice(arena);
735798}
lib/std/Build/Step/Compile.zig+17-12
......@@ -292,6 +292,13 @@ pub const Kind = enum {
292292 obj,
293293 @"test",
294294 test_obj,
295
296 pub fn isTest(kind: Kind) bool {
297 return switch (kind) {
298 .exe, .lib, .obj => false,
299 .@"test", .test_obj => true,
300 };
301 }
295302};
296303
297304pub const HeaderInstallation = union(enum) {
......@@ -368,19 +375,16 @@ pub fn create(owner: *std.Build, options: Options) *Compile {
368375 panic("invalid name: '{s}'. It looks like a file path, but it is supposed to be the library or application name.", .{name});
369376 }
370377
371 // Avoid the common case of the step name looking like "zig test test".
372 const name_adjusted = if ((options.kind == .@"test" or options.kind == .test_obj) and mem.eql(u8, name, "test"))
373 ""
374 else
375 owner.fmt("{s} ", .{name});
376
377378 const resolved_target = options.root_module.resolved_target orelse
378379 @panic("the root Module of a Compile step must be created with a known 'target' field");
379 const target = resolved_target.result;
380
381 const step_name = owner.fmt("compile {s} {s}{s} {s}", .{
382 @tagName(options.kind),
383 name_adjusted,
380 const target = &resolved_target.result;
381
382 const step_name = owner.fmt("compile {s} {s} {s}", .{
383 // Avoid the common case of the step name looking like "compile test test".
384 if (options.kind.isTest() and mem.eql(u8, name, "test"))
385 @tagName(options.kind)
386 else
387 owner.fmt("{s} {s}", .{ @tagName(options.kind), name }),
384388 @tagName(options.root_module.optimize orelse .Debug),
385389 resolved_target.query.zigTriple(owner.allocator) catch @panic("OOM"),
386390 });
......@@ -664,6 +668,7 @@ pub fn producesPdbFile(compile: *Compile) bool {
664668 else => return false,
665669 }
666670 if (target.ofmt == .c) return false;
671 if (compile.use_llvm == false) return false;
667672 if (compile.root_module.strip == true or
668673 (compile.root_module.strip == null and compile.root_module.optimize == .ReleaseSmall))
669674 {
......@@ -1861,7 +1866,7 @@ fn outputPath(c: *Compile, out_dir: std.Build.Cache.Path, ea: std.zig.EmitArtifa
18611866 const arena = c.step.owner.graph.arena;
18621867 const name = ea.cacheName(arena, .{
18631868 .root_name = c.name,
1864 .target = c.root_module.resolved_target.?.result,
1869 .target = &c.root_module.resolved_target.?.result,
18651870 .output_mode = switch (c.kind) {
18661871 .lib => .Lib,
18671872 .obj, .test_obj => .Obj,
lib/std/Build/Step/InstallArtifact.zig+14-41
......@@ -119,18 +119,12 @@ fn make(step: *Step, options: Step.MakeOptions) !void {
119119 _ = options;
120120 const install_artifact: *InstallArtifact = @fieldParentPtr("step", step);
121121 const b = step.owner;
122 const cwd = fs.cwd();
123122
124123 var all_cached = true;
125124
126125 if (install_artifact.dest_dir) |dest_dir| {
127126 const full_dest_path = b.getInstallPath(dest_dir, install_artifact.dest_sub_path);
128 const src_path = install_artifact.emitted_bin.?.getPath3(b, step);
129 const p = fs.Dir.updateFile(src_path.root_dir.handle, src_path.sub_path, cwd, full_dest_path, .{}) catch |err| {
130 return step.fail("unable to update file from '{s}' to '{s}': {s}", .{
131 src_path.sub_path, full_dest_path, @errorName(err),
132 });
133 };
127 const p = try step.installFile(install_artifact.emitted_bin.?, full_dest_path);
134128 all_cached = all_cached and p == .fresh;
135129
136130 if (install_artifact.dylib_symlinks) |dls| {
......@@ -141,48 +135,28 @@ fn make(step: *Step, options: Step.MakeOptions) !void {
141135 }
142136
143137 if (install_artifact.implib_dir) |implib_dir| {
144 const src_path = install_artifact.emitted_implib.?.getPath3(b, step);
145 const full_implib_path = b.getInstallPath(implib_dir, fs.path.basename(src_path.sub_path));
146 const p = fs.Dir.updateFile(src_path.root_dir.handle, src_path.sub_path, cwd, full_implib_path, .{}) catch |err| {
147 return step.fail("unable to update file from '{s}' to '{s}': {s}", .{
148 src_path.sub_path, full_implib_path, @errorName(err),
149 });
150 };
138 const full_implib_path = b.getInstallPath(implib_dir, install_artifact.emitted_implib.?.basename(b, step));
139 const p = try step.installFile(install_artifact.emitted_implib.?, full_implib_path);
151140 all_cached = all_cached and p == .fresh;
152141 }
153142
154143 if (install_artifact.pdb_dir) |pdb_dir| {
155 const src_path = install_artifact.emitted_pdb.?.getPath3(b, step);
156 const full_pdb_path = b.getInstallPath(pdb_dir, fs.path.basename(src_path.sub_path));
157 const p = fs.Dir.updateFile(src_path.root_dir.handle, src_path.sub_path, cwd, full_pdb_path, .{}) catch |err| {
158 return step.fail("unable to update file from '{s}' to '{s}': {s}", .{
159 src_path.sub_path, full_pdb_path, @errorName(err),
160 });
161 };
144 const full_pdb_path = b.getInstallPath(pdb_dir, install_artifact.emitted_pdb.?.basename(b, step));
145 const p = try step.installFile(install_artifact.emitted_pdb.?, full_pdb_path);
162146 all_cached = all_cached and p == .fresh;
163147 }
164148
165149 if (install_artifact.h_dir) |h_dir| {
166150 if (install_artifact.emitted_h) |emitted_h| {
167 const src_path = emitted_h.getPath3(b, step);
168 const full_h_path = b.getInstallPath(h_dir, fs.path.basename(src_path.sub_path));
169 const p = fs.Dir.updateFile(src_path.root_dir.handle, src_path.sub_path, cwd, full_h_path, .{}) catch |err| {
170 return step.fail("unable to update file from '{s}' to '{s}': {s}", .{
171 src_path.sub_path, full_h_path, @errorName(err),
172 });
173 };
151 const full_h_path = b.getInstallPath(h_dir, emitted_h.basename(b, step));
152 const p = try step.installFile(emitted_h, full_h_path);
174153 all_cached = all_cached and p == .fresh;
175154 }
176155
177156 for (install_artifact.artifact.installed_headers.items) |installation| switch (installation) {
178157 .file => |file| {
179 const src_path = file.source.getPath3(b, step);
180158 const full_h_path = b.getInstallPath(h_dir, file.dest_rel_path);
181 const p = fs.Dir.updateFile(src_path.root_dir.handle, src_path.sub_path, cwd, full_h_path, .{}) catch |err| {
182 return step.fail("unable to update file from '{s}' to '{s}': {s}", .{
183 src_path.sub_path, full_h_path, @errorName(err),
184 });
185 };
159 const p = try step.installFile(file.source, full_h_path);
186160 all_cached = all_cached and p == .fresh;
187161 },
188162 .directory => |dir| {
......@@ -209,16 +183,15 @@ fn make(step: *Step, options: Step.MakeOptions) !void {
209183 }
210184 }
211185
212 const src_entry_path = src_dir_path.join(b.allocator, entry.path) catch @panic("OOM");
213186 const full_dest_path = b.pathJoin(&.{ full_h_prefix, entry.path });
214187 switch (entry.kind) {
215 .directory => try cwd.makePath(full_dest_path),
188 .directory => {
189 try Step.handleVerbose(b, null, &.{ "install", "-d", full_dest_path });
190 const p = try step.installDir(full_dest_path);
191 all_cached = all_cached and p == .existed;
192 },
216193 .file => {
217 const p = fs.Dir.updateFile(src_entry_path.root_dir.handle, src_entry_path.sub_path, cwd, full_dest_path, .{}) catch |err| {
218 return step.fail("unable to update file from '{s}' to '{s}': {s}", .{
219 src_entry_path.sub_path, full_dest_path, @errorName(err),
220 });
221 };
194 const p = try step.installFile(try dir.source.join(b.allocator, entry.path), full_dest_path);
222195 all_cached = all_cached and p == .fresh;
223196 },
224197 else => continue,
lib/std/Build/Step/InstallDir.zig+10-28
......@@ -74,31 +74,23 @@ fn make(step: *Step, options: Step.MakeOptions) !void {
7474 var all_cached = true;
7575 next_entry: while (try it.next()) |entry| {
7676 for (install_dir.options.exclude_extensions) |ext| {
77 if (mem.endsWith(u8, entry.path, ext)) {
78 continue :next_entry;
79 }
77 if (mem.endsWith(u8, entry.path, ext)) continue :next_entry;
8078 }
8179 if (install_dir.options.include_extensions) |incs| {
82 var found = false;
8380 for (incs) |inc| {
84 if (mem.endsWith(u8, entry.path, inc)) {
85 found = true;
86 break;
87 }
81 if (mem.endsWith(u8, entry.path, inc)) break;
82 } else {
83 continue :next_entry;
8884 }
89 if (!found) continue :next_entry;
9085 }
9186
92 // relative to src build root
93 const src_sub_path = try src_dir_path.join(arena, entry.path);
87 const src_path = try install_dir.options.source_dir.join(b.allocator, entry.path);
9488 const dest_path = b.pathJoin(&.{ dest_prefix, entry.path });
95 const cwd = fs.cwd();
96
9789 switch (entry.kind) {
9890 .directory => {
99 if (need_derived_inputs) try step.addDirectoryWatchInputFromPath(src_sub_path);
100 try cwd.makePath(dest_path);
101 // TODO: set result_cached=false if the directory did not already exist.
91 if (need_derived_inputs) _ = try step.addDirectoryWatchInput(src_path);
92 const p = try step.installDir(dest_path);
93 all_cached = all_cached and p == .existed;
10294 },
10395 .file => {
10496 for (install_dir.options.blank_extensions) |ext| {
......@@ -108,18 +100,8 @@ fn make(step: *Step, options: Step.MakeOptions) !void {
108100 }
109101 }
110102
111 const prev_status = fs.Dir.updateFile(
112 src_sub_path.root_dir.handle,
113 src_sub_path.sub_path,
114 cwd,
115 dest_path,
116 .{},
117 ) catch |err| {
118 return step.fail("unable to update file from '{}' to '{s}': {s}", .{
119 src_sub_path, dest_path, @errorName(err),
120 });
121 };
122 all_cached = all_cached and prev_status == .fresh;
103 const p = try step.installFile(src_path, dest_path);
104 all_cached = all_cached and p == .fresh;
123105 },
124106 else => continue,
125107 }
lib/std/Build/Step/InstallFile.zig+2-8
......@@ -41,13 +41,7 @@ fn make(step: *Step, options: Step.MakeOptions) !void {
4141 const install_file: *InstallFile = @fieldParentPtr("step", step);
4242 try step.singleUnchangingWatchInput(install_file.source);
4343
44 const full_src_path = install_file.source.getPath2(b, step);
4544 const full_dest_path = b.getInstallPath(install_file.dir, install_file.dest_rel_path);
46 const cwd = std.fs.cwd();
47 const prev = std.fs.Dir.updateFile(cwd, full_src_path, cwd, full_dest_path, .{}) catch |err| {
48 return step.fail("unable to update file from '{s}' to '{s}': {s}", .{
49 full_src_path, full_dest_path, @errorName(err),
50 });
51 };
52 step.result_cached = prev == .fresh;
45 const p = try step.installFile(install_file.source, full_dest_path);
46 step.result_cached = p == .fresh;
5347}
lib/std/Build/Step/ObjCopy.zig+1-1
......@@ -209,7 +209,7 @@ fn make(step: *Step, options: Step.MakeOptions) !void {
209209 }
210210 if (objcopy.add_section) |section| {
211211 try argv.append("--add-section");
212 try argv.appendSlice(&.{b.fmt("{s}={s}", .{ section.section_name, section.file_path.getPath(b) })});
212 try argv.appendSlice(&.{b.fmt("{s}={s}", .{ section.section_name, section.file_path.getPath2(b, step) })});
213213 }
214214 if (objcopy.set_section_alignment) |set_align| {
215215 try argv.append("--set-section-alignment");
lib/std/Build/Step/Run.zig+21-4
......@@ -456,11 +456,28 @@ pub fn addPathDir(run: *Run, search_path: []const u8) void {
456456 const b = run.step.owner;
457457 const env_map = getEnvMapInternal(run);
458458
459 const key = "PATH";
459 const use_wine = b.enable_wine and b.graph.host.result.os.tag != .windows and use_wine: switch (run.argv.items[0]) {
460 .artifact => |p| p.artifact.rootModuleTarget().os.tag == .windows,
461 .lazy_path => |p| {
462 switch (p.lazy_path) {
463 .generated => |g| if (g.file.step.cast(Step.Compile)) |cs| break :use_wine cs.rootModuleTarget().os.tag == .windows,
464 else => {},
465 }
466 break :use_wine std.mem.endsWith(u8, p.lazy_path.basename(b, &run.step), ".exe");
467 },
468 .decorated_directory => false,
469 .bytes => |bytes| std.mem.endsWith(u8, bytes, ".exe"),
470 .output_file, .output_directory => false,
471 };
472 const key = if (use_wine) "WINEPATH" else "PATH";
460473 const prev_path = env_map.get(key);
461474
462475 if (prev_path) |pp| {
463 const new_path = b.fmt("{s}" ++ [1]u8{fs.path.delimiter} ++ "{s}", .{ pp, search_path });
476 const new_path = b.fmt("{s}{c}{s}", .{
477 pp,
478 if (use_wine) fs.path.delimiter_windows else fs.path.delimiter,
479 search_path,
480 });
464481 env_map.put(key, new_path) catch @panic("OOM");
465482 } else {
466483 env_map.put(key, b.dupePath(search_path)) catch @panic("OOM");
......@@ -866,7 +883,7 @@ fn make(step: *Step, options: Step.MakeOptions) !void {
866883 try runCommand(run, argv_list.items, has_side_effects, tmp_dir_path, prog_node, null);
867884
868885 const dep_file_dir = std.fs.cwd();
869 const dep_file_basename = dep_output_file.generated_file.getPath();
886 const dep_file_basename = dep_output_file.generated_file.getPath2(b, step);
870887 if (has_side_effects)
871888 try man.addDepFile(dep_file_dir, dep_file_basename)
872889 else
......@@ -1091,7 +1108,7 @@ fn runCommand(
10911108 const need_cross_libc = exe.is_linking_libc and
10921109 (root_target.isGnuLibC() or (root_target.isMuslLibC() and exe.linkage == .dynamic));
10931110 const other_target = exe.root_module.resolved_target.?.result;
1094 switch (std.zig.system.getExternalExecutor(b.graph.host.result, &other_target, .{
1111 switch (std.zig.system.getExternalExecutor(&b.graph.host.result, &other_target, .{
10951112 .qemu_fixes_dl = need_cross_libc and b.libc_runtimes_dir != null,
10961113 .link_libc = exe.is_linking_libc,
10971114 })) {
lib/std/Target.zig+26-26
......@@ -1074,7 +1074,7 @@ pub const ObjectFormat = enum {
10741074 }
10751075};
10761076
1077pub fn toElfMachine(target: Target) std.elf.EM {
1077pub fn toElfMachine(target: *const Target) std.elf.EM {
10781078 return switch (target.cpu.arch) {
10791079 .amdgcn => .AMDGPU,
10801080 .arc => .ARC_COMPACT,
......@@ -1115,7 +1115,7 @@ pub fn toElfMachine(target: Target) std.elf.EM {
11151115 };
11161116}
11171117
1118pub fn toCoffMachine(target: Target) std.coff.MachineType {
1118pub fn toCoffMachine(target: *const Target) std.coff.MachineType {
11191119 return switch (target.cpu.arch) {
11201120 .arm => .ARM,
11211121 .thumb => .ARMNT,
......@@ -1999,7 +1999,7 @@ pub const Cpu = struct {
19991999 }
20002000};
20012001
2002pub fn zigTriple(target: Target, allocator: Allocator) Allocator.Error![]u8 {
2002pub fn zigTriple(target: *const Target, allocator: Allocator) Allocator.Error![]u8 {
20032003 return Query.fromTarget(target).zigTriple(allocator);
20042004}
20052005
......@@ -2007,7 +2007,7 @@ pub fn hurdTupleSimple(allocator: Allocator, arch: Cpu.Arch, abi: Abi) ![]u8 {
20072007 return std.fmt.allocPrint(allocator, "{s}-{s}", .{ @tagName(arch), @tagName(abi) });
20082008}
20092009
2010pub fn hurdTuple(target: Target, allocator: Allocator) ![]u8 {
2010pub fn hurdTuple(target: *const Target, allocator: Allocator) ![]u8 {
20112011 return hurdTupleSimple(allocator, target.cpu.arch, target.abi);
20122012}
20132013
......@@ -2015,63 +2015,63 @@ pub fn linuxTripleSimple(allocator: Allocator, arch: Cpu.Arch, os_tag: Os.Tag, a
20152015 return std.fmt.allocPrint(allocator, "{s}-{s}-{s}", .{ @tagName(arch), @tagName(os_tag), @tagName(abi) });
20162016}
20172017
2018pub fn linuxTriple(target: Target, allocator: Allocator) ![]u8 {
2018pub fn linuxTriple(target: *const Target, allocator: Allocator) ![]u8 {
20192019 return linuxTripleSimple(allocator, target.cpu.arch, target.os.tag, target.abi);
20202020}
20212021
2022pub fn exeFileExt(target: Target) [:0]const u8 {
2022pub fn exeFileExt(target: *const Target) [:0]const u8 {
20232023 return target.os.tag.exeFileExt(target.cpu.arch);
20242024}
20252025
2026pub fn staticLibSuffix(target: Target) [:0]const u8 {
2026pub fn staticLibSuffix(target: *const Target) [:0]const u8 {
20272027 return target.os.tag.staticLibSuffix(target.abi);
20282028}
20292029
2030pub fn dynamicLibSuffix(target: Target) [:0]const u8 {
2030pub fn dynamicLibSuffix(target: *const Target) [:0]const u8 {
20312031 return target.os.tag.dynamicLibSuffix();
20322032}
20332033
2034pub fn libPrefix(target: Target) [:0]const u8 {
2034pub fn libPrefix(target: *const Target) [:0]const u8 {
20352035 return target.os.tag.libPrefix(target.abi);
20362036}
20372037
2038pub inline fn isMinGW(target: Target) bool {
2038pub inline fn isMinGW(target: *const Target) bool {
20392039 return target.os.tag == .windows and target.abi.isGnu();
20402040}
20412041
2042pub inline fn isGnuLibC(target: Target) bool {
2042pub inline fn isGnuLibC(target: *const Target) bool {
20432043 return switch (target.os.tag) {
20442044 .hurd, .linux => target.abi.isGnu(),
20452045 else => false,
20462046 };
20472047}
20482048
2049pub inline fn isMuslLibC(target: Target) bool {
2049pub inline fn isMuslLibC(target: *const Target) bool {
20502050 return target.os.tag == .linux and target.abi.isMusl();
20512051}
20522052
2053pub inline fn isDarwinLibC(target: Target) bool {
2053pub inline fn isDarwinLibC(target: *const Target) bool {
20542054 return switch (target.abi) {
20552055 .none, .macabi, .simulator => target.os.tag.isDarwin(),
20562056 else => false,
20572057 };
20582058}
20592059
2060pub inline fn isFreeBSDLibC(target: Target) bool {
2060pub inline fn isFreeBSDLibC(target: *const Target) bool {
20612061 return switch (target.abi) {
20622062 .none, .eabihf => target.os.tag == .freebsd,
20632063 else => false,
20642064 };
20652065}
20662066
2067pub inline fn isNetBSDLibC(target: Target) bool {
2067pub inline fn isNetBSDLibC(target: *const Target) bool {
20682068 return switch (target.abi) {
20692069 .none, .eabi, .eabihf => target.os.tag == .netbsd,
20702070 else => false,
20712071 };
20722072}
20732073
2074pub inline fn isWasiLibC(target: Target) bool {
2074pub inline fn isWasiLibC(target: *const Target) bool {
20752075 return target.os.tag == .wasi and target.abi.isMusl();
20762076}
20772077
......@@ -2576,7 +2576,7 @@ pub const DynamicLinker = struct {
25762576 }
25772577};
25782578
2579pub fn standardDynamicLinkerPath(target: Target) DynamicLinker {
2579pub fn standardDynamicLinkerPath(target: *const Target) DynamicLinker {
25802580 return DynamicLinker.standard(target.cpu, target.os, target.abi);
25812581}
25822582
......@@ -2645,11 +2645,11 @@ pub fn ptrBitWidth_arch_abi(cpu_arch: Cpu.Arch, abi: Abi) u16 {
26452645 };
26462646}
26472647
2648pub fn ptrBitWidth(target: Target) u16 {
2648pub fn ptrBitWidth(target: *const Target) u16 {
26492649 return ptrBitWidth_cpu_abi(target.cpu, target.abi);
26502650}
26512651
2652pub fn stackAlignment(target: Target) u16 {
2652pub fn stackAlignment(target: *const Target) u16 {
26532653 // Overrides for when the stack alignment is not equal to the pointer width.
26542654 switch (target.cpu.arch) {
26552655 .m68k,
......@@ -2697,7 +2697,7 @@ pub fn stackAlignment(target: Target) u16 {
26972697/// Default signedness of `char` for the native C compiler for this target
26982698/// Note that char signedness is implementation-defined and many compilers provide
26992699/// an option to override the default signedness e.g. GCC's -funsigned-char / -fsigned-char
2700pub fn cCharSignedness(target: Target) std.builtin.Signedness {
2700pub fn cCharSignedness(target: *const Target) std.builtin.Signedness {
27012701 if (target.os.tag.isDarwin() or target.os.tag == .windows or target.os.tag == .uefi) return .signed;
27022702
27032703 return switch (target.cpu.arch) {
......@@ -2740,7 +2740,7 @@ pub const CType = enum {
27402740 longdouble,
27412741};
27422742
2743pub fn cTypeByteSize(t: Target, c_type: CType) u16 {
2743pub fn cTypeByteSize(t: *const Target, c_type: CType) u16 {
27442744 return switch (c_type) {
27452745 .char,
27462746 .short,
......@@ -2766,7 +2766,7 @@ pub fn cTypeByteSize(t: Target, c_type: CType) u16 {
27662766 };
27672767}
27682768
2769pub fn cTypeBitSize(target: Target, c_type: CType) u16 {
2769pub fn cTypeBitSize(target: *const Target, c_type: CType) u16 {
27702770 switch (target.os.tag) {
27712771 .freestanding, .other => switch (target.cpu.arch) {
27722772 .msp430 => switch (c_type) {
......@@ -3077,7 +3077,7 @@ pub fn cTypeBitSize(target: Target, c_type: CType) u16 {
30773077 }
30783078}
30793079
3080pub fn cTypeAlignment(target: Target, c_type: CType) u16 {
3080pub fn cTypeAlignment(target: *const Target, c_type: CType) u16 {
30813081 // Overrides for unusual alignments
30823082 switch (target.cpu.arch) {
30833083 .avr => return 1,
......@@ -3172,7 +3172,7 @@ pub fn cTypeAlignment(target: Target, c_type: CType) u16 {
31723172 );
31733173}
31743174
3175pub fn cTypePreferredAlignment(target: Target, c_type: CType) u16 {
3175pub fn cTypePreferredAlignment(target: *const Target, c_type: CType) u16 {
31763176 // Overrides for unusual alignments
31773177 switch (target.cpu.arch) {
31783178 .arc => switch (c_type) {
......@@ -3265,7 +3265,7 @@ pub fn cTypePreferredAlignment(target: Target, c_type: CType) u16 {
32653265 );
32663266}
32673267
3268pub fn cMaxIntAlignment(target: std.Target) u16 {
3268pub fn cMaxIntAlignment(target: *const Target) u16 {
32693269 return switch (target.cpu.arch) {
32703270 .avr => 1,
32713271
......@@ -3328,7 +3328,7 @@ pub fn cMaxIntAlignment(target: std.Target) u16 {
33283328 };
33293329}
33303330
3331pub fn cCallingConvention(target: Target) ?std.builtin.CallingConvention {
3331pub fn cCallingConvention(target: *const Target) ?std.builtin.CallingConvention {
33323332 return switch (target.cpu.arch) {
33333333 .x86_64 => switch (target.os.tag) {
33343334 .windows, .uefi => .{ .x86_64_win = .{} },
lib/std/Target/Query.zig+1-1
......@@ -94,7 +94,7 @@ pub const OsVersion = union(enum) {
9494
9595pub const SemanticVersion = std.SemanticVersion;
9696
97pub fn fromTarget(target: Target) Query {
97pub fn fromTarget(target: *const Target) Query {
9898 var result: Query = .{
9999 .cpu_arch = target.cpu.arch,
100100 .cpu_model = .{ .explicit = target.cpu.model },
lib/std/debug/Dwarf/abi.zig+1-1
......@@ -9,7 +9,7 @@ const Arch = std.Target.Cpu.Arch;
99///
1010/// See also `std.debug.SelfInfo.supportsUnwinding` which tells whether the Zig
1111/// standard library has a working implementation of unwinding for this target.
12pub fn supportsUnwinding(target: std.Target) bool {
12pub fn supportsUnwinding(target: *const std.Target) bool {
1313 return switch (target.cpu.arch) {
1414 .amdgcn,
1515 .nvptx,
lib/std/debug/SelfInfo.zig+3-3
......@@ -1795,10 +1795,10 @@ fn spRegNum(reg_context: Dwarf.abi.RegisterContext) u8 {
17951795const ip_reg_num = Dwarf.abi.ipRegNum(native_arch).?;
17961796
17971797/// Tells whether unwinding for the host is implemented.
1798pub const supports_unwinding = supportsUnwinding(builtin.target);
1798pub const supports_unwinding = supportsUnwinding(&builtin.target);
17991799
18001800comptime {
1801 if (supports_unwinding) assert(Dwarf.abi.supportsUnwinding(builtin.target));
1801 if (supports_unwinding) assert(Dwarf.abi.supportsUnwinding(&builtin.target));
18021802}
18031803
18041804/// Tells whether unwinding for this target is *implemented* here in the Zig
......@@ -1806,7 +1806,7 @@ comptime {
18061806///
18071807/// See also `Dwarf.abi.supportsUnwinding` which tells whether Dwarf supports
18081808/// unwinding on that target *in theory*.
1809pub fn supportsUnwinding(target: std.Target) bool {
1809pub fn supportsUnwinding(target: *const std.Target) bool {
18101810 return switch (target.cpu.arch) {
18111811 .x86 => switch (target.os.tag) {
18121812 .linux, .netbsd, .solaris, .illumos => true,
lib/std/fs/Dir.zig+14-4
......@@ -1146,6 +1146,7 @@ pub fn makeDirW(self: Dir, sub_path: [*:0]const u16) MakeError!void {
11461146/// On Windows, `sub_path` should be encoded as [WTF-8](https://simonsapin.github.io/wtf-8/).
11471147/// On WASI, `sub_path` should be encoded as valid UTF-8.
11481148/// On other platforms, `sub_path` is an opaque sequence of bytes with no particular encoding.
1149/// Fails on an empty path with `error.BadPathName` as that is not a path that can be created.
11491150///
11501151/// Paths containing `..` components are handled differently depending on the platform:
11511152/// - On Windows, `..` are resolved before the path is passed to NtCreateFile, meaning
......@@ -1155,10 +1156,19 @@ pub fn makeDirW(self: Dir, sub_path: [*:0]const u16) MakeError!void {
11551156/// meaning a `sub_path` like "first/../second" will create both a `./first`
11561157/// and a `./second` directory.
11571158pub fn makePath(self: Dir, sub_path: []const u8) (MakeError || StatFileError)!void {
1159 _ = try self.makePathStatus(sub_path);
1160}
1161
1162pub const MakePathStatus = enum { existed, created };
1163/// Same as `makePath` except returns whether the path already existed or was successfully created.
1164pub fn makePathStatus(self: Dir, sub_path: []const u8) (MakeError || StatFileError)!MakePathStatus {
11581165 var it = try fs.path.componentIterator(sub_path);
1159 var component = it.last() orelse return;
1166 var status: MakePathStatus = .existed;
1167 var component = it.last() orelse return error.BadPathName;
11601168 while (true) {
1161 self.makeDir(component.path) catch |err| switch (err) {
1169 if (self.makeDir(component.path)) |_| {
1170 status = .created;
1171 } else |err| switch (err) {
11621172 error.PathAlreadyExists => {
11631173 // stat the file and return an error if it's not a directory
11641174 // this is important because otherwise a dangling symlink
......@@ -1177,8 +1187,8 @@ pub fn makePath(self: Dir, sub_path: []const u8) (MakeError || StatFileError)!vo
11771187 continue;
11781188 },
11791189 else => |e| return e,
1180 };
1181 component = it.next() orelse return;
1190 }
1191 component = it.next() orelse return status;
11821192 }
11831193}
11841194
lib/std/fs/path.zig+4-4
......@@ -27,8 +27,8 @@ const fs = std.fs;
2727const process = std.process;
2828const native_os = builtin.target.os.tag;
2929
30pub const sep_windows = '\\';
31pub const sep_posix = '/';
30pub const sep_windows: u8 = '\\';
31pub const sep_posix: u8 = '/';
3232pub const sep = switch (native_os) {
3333 .windows, .uefi => sep_windows,
3434 else => sep_posix,
......@@ -41,8 +41,8 @@ pub const sep_str = switch (native_os) {
4141 else => sep_str_posix,
4242};
4343
44pub const delimiter_windows = ';';
45pub const delimiter_posix = ':';
44pub const delimiter_windows: u8 = ';';
45pub const delimiter_posix: u8 = ':';
4646pub const delimiter = if (native_os == .windows) delimiter_windows else delimiter_posix;
4747
4848/// Returns if the given byte is a valid path separator
lib/std/math/float.zig+41-22
......@@ -220,42 +220,61 @@ pub inline fn floatEpsAt(comptime T: type, x: T) T {
220220 }
221221}
222222
223/// Returns the value inf for floating point type T.
224pub inline fn inf(comptime T: type) T {
225 return reconstructFloat(T, floatExponentMax(T) + 1, mantissaOne(T));
223/// Returns the inf value for a floating point `Type`.
224pub inline fn inf(comptime Type: type) Type {
225 const RuntimeType = switch (Type) {
226 else => Type,
227 comptime_float => f128, // any float type will do
228 };
229 return reconstructFloat(RuntimeType, floatExponentMax(RuntimeType) + 1, mantissaOne(RuntimeType));
226230}
227231
228/// Returns the canonical quiet NaN representation for floating point type T.
229pub inline fn nan(comptime T: type) T {
232/// Returns the canonical quiet NaN representation for a floating point `Type`.
233pub inline fn nan(comptime Type: type) Type {
234 const RuntimeType = switch (Type) {
235 else => Type,
236 comptime_float => f128, // any float type will do
237 };
230238 return reconstructFloat(
231 T,
232 floatExponentMax(T) + 1,
233 mantissaOne(T) | 1 << (floatFractionalBits(T) - 1),
239 RuntimeType,
240 floatExponentMax(RuntimeType) + 1,
241 mantissaOne(RuntimeType) | 1 << (floatFractionalBits(RuntimeType) - 1),
234242 );
235243}
236244
237/// Returns a signalling NaN representation for floating point type T.
245/// Returns a signalling NaN representation for a floating point `Type`.
238246///
239247/// TODO: LLVM is known to miscompile on some architectures to quiet NaN -
240248/// this is tracked by https://github.com/ziglang/zig/issues/14366
241pub inline fn snan(comptime T: type) T {
249pub inline fn snan(comptime Type: type) Type {
250 const RuntimeType = switch (Type) {
251 else => Type,
252 comptime_float => f128, // any float type will do
253 };
242254 return reconstructFloat(
243 T,
244 floatExponentMax(T) + 1,
245 mantissaOne(T) | 1 << (floatFractionalBits(T) - 2),
255 RuntimeType,
256 floatExponentMax(RuntimeType) + 1,
257 mantissaOne(RuntimeType) | 1 << (floatFractionalBits(RuntimeType) - 2),
246258 );
247259}
248260
249test "float bits" {
250 inline for ([_]type{ f16, f32, f64, f80, f128, c_longdouble }) |T| {
251 // (1 +) for the sign bit, since it is separate from the other bits
252 const size = 1 + floatExponentBits(T) + floatMantissaBits(T);
253 try expect(@bitSizeOf(T) == size);
261fn floatBits(comptime Type: type) !void {
262 // (1 +) for the sign bit, since it is separate from the other bits
263 const size = 1 + floatExponentBits(Type) + floatMantissaBits(Type);
264 try expect(@bitSizeOf(Type) == size);
265 try expect(floatFractionalBits(Type) <= floatMantissaBits(Type));
254266
255 // for machine epsilon, assert expmin <= -prec <= expmax
256 try expect(floatExponentMin(T) <= -floatFractionalBits(T));
257 try expect(-floatFractionalBits(T) <= floatExponentMax(T));
258 }
267 // for machine epsilon, assert expmin <= -prec <= expmax
268 try expect(floatExponentMin(Type) <= -floatFractionalBits(Type));
269 try expect(-floatFractionalBits(Type) <= floatExponentMax(Type));
270}
271test floatBits {
272 try floatBits(f16);
273 try floatBits(f32);
274 try floatBits(f64);
275 try floatBits(f80);
276 try floatBits(f128);
277 try floatBits(c_longdouble);
259278}
260279
261280test inf {
lib/std/math/signbit.zig+40-13
......@@ -4,20 +4,47 @@ const expect = std.testing.expect;
44
55/// Returns whether x is negative or negative 0.
66pub fn signbit(x: anytype) bool {
7 const T = @TypeOf(x);
8 const TBits = std.meta.Int(.unsigned, @typeInfo(T).float.bits);
9 return @as(TBits, @bitCast(x)) >> (@bitSizeOf(T) - 1) != 0;
7 return switch (@typeInfo(@TypeOf(x))) {
8 .int, .comptime_int => x,
9 .float => |float| @as(@Type(.{ .int = .{
10 .signedness = .signed,
11 .bits = float.bits,
12 } }), @bitCast(x)),
13 .comptime_float => @as(i128, @bitCast(@as(f128, x))), // any float type will do
14 else => @compileError("std.math.signbit does not support " ++ @typeName(@TypeOf(x))),
15 } < 0;
1016}
1117
1218test signbit {
13 inline for ([_]type{ f16, f32, f64, f80, f128 }) |T| {
14 try expect(!signbit(@as(T, 0.0)));
15 try expect(!signbit(@as(T, 1.0)));
16 try expect(signbit(@as(T, -2.0)));
17 try expect(signbit(@as(T, -0.0)));
18 try expect(!signbit(math.inf(T)));
19 try expect(signbit(-math.inf(T)));
20 try expect(!signbit(math.nan(T)));
21 try expect(signbit(-math.nan(T)));
22 }
19 try testInts(i0);
20 try testInts(u0);
21 try testInts(i1);
22 try testInts(u1);
23 try testInts(i2);
24 try testInts(u2);
25
26 try testFloats(f16);
27 try testFloats(f32);
28 try testFloats(f64);
29 try testFloats(f80);
30 try testFloats(f128);
31 try testFloats(c_longdouble);
32 try testFloats(comptime_float);
33}
34
35fn testInts(comptime Type: type) !void {
36 try expect((std.math.minInt(Type) < 0) == signbit(@as(Type, std.math.minInt(Type))));
37 try expect(!signbit(@as(Type, 0)));
38 try expect(!signbit(@as(Type, std.math.maxInt(Type))));
39}
40
41fn testFloats(comptime Type: type) !void {
42 try expect(!signbit(@as(Type, 0.0)));
43 try expect(!signbit(@as(Type, 1.0)));
44 try expect(signbit(@as(Type, -2.0)));
45 try expect(signbit(@as(Type, -0.0)));
46 try expect(!signbit(math.inf(Type)));
47 try expect(signbit(-math.inf(Type)));
48 try expect(!signbit(math.nan(Type)));
49 try expect(signbit(-math.nan(Type)));
2350}
lib/std/posix.zig+4-1
......@@ -7571,7 +7571,10 @@ const lfs64_abi = native_os == .linux and builtin.link_libc and (builtin.abi.isG
75717571/// If this happens the fix is to add the error code to the corresponding
75727572/// switch expression, possibly introduce a new error in the error set, and
75737573/// send a patch to Zig.
7574pub const unexpected_error_tracing = builtin.zig_backend == .stage2_llvm and builtin.mode == .Debug;
7574pub const unexpected_error_tracing = builtin.mode == .Debug and switch (builtin.zig_backend) {
7575 .stage2_llvm, .stage2_x86_64 => true,
7576 else => false,
7577};
75757578
75767579pub const UnexpectedError = error{
75777580 /// The Operating System returned an undocumented error code.
lib/std/start.zig+6
......@@ -485,6 +485,9 @@ fn _start() callconv(.naked) noreturn {
485485}
486486
487487fn WinStartup() callconv(.withStackAlign(.c, 1)) noreturn {
488 // Switch from the x87 fpu state set by windows to the state expected by the gnu abi.
489 if (builtin.abi == .gnu) asm volatile ("fninit");
490
488491 if (!builtin.single_threaded and !builtin.link_libc) {
489492 _ = @import("os/windows/tls.zig");
490493 }
......@@ -495,6 +498,9 @@ fn WinStartup() callconv(.withStackAlign(.c, 1)) noreturn {
495498}
496499
497500fn wWinMainCRTStartup() callconv(.withStackAlign(.c, 1)) noreturn {
501 // Switch from the x87 fpu state set by windows to the state expected by the gnu abi.
502 if (builtin.abi == .gnu) asm volatile ("fninit");
503
498504 if (!builtin.single_threaded and !builtin.link_libc) {
499505 _ = @import("os/windows/tls.zig");
500506 }
lib/std/zig.zig+1-1
......@@ -141,7 +141,7 @@ pub fn lineDelta(source: []const u8, start: usize, end: usize) isize {
141141
142142pub const BinNameOptions = struct {
143143 root_name: []const u8,
144 target: std.Target,
144 target: *const std.Target,
145145 output_mode: std.builtin.OutputMode,
146146 link_mode: ?std.builtin.LinkMode = null,
147147 version: ?std.SemanticVersion = null,
lib/std/zig/LibCDirs.zig+4-4
......@@ -15,7 +15,7 @@ pub const DarwinSdkLayout = enum {
1515pub fn detect(
1616 arena: Allocator,
1717 zig_lib_dir: []const u8,
18 target: std.Target,
18 target: *const std.Target,
1919 is_native_abi: bool,
2020 link_libc: bool,
2121 libc_installation: ?*const LibCInstallation,
......@@ -88,7 +88,7 @@ pub fn detect(
8888 };
8989}
9090
91fn detectFromInstallation(arena: Allocator, target: std.Target, lci: *const LibCInstallation) !LibCDirs {
91fn detectFromInstallation(arena: Allocator, target: *const std.Target, lci: *const LibCInstallation) !LibCDirs {
9292 var list = try std.ArrayList([]const u8).initCapacity(arena, 5);
9393 var framework_list = std.ArrayList([]const u8).init(arena);
9494
......@@ -146,7 +146,7 @@ fn detectFromInstallation(arena: Allocator, target: std.Target, lci: *const LibC
146146pub fn detectFromBuilding(
147147 arena: Allocator,
148148 zig_lib_dir: []const u8,
149 target: std.Target,
149 target: *const std.Target,
150150) !LibCDirs {
151151 const s = std.fs.path.sep_str;
152152
......@@ -224,7 +224,7 @@ pub fn detectFromBuilding(
224224 };
225225}
226226
227fn libCGenericName(target: std.Target) [:0]const u8 {
227fn libCGenericName(target: *const std.Target) [:0]const u8 {
228228 switch (target.os.tag) {
229229 .windows => return "mingw",
230230 .macos, .ios, .tvos, .watchos, .visionos => return "darwin",
lib/std/zig/LibCInstallation.zig+4-4
......@@ -26,7 +26,7 @@ pub const FindError = error{
2626pub fn parse(
2727 allocator: Allocator,
2828 libc_file: []const u8,
29 target: std.Target,
29 target: *const std.Target,
3030) !LibCInstallation {
3131 var self: LibCInstallation = .{};
3232
......@@ -157,7 +157,7 @@ pub fn render(self: LibCInstallation, out: anytype) !void {
157157
158158pub const FindNativeOptions = struct {
159159 allocator: Allocator,
160 target: std.Target,
160 target: *const std.Target,
161161
162162 /// If enabled, will print human-friendly errors to stderr.
163163 verbose: bool = false,
......@@ -700,7 +700,7 @@ pub const CrtBasenames = struct {
700700 crtn: ?[]const u8 = null,
701701
702702 pub const GetArgs = struct {
703 target: std.Target,
703 target: *const std.Target,
704704 link_libc: bool,
705705 output_mode: std.builtin.OutputMode,
706706 link_mode: std.builtin.LinkMode,
......@@ -965,7 +965,7 @@ pub fn resolveCrtPaths(
965965 lci: LibCInstallation,
966966 arena: Allocator,
967967 crt_basenames: CrtBasenames,
968 target: std.Target,
968 target: *const std.Target,
969969) error{ OutOfMemory, LibCInstallationMissingCrtDir }!CrtPaths {
970970 const crt_dir_path: Path = .{
971971 .root_dir = std.Build.Cache.Directory.cwd(),
lib/std/zig/llvm/Builder.zig+1-1
......@@ -66,7 +66,7 @@ pub const Options = struct {
6666 allocator: Allocator,
6767 strip: bool = true,
6868 name: []const u8 = &.{},
69 target: std.Target = builtin.target,
69 target: *const std.Target = &builtin.target,
7070 triple: []const u8 = &.{},
7171};
7272
lib/std/zig/system.zig+1-1
......@@ -28,7 +28,7 @@ pub const GetExternalExecutorOptions = struct {
2828/// Return whether or not the given host is capable of running executables of
2929/// the other target.
3030pub fn getExternalExecutor(
31 host: std.Target,
31 host: *const std.Target,
3232 candidate: *const std.Target,
3333 options: GetExternalExecutorOptions,
3434) Executor {
lib/std/zig/system/NativePaths.zig+1-1
......@@ -13,7 +13,7 @@ framework_dirs: std.ArrayListUnmanaged([]const u8) = .empty,
1313rpaths: std.ArrayListUnmanaged([]const u8) = .empty,
1414warnings: std.ArrayListUnmanaged([]const u8) = .empty,
1515
16pub fn detect(arena: Allocator, native_target: std.Target) !NativePaths {
16pub fn detect(arena: Allocator, native_target: *const std.Target) !NativePaths {
1717 var self: NativePaths = .{ .arena = arena };
1818 var is_nix = false;
1919 if (process.getEnvVarOwned(arena, "NIX_CFLAGS_COMPILE")) |nix_cflags_compile| {
lib/std/zig/system/darwin.zig+1-1
......@@ -34,7 +34,7 @@ pub fn isSdkInstalled(allocator: Allocator) bool {
3434/// Caller owns the memory.
3535/// stderr from xcrun is ignored.
3636/// If error.OutOfMemory occurs in Allocator, this function returns null.
37pub fn getSdk(allocator: Allocator, target: Target) ?[]const u8 {
37pub fn getSdk(allocator: Allocator, target: *const Target) ?[]const u8 {
3838 const is_simulator_abi = target.abi == .simulator;
3939 const sdk = switch (target.os.tag) {
4040 .ios => switch (target.abi) {
lib/std/zig/target.zig+6-6
......@@ -116,7 +116,7 @@ pub const freebsd_libc_version: std.SemanticVersion = .{ .major = 14, .minor = 0
116116/// The version of Zig's bundled NetBSD libc used when linking libc statically.
117117pub const netbsd_libc_version: std.SemanticVersion = .{ .major = 10, .minor = 1, .patch = 0 };
118118
119pub fn canBuildLibC(target: std.Target) bool {
119pub fn canBuildLibC(target: *const std.Target) bool {
120120 for (available_libcs) |libc| {
121121 if (target.cpu.arch == libc.arch and target.os.tag == libc.os and target.abi == libc.abi) {
122122 if (libc.os_ver) |libc_os_ver| {
......@@ -176,7 +176,7 @@ pub fn muslRuntimeTriple(
176176 return std.Target.linuxTripleSimple(allocator, arch, .linux, abi);
177177}
178178
179pub fn osArchName(target: std.Target) [:0]const u8 {
179pub fn osArchName(target: *const std.Target) [:0]const u8 {
180180 return switch (target.os.tag) {
181181 .linux => switch (target.cpu.arch) {
182182 .arm, .armeb, .thumb, .thumbeb => "arm",
......@@ -276,7 +276,7 @@ pub fn netbsdAbiNameHeaders(abi: std.Target.Abi) [:0]const u8 {
276276 };
277277}
278278
279pub fn isLibCLibName(target: std.Target, name: []const u8) bool {
279pub fn isLibCLibName(target: *const std.Target, name: []const u8) bool {
280280 const ignore_case = target.os.tag.isDarwin() or target.os.tag == .windows;
281281
282282 if (eqlIgnoreCase(ignore_case, name, "c"))
......@@ -453,7 +453,7 @@ pub fn isLibCLibName(target: std.Target, name: []const u8) bool {
453453 return false;
454454}
455455
456pub fn isLibCxxLibName(target: std.Target, name: []const u8) bool {
456pub fn isLibCxxLibName(target: *const std.Target, name: []const u8) bool {
457457 const ignore_case = target.os.tag.isDarwin() or target.os.tag == .windows;
458458
459459 return eqlIgnoreCase(ignore_case, name, "c++") or
......@@ -470,11 +470,11 @@ fn eqlIgnoreCase(ignore_case: bool, a: []const u8, b: []const u8) bool {
470470 }
471471}
472472
473pub fn intByteSize(target: std.Target, bits: u16) u19 {
473pub fn intByteSize(target: *const std.Target, bits: u16) u19 {
474474 return std.mem.alignForward(u19, @intCast((@as(u17, bits) + 7) / 8), intAlignment(target, bits));
475475}
476476
477pub fn intAlignment(target: std.Target, bits: u16) u16 {
477pub fn intAlignment(target: *const std.Target, bits: u16) u16 {
478478 return switch (target.cpu.arch) {
479479 .x86 => switch (bits) {
480480 0 => 0,
src/Air/Legalize.zig+14-2
......@@ -122,8 +122,10 @@ pub const Feature = enum {
122122
123123 /// Legalize (shift lhs, (splat rhs)) -> (shift lhs, rhs)
124124 unsplat_shift_rhs,
125 /// Legalize reduce of a one element vector to a bitcast
125 /// Legalize reduce of a one element vector to a bitcast.
126126 reduce_one_elem_to_bitcast,
127 /// Legalize splat to a one element vector to a bitcast.
128 splat_one_elem_to_bitcast,
127129
128130 /// Replace `intcast_safe` with an explicit safety check which `call`s the panic function on failure.
129131 /// Not compatible with `scalarize_intcast_safe`.
......@@ -628,7 +630,17 @@ fn legalizeBody(l: *Legalize, body_start: usize, body_len: usize) Error!void {
628630 else => {},
629631 }
630632 },
631 .splat => {},
633 .splat => if (l.features.has(.splat_one_elem_to_bitcast)) {
634 const ty_op = l.air_instructions.items(.data)[@intFromEnum(inst)].ty_op;
635 switch (ty_op.ty.toType().vectorLen(zcu)) {
636 0 => unreachable,
637 1 => continue :inst l.replaceInst(inst, .bitcast, .{ .ty_op = .{
638 .ty = ty_op.ty,
639 .operand = ty_op.operand,
640 } }),
641 else => {},
642 }
643 },
632644 .shuffle_one => if (l.features.has(.scalarize_shuffle_one)) continue :inst try l.scalarize(inst, .shuffle_one),
633645 .shuffle_two => if (l.features.has(.scalarize_shuffle_two)) continue :inst try l.scalarize(inst, .shuffle_two),
634646 .select => if (l.features.has(.scalarize_select)) continue :inst try l.scalarize(inst, .select),
src/Compilation.zig+78-30
......@@ -224,6 +224,8 @@ compiler_rt_lib: ?CrtFile = null,
224224/// Populated when we build the compiler_rt_obj object. A Job to build this is indicated
225225/// by setting `queued_jobs.compiler_rt_obj` and resolved before calling linker.flush().
226226compiler_rt_obj: ?CrtFile = null,
227/// hack for stage2_x86_64 + coff
228compiler_rt_dyn_lib: ?CrtFile = null,
227229/// Populated when we build the libfuzzer static library. A Job to build this
228230/// is indicated by setting `queued_jobs.fuzzer_lib` and resolved before
229231/// calling linker.flush().
......@@ -291,6 +293,8 @@ emit_llvm_bc: ?[]const u8,
291293emit_docs: ?[]const u8,
292294
293295const QueuedJobs = struct {
296 /// hack for stage2_x86_64 + coff
297 compiler_rt_dyn_lib: bool = false,
294298 compiler_rt_lib: bool = false,
295299 compiler_rt_obj: bool = false,
296300 ubsan_rt_lib: bool = false,
......@@ -1361,7 +1365,7 @@ pub const cache_helpers = struct {
13611365 hh: *Cache.HashHelper,
13621366 resolved_target: Package.Module.ResolvedTarget,
13631367 ) void {
1364 const target = resolved_target.result;
1368 const target = &resolved_target.result;
13651369 hh.add(target.cpu.arch);
13661370 hh.addBytes(target.cpu.model.name);
13671371 hh.add(target.cpu.features.ints);
......@@ -1705,7 +1709,7 @@ pub const CreateOptions = struct {
17051709 assert(opts.cache_mode != .none);
17061710 return try ea.cacheName(arena, .{
17071711 .root_name = opts.root_name,
1708 .target = opts.root_mod.resolved_target.result,
1712 .target = &opts.root_mod.resolved_target.result,
17091713 .output_mode = opts.config.output_mode,
17101714 .link_mode = opts.config.link_mode,
17111715 .version = opts.version,
......@@ -1753,7 +1757,7 @@ fn addModuleTableToCacheHash(
17531757 }
17541758}
17551759
1756const RtStrat = enum { none, lib, obj, zcu };
1760const RtStrat = enum { none, lib, obj, zcu, dyn_lib };
17571761
17581762pub fn create(gpa: Allocator, arena: Allocator, options: CreateOptions) !*Compilation {
17591763 const output_mode = options.config.output_mode;
......@@ -1772,14 +1776,14 @@ pub fn create(gpa: Allocator, arena: Allocator, options: CreateOptions) !*Compil
17721776 }
17731777
17741778 const have_zcu = options.config.have_zcu;
1779 const use_llvm = options.config.use_llvm;
1780 const target = &options.root_mod.resolved_target.result;
17751781
17761782 const comp: *Compilation = comp: {
17771783 // We put the `Compilation` itself in the arena. Freeing the arena will free the module.
17781784 // It's initialized later after we prepare the initialization options.
17791785 const root_name = try arena.dupeZ(u8, options.root_name);
17801786
1781 const use_llvm = options.config.use_llvm;
1782
17831787 // The "any" values provided by resolved config only account for
17841788 // explicitly-provided settings. We now make them additionally account
17851789 // for default setting resolution.
......@@ -1804,7 +1808,7 @@ pub fn create(gpa: Allocator, arena: Allocator, options: CreateOptions) !*Compil
18041808 const libc_dirs = try std.zig.LibCDirs.detect(
18051809 arena,
18061810 options.dirs.zig_lib.path.?,
1807 options.root_mod.resolved_target.result,
1811 target,
18081812 options.root_mod.resolved_target.is_native_abi,
18091813 link_libc,
18101814 options.libc_installation,
......@@ -1816,7 +1820,11 @@ pub fn create(gpa: Allocator, arena: Allocator, options: CreateOptions) !*Compil
18161820 if (options.skip_linker_dependencies) break :s .none;
18171821 const want = options.want_compiler_rt orelse is_exe_or_dyn_lib;
18181822 if (!want) break :s .none;
1819 if (have_zcu and output_mode == .Obj) break :s .zcu;
1823 if (have_zcu) {
1824 if (output_mode == .Obj) break :s .zcu;
1825 if (target.ofmt == .coff and target_util.zigBackend(target, use_llvm) == .stage2_x86_64)
1826 break :s if (is_exe_or_dyn_lib) .dyn_lib else .zcu;
1827 }
18201828 if (is_exe_or_dyn_lib) break :s .lib;
18211829 break :s .obj;
18221830 };
......@@ -1846,7 +1854,7 @@ pub fn create(gpa: Allocator, arena: Allocator, options: CreateOptions) !*Compil
18461854 // approach, since the ubsan runtime uses quite a lot of the standard library
18471855 // and this reduces unnecessary bloat.
18481856 const ubsan_rt_strat: RtStrat = s: {
1849 const can_build_ubsan_rt = target_util.canBuildLibUbsanRt(options.root_mod.resolved_target.result);
1857 const can_build_ubsan_rt = target_util.canBuildLibUbsanRt(target);
18501858 const want_ubsan_rt = options.want_ubsan_rt orelse (can_build_ubsan_rt and any_sanitize_c == .full and is_exe_or_dyn_lib);
18511859 if (!want_ubsan_rt) break :s .none;
18521860 if (options.skip_linker_dependencies) break :s .none;
......@@ -1872,7 +1880,6 @@ pub fn create(gpa: Allocator, arena: Allocator, options: CreateOptions) !*Compil
18721880
18731881 if (options.verbose_llvm_cpu_features) {
18741882 if (options.root_mod.resolved_target.llvm_cpu_features) |cf| print: {
1875 const target = options.root_mod.resolved_target.result;
18761883 std.debug.lockStdErr();
18771884 defer std.debug.unlockStdErr();
18781885 const stderr = std.io.getStdErr().writer();
......@@ -1991,9 +1998,6 @@ pub fn create(gpa: Allocator, arena: Allocator, options: CreateOptions) !*Compil
19911998 };
19921999 errdefer if (opt_zcu) |zcu| zcu.deinit();
19932000
1994 var windows_libs = try std.StringArrayHashMapUnmanaged(void).init(gpa, options.windows_lib_names, &.{});
1995 errdefer windows_libs.deinit(gpa);
1996
19972001 comp.* = .{
19982002 .gpa = gpa,
19992003 .arena = arena,
......@@ -2038,7 +2042,7 @@ pub fn create(gpa: Allocator, arena: Allocator, options: CreateOptions) !*Compil
20382042 .incremental = options.incremental,
20392043 .root_name = root_name,
20402044 .sysroot = sysroot,
2041 .windows_libs = windows_libs,
2045 .windows_libs = .empty,
20422046 .version = options.version,
20432047 .libc_installation = libc_dirs.libc_installation,
20442048 .compiler_rt_strat = compiler_rt_strat,
......@@ -2066,6 +2070,13 @@ pub fn create(gpa: Allocator, arena: Allocator, options: CreateOptions) !*Compil
20662070 .emit_docs = try options.emit_docs.resolve(arena, &options, .docs),
20672071 };
20682072
2073 errdefer {
2074 for (comp.windows_libs.keys()) |windows_lib| gpa.free(windows_lib);
2075 comp.windows_libs.deinit(gpa);
2076 }
2077 try comp.windows_libs.ensureUnusedCapacity(gpa, options.windows_lib_names.len);
2078 for (options.windows_lib_names) |windows_lib| comp.windows_libs.putAssumeCapacity(try gpa.dupe(u8, windows_lib), {});
2079
20692080 // Prevent some footguns by making the "any" fields of config reflect
20702081 // the default Module settings.
20712082 comp.config.any_unwind_tables = any_unwind_tables;
......@@ -2244,8 +2255,7 @@ pub fn create(gpa: Allocator, arena: Allocator, options: CreateOptions) !*Compil
22442255 };
22452256 errdefer comp.destroy();
22462257
2247 const target = comp.root_mod.resolved_target.result;
2248 const can_build_compiler_rt = target_util.canBuildLibCompilerRt(target, comp.config.use_llvm, build_options.have_llvm);
2258 const can_build_compiler_rt = target_util.canBuildLibCompilerRt(target, use_llvm, build_options.have_llvm);
22492259
22502260 // Add a `CObject` for each `c_source_files`.
22512261 try comp.c_object_table.ensureTotalCapacity(gpa, options.c_source_files.len);
......@@ -2344,7 +2354,7 @@ pub fn create(gpa: Allocator, arena: Allocator, options: CreateOptions) !*Compil
23442354 comp.link_task_queue.pending_prelink_tasks += 1;
23452355 }
23462356 comp.queued_jobs.glibc_shared_objects = true;
2347 comp.link_task_queue.pending_prelink_tasks += glibc.sharedObjectsCount(&target);
2357 comp.link_task_queue.pending_prelink_tasks += glibc.sharedObjectsCount(target);
23482358
23492359 comp.queued_jobs.glibc_crt_file[@intFromEnum(glibc.CrtFile.libc_nonshared_a)] = true;
23502360 comp.link_task_queue.pending_prelink_tasks += 1;
......@@ -2389,7 +2399,7 @@ pub fn create(gpa: Allocator, arena: Allocator, options: CreateOptions) !*Compil
23892399
23902400 // When linking mingw-w64 there are some import libs we always need.
23912401 try comp.windows_libs.ensureUnusedCapacity(gpa, mingw.always_link_libs.len);
2392 for (mingw.always_link_libs) |name| comp.windows_libs.putAssumeCapacity(name, {});
2402 for (mingw.always_link_libs) |name| comp.windows_libs.putAssumeCapacity(try gpa.dupe(u8, name), {});
23932403 } else {
23942404 return error.LibCUnavailable;
23952405 }
......@@ -2439,6 +2449,11 @@ pub fn create(gpa: Allocator, arena: Allocator, options: CreateOptions) !*Compil
24392449 // for a compiler-rt object to put in it.
24402450 comp.queued_jobs.compiler_rt_obj = true;
24412451 comp.link_task_queue.pending_prelink_tasks += 1;
2452 } else if (comp.compiler_rt_strat == .dyn_lib) {
2453 // hack for stage2_x86_64 + coff
2454 log.debug("queuing a job to build compiler_rt_dyn_lib", .{});
2455 comp.queued_jobs.compiler_rt_dyn_lib = true;
2456 comp.link_task_queue.pending_prelink_tasks += 1;
24422457 }
24432458
24442459 if (comp.ubsan_rt_strat == .lib) {
......@@ -2482,6 +2497,7 @@ pub fn destroy(comp: *Compilation) void {
24822497 comp.c_object_work_queue.deinit();
24832498 comp.win32_resource_work_queue.deinit();
24842499
2500 for (comp.windows_libs.keys()) |windows_lib| gpa.free(windows_lib);
24852501 comp.windows_libs.deinit(gpa);
24862502
24872503 {
......@@ -2571,8 +2587,8 @@ pub fn clearMiscFailures(comp: *Compilation) void {
25712587 comp.misc_failures = .{};
25722588}
25732589
2574pub fn getTarget(self: Compilation) Target {
2575 return self.root_mod.resolved_target.result;
2590pub fn getTarget(self: *const Compilation) *const Target {
2591 return &self.root_mod.resolved_target.result;
25762592}
25772593
25782594/// Only legal to call when cache mode is incremental and a link file is present.
......@@ -3210,7 +3226,7 @@ fn addNonIncrementalStuffToCacheManifest(
32103226 man.hash.addOptional(opts.image_base);
32113227 man.hash.addOptional(opts.gc_sections);
32123228 man.hash.add(opts.emit_relocs);
3213 const target = comp.root_mod.resolved_target.result;
3229 const target = &comp.root_mod.resolved_target.result;
32143230 if (target.ofmt == .macho or target.ofmt == .coff) {
32153231 // TODO remove this, libraries need to be resolved by the frontend. this is already
32163232 // done by ELF.
......@@ -4251,6 +4267,7 @@ fn performAllTheWork(
42514267 "compiler_rt.zig",
42524268 "compiler_rt",
42534269 .Lib,
4270 .static,
42544271 .compiler_rt,
42554272 main_progress_node,
42564273 RtOptions{
......@@ -4267,6 +4284,7 @@ fn performAllTheWork(
42674284 "compiler_rt.zig",
42684285 "compiler_rt",
42694286 .Obj,
4287 .static,
42704288 .compiler_rt,
42714289 main_progress_node,
42724290 RtOptions{
......@@ -4277,12 +4295,31 @@ fn performAllTheWork(
42774295 });
42784296 }
42794297
4298 // hack for stage2_x86_64 + coff
4299 if (comp.queued_jobs.compiler_rt_dyn_lib and comp.compiler_rt_dyn_lib == null) {
4300 comp.link_task_wait_group.spawnManager(buildRt, .{
4301 comp,
4302 "compiler_rt.zig",
4303 "compiler_rt",
4304 .Lib,
4305 .dynamic,
4306 .compiler_rt,
4307 main_progress_node,
4308 RtOptions{
4309 .checks_valgrind = true,
4310 .allow_lto = false,
4311 },
4312 &comp.compiler_rt_dyn_lib,
4313 });
4314 }
4315
42804316 if (comp.queued_jobs.fuzzer_lib and comp.fuzzer_lib == null) {
42814317 comp.link_task_wait_group.spawnManager(buildRt, .{
42824318 comp,
42834319 "fuzzer.zig",
42844320 "fuzzer",
42854321 .Lib,
4322 .static,
42864323 .libfuzzer,
42874324 main_progress_node,
42884325 RtOptions{},
......@@ -4296,6 +4333,7 @@ fn performAllTheWork(
42964333 "ubsan_rt.zig",
42974334 "ubsan_rt",
42984335 .Lib,
4336 .static,
42994337 .libubsan,
43004338 main_progress_node,
43014339 RtOptions{
......@@ -4311,6 +4349,7 @@ fn performAllTheWork(
43114349 "ubsan_rt.zig",
43124350 "ubsan_rt",
43134351 .Obj,
4352 .static,
43144353 .libubsan,
43154354 main_progress_node,
43164355 RtOptions{
......@@ -5387,6 +5426,7 @@ fn buildRt(
53875426 root_source_name: []const u8,
53885427 root_name: []const u8,
53895428 output_mode: std.builtin.OutputMode,
5429 link_mode: std.builtin.LinkMode,
53905430 misc_task: MiscTask,
53915431 prog_node: std.Progress.Node,
53925432 options: RtOptions,
......@@ -5396,6 +5436,7 @@ fn buildRt(
53965436 root_source_name,
53975437 root_name,
53985438 output_mode,
5439 link_mode,
53995440 misc_task,
54005441 prog_node,
54015442 options,
......@@ -5551,6 +5592,7 @@ fn buildLibZigC(comp: *Compilation, prog_node: std.Progress.Node) void {
55515592 "c.zig",
55525593 "zigc",
55535594 .Lib,
5595 .static,
55545596 .libzigc,
55555597 prog_node,
55565598 .{},
......@@ -6270,7 +6312,7 @@ pub fn addCCArgs(
62706312 out_dep_path: ?[]const u8,
62716313 mod: *Package.Module,
62726314) !void {
6273 const target = mod.resolved_target.result;
6315 const target = &mod.resolved_target.result;
62746316
62756317 // As of Clang 16.x, it will by default read extra flags from /etc/clang.
62766318 // I'm sure the person who implemented this means well, but they have a lot
......@@ -6944,7 +6986,7 @@ pub const FileExt = enum {
69446986 };
69456987 }
69466988
6947 pub fn canonicalName(ext: FileExt, target: Target) [:0]const u8 {
6989 pub fn canonicalName(ext: FileExt, target: *const Target) [:0]const u8 {
69486990 return switch (ext) {
69496991 .c => ".c",
69506992 .cpp => ".cpp",
......@@ -7187,7 +7229,7 @@ pub fn dump_argv(argv: []const []const u8) void {
71877229}
71887230
71897231pub fn getZigBackend(comp: Compilation) std.builtin.CompilerBackend {
7190 const target = comp.root_mod.resolved_target.result;
7232 const target = &comp.root_mod.resolved_target.result;
71917233 return target_util.zigBackend(target, comp.config.use_llvm);
71927234}
71937235
......@@ -7228,6 +7270,7 @@ fn buildOutputFromZig(
72287270 src_basename: []const u8,
72297271 root_name: []const u8,
72307272 output_mode: std.builtin.OutputMode,
7273 link_mode: std.builtin.LinkMode,
72317274 misc_task_tag: MiscTask,
72327275 prog_node: std.Progress.Node,
72337276 options: RtOptions,
......@@ -7248,7 +7291,7 @@ fn buildOutputFromZig(
72487291
72497292 const config = try Config.resolve(.{
72507293 .output_mode = output_mode,
7251 .link_mode = .static,
7294 .link_mode = link_mode,
72527295 .resolved_target = comp.root_mod.resolved_target,
72537296 .is_test = false,
72547297 .have_zcu = true,
......@@ -7371,7 +7414,7 @@ pub fn build_crt_file(
73717414
73727415 const basename = try std.zig.binNameAlloc(gpa, .{
73737416 .root_name = root_name,
7374 .target = comp.root_mod.resolved_target.result,
7417 .target = &comp.root_mod.resolved_target.result,
73757418 .output_mode = output_mode,
73767419 });
73777420
......@@ -7523,13 +7566,13 @@ pub fn getCrtPaths(
75237566 comp: *Compilation,
75247567 arena: Allocator,
75257568) error{ OutOfMemory, LibCInstallationMissingCrtDir }!LibCInstallation.CrtPaths {
7526 const target = comp.root_mod.resolved_target.result;
7569 const target = &comp.root_mod.resolved_target.result;
75277570 return getCrtPathsInner(arena, target, comp.config, comp.libc_installation, &comp.crt_files);
75287571}
75297572
75307573fn getCrtPathsInner(
75317574 arena: Allocator,
7532 target: std.Target,
7575 target: *const std.Target,
75337576 config: Config,
75347577 libc_installation: ?*const LibCInstallation,
75357578 crt_files: *std.StringHashMapUnmanaged(CrtFile),
......@@ -7558,14 +7601,19 @@ pub fn addLinkLib(comp: *Compilation, lib_name: []const u8) !void {
75587601 // then when we create a sub-Compilation for zig libc, it also tries to
75597602 // build kernel32.lib.
75607603 if (comp.skip_linker_dependencies) return;
7561 const target = comp.root_mod.resolved_target.result;
7604 const target = &comp.root_mod.resolved_target.result;
75627605 if (target.os.tag != .windows or target.ofmt == .c) return;
75637606
75647607 // This happens when an `extern "foo"` function is referenced.
75657608 // If we haven't seen this library yet and we're targeting Windows, we need
75667609 // to queue up a work item to produce the DLL import library for this.
75677610 const gop = try comp.windows_libs.getOrPut(comp.gpa, lib_name);
7568 if (!gop.found_existing) try comp.queueJob(.{ .windows_import_lib = comp.windows_libs.count() - 1 });
7611 if (gop.found_existing) return;
7612 {
7613 errdefer _ = comp.windows_libs.pop();
7614 gop.key_ptr.* = try comp.gpa.dupe(u8, lib_name);
7615 }
7616 try comp.queueJob(.{ .windows_import_lib = gop.index });
75697617}
75707618
75717619/// This decides the optimization mode for all zig-provided libraries, including
......@@ -7574,7 +7622,7 @@ pub fn compilerRtOptMode(comp: Compilation) std.builtin.OptimizeMode {
75747622 if (comp.debug_compiler_runtime_libs) {
75757623 return comp.root_mod.optimize_mode;
75767624 }
7577 const target = comp.root_mod.resolved_target.result;
7625 const target = &comp.root_mod.resolved_target.result;
75787626 switch (comp.root_mod.optimize_mode) {
75797627 .Debug, .ReleaseSafe => return target_util.defaultCompilerRtOptimizeMode(target),
75807628 .ReleaseFast => return .ReleaseFast,
src/Compilation/Config.zig+1-1
......@@ -150,7 +150,7 @@ pub const ResolveError = error{
150150};
151151
152152pub fn resolve(options: Options) ResolveError!Config {
153 const target = options.resolved_target.result;
153 const target = &options.resolved_target.result;
154154
155155 // WASI-only. Resolve the optional exec-model option, defaults to command.
156156 if (target.os.tag != .wasi and options.wasi_exec_model != null)
src/Package/Module.zig+3-3
......@@ -102,7 +102,7 @@ pub fn create(arena: Allocator, options: CreateOptions) !*Package.Module {
102102 if (options.inherited.error_tracing == true) assert(options.global.any_error_tracing);
103103
104104 const resolved_target = options.inherited.resolved_target orelse options.parent.?.resolved_target;
105 const target = resolved_target.result;
105 const target = &resolved_target.result;
106106
107107 const optimize_mode = options.inherited.optimize_mode orelse
108108 if (options.parent) |p| p.optimize_mode else options.global.root_optimize_mode;
......@@ -363,7 +363,7 @@ pub fn create(arena: Allocator, options: CreateOptions) !*Package.Module {
363363 .root_src_path = options.paths.root_src_path,
364364 .fully_qualified_name = options.fully_qualified_name,
365365 .resolved_target = .{
366 .result = target,
366 .result = target.*,
367367 .is_native_os = resolved_target.is_native_os,
368368 .is_native_abi = resolved_target.is_native_abi,
369369 .is_explicit_dynamic_linker = resolved_target.is_explicit_dynamic_linker,
......@@ -474,7 +474,7 @@ pub fn getBuiltinOptions(m: Module, global: Compilation.Config) Builtin {
474474 assert(global.have_zcu);
475475 return .{
476476 .target = m.resolved_target.result,
477 .zig_backend = target_util.zigBackend(m.resolved_target.result, global.use_llvm),
477 .zig_backend = target_util.zigBackend(&m.resolved_target.result, global.use_llvm),
478478 .output_mode = global.output_mode,
479479 .link_mode = global.link_mode,
480480 .unwind_tables = m.unwind_tables,
src/Sema.zig+4-4
......@@ -29912,7 +29912,7 @@ pub fn coerceInMemoryAllowed(
2991229912 /// load from the `*Src` to effectively perform an in-memory coercion from `Dest` to `Src`.
2991329913 /// Therefore, when `dest_is_mut`, the in-memory coercion must be valid in *both directions*.
2991429914 dest_is_mut: bool,
29915 target: std.Target,
29915 target: *const std.Target,
2991629916 dest_src: LazySrcLoc,
2991729917 src_src: LazySrcLoc,
2991829918 src_val: ?Value,
......@@ -30271,7 +30271,7 @@ fn coerceInMemoryAllowedFns(
3027130271 src_ty: Type,
3027230272 /// If set, the coercion must be valid in both directions.
3027330273 dest_is_mut: bool,
30274 target: std.Target,
30274 target: *const std.Target,
3027530275 dest_src: LazySrcLoc,
3027630276 src_src: LazySrcLoc,
3027730277) !InMemoryCoercionResult {
......@@ -30380,7 +30380,7 @@ fn coerceInMemoryAllowedFns(
3038030380}
3038130381
3038230382fn callconvCoerceAllowed(
30383 target: std.Target,
30383 target: *const std.Target,
3038430384 src_cc: std.builtin.CallingConvention,
3038530385 dest_cc: std.builtin.CallingConvention,
3038630386) bool {
......@@ -30426,7 +30426,7 @@ fn coerceInMemoryAllowedPtrs(
3042630426 src_ptr_ty: Type,
3042730427 /// If set, the coercion must be valid in both directions.
3042830428 dest_is_mut: bool,
30429 target: std.Target,
30429 target: *const std.Target,
3043030430 dest_src: LazySrcLoc,
3043130431 src_src: LazySrcLoc,
3043230432) !InMemoryCoercionResult {
src/Type.zig+3-3
......@@ -1602,7 +1602,7 @@ fn abiSizeInnerOptional(
16021602 };
16031603}
16041604
1605pub fn ptrAbiAlignment(target: Target) Alignment {
1605pub fn ptrAbiAlignment(target: *const Target) Alignment {
16061606 return Alignment.fromNonzeroByteUnits(@divExact(target.ptrBitWidth(), 8));
16071607}
16081608
......@@ -2395,7 +2395,7 @@ pub fn isAnyFloat(ty: Type) bool {
23952395
23962396/// Asserts the type is a fixed-size float or comptime_float.
23972397/// Returns 128 for comptime_float types.
2398pub fn floatBits(ty: Type, target: Target) u16 {
2398pub fn floatBits(ty: Type, target: *const Target) u16 {
23992399 return switch (ty.toIntern()) {
24002400 .f16_type => 16,
24012401 .f32_type => 32,
......@@ -4188,6 +4188,6 @@ pub fn smallestUnsignedBits(max: u64) u16 {
41884188/// to packed struct layout to find out all the places in the codebase you need to edit!
41894189pub const packed_struct_layout_version = 2;
41904190
4191fn cTypeAlign(target: Target, c_type: Target.CType) Alignment {
4191fn cTypeAlign(target: *const Target, c_type: Target.CType) Alignment {
41924192 return Alignment.fromByteUnits(target.cTypeAlignment(c_type));
41934193}
src/Zcu.zig+3-3
......@@ -3773,8 +3773,8 @@ pub fn errNote(
37733773/// Deprecated. There is no global target for a Zig Compilation Unit. Instead,
37743774/// look up the target based on the Module that contains the source code being
37753775/// analyzed.
3776pub fn getTarget(zcu: *const Zcu) Target {
3777 return zcu.root_mod.resolved_target.result;
3776pub fn getTarget(zcu: *const Zcu) *const Target {
3777 return &zcu.root_mod.resolved_target.result;
37783778}
37793779
37803780/// Deprecated. There is no global optimization mode for a Zig Compilation
......@@ -3863,7 +3863,7 @@ pub const Feature = enum {
38633863};
38643864
38653865pub fn backendSupportsFeature(zcu: *const Zcu, comptime feature: Feature) bool {
3866 const backend = target_util.zigBackend(zcu.root_mod.resolved_target.result, zcu.comp.config.use_llvm);
3866 const backend = target_util.zigBackend(&zcu.root_mod.resolved_target.result, zcu.comp.config.use_llvm);
38673867 return target_util.backendSupportsFeature(backend, feature);
38683868}
38693869
src/Zcu/PerThread.zig+1-1
......@@ -4382,7 +4382,7 @@ pub fn runCodegen(pt: Zcu.PerThread, func_index: InternPool.Index, air: *Air, ou
43824382 error.CodegenFail => zcu.assertCodegenFailed(zcu.funcInfo(func_index).owner_nav),
43834383 error.NoLinkFile => assert(zcu.comp.bin_file == null),
43844384 error.BackendDoesNotProduceMir => switch (target_util.zigBackend(
4385 zcu.root_mod.resolved_target.result,
4385 &zcu.root_mod.resolved_target.result,
43864386 zcu.comp.config.use_llvm,
43874387 )) {
43884388 else => unreachable, // assertion failure
src/arch/aarch64/CodeGen.zig+2-2
......@@ -6175,7 +6175,7 @@ fn genTypedValue(self: *Self, val: Value) InnerError!MCValue {
61756175 self.pt,
61766176 self.src_loc,
61776177 val,
6178 self.target.*,
6178 self.target,
61796179 )) {
61806180 .mcv => |mcv| switch (mcv) {
61816181 .none => .none,
......@@ -6379,7 +6379,7 @@ fn registerAlias(self: *Self, reg: Register, ty: Type) Register {
63796379 },
63806380 .stack_pointer => unreachable, // we can't store/load the sp
63816381 .floating_point => {
6382 return switch (ty.floatBits(self.target.*)) {
6382 return switch (ty.floatBits(self.target)) {
63836383 16 => reg.toH(),
63846384 32 => reg.toS(),
63856385 64 => reg.toD(),
src/arch/arm/CodeGen.zig+1-1
......@@ -6148,7 +6148,7 @@ fn genTypedValue(self: *Self, val: Value) InnerError!MCValue {
61486148 pt,
61496149 self.src_loc,
61506150 val,
6151 self.target.*,
6151 self.target,
61526152 )) {
61536153 .mcv => |mcv| switch (mcv) {
61546154 .none => .none,
src/arch/riscv64/CodeGen.zig+18-11
......@@ -1881,7 +1881,7 @@ fn memSize(func: *Func, ty: Type) Memory.Size {
18811881 const pt = func.pt;
18821882 const zcu = pt.zcu;
18831883 return switch (ty.zigTypeTag(zcu)) {
1884 .float => Memory.Size.fromBitSize(ty.floatBits(func.target.*)),
1884 .float => Memory.Size.fromBitSize(ty.floatBits(func.target)),
18851885 else => Memory.Size.fromByteSize(ty.abiSize(zcu)),
18861886 };
18871887}
......@@ -2401,7 +2401,7 @@ fn binOp(
24012401 const rhs_ty = func.typeOf(rhs_air);
24022402
24032403 if (lhs_ty.isRuntimeFloat()) libcall: {
2404 const float_bits = lhs_ty.floatBits(func.target.*);
2404 const float_bits = lhs_ty.floatBits(func.target);
24052405 const type_needs_libcall = switch (float_bits) {
24062406 16 => true,
24072407 32, 64 => false,
......@@ -5189,7 +5189,7 @@ fn airCmp(func: *Func, inst: Air.Inst.Index, tag: Air.Inst.Tag) !void {
51895189 }
51905190 },
51915191 .float => {
5192 const float_bits = lhs_ty.floatBits(func.target.*);
5192 const float_bits = lhs_ty.floatBits(func.target);
51935193 const float_reg_size: u32 = if (func.hasFeature(.d)) 64 else 32;
51945194 if (float_bits > float_reg_size) {
51955195 return func.fail("TODO: airCmp float > 64/32 bits", .{});
......@@ -5962,10 +5962,14 @@ fn airBr(func: *Func, inst: Air.Inst.Index) !void {
59625962 if (first_br) break :result src_mcv;
59635963
59645964 try func.getValue(block_tracking.short, br.block_inst);
5965 // .long = .none to avoid merging operand and block result stack frames.
5966 const current_tracking: InstTracking = .{ .long = .none, .short = src_mcv };
5967 try current_tracking.materializeUnsafe(func, br.block_inst, block_tracking.*);
5968 for (current_tracking.getRegs()) |src_reg| func.register_manager.freeReg(src_reg);
5965 try InstTracking.materializeUnsafe(
5966 // .long = .none to avoid merging operand and block result stack frames.
5967 .{ .long = .none, .short = src_mcv },
5968 func,
5969 br.block_inst,
5970 block_tracking.*,
5971 );
5972 try func.freeValue(src_mcv);
59695973 break :result block_tracking.short;
59705974 }
59715975
......@@ -8192,10 +8196,13 @@ fn genTypedValue(func: *Func, val: Value) InnerError!MCValue {
81928196 const lf = func.bin_file;
81938197 const src_loc = func.src_loc;
81948198
8195 const result = if (val.isUndef(pt.zcu))
8196 try lf.lowerUav(pt, val.toIntern(), .none, src_loc)
8199 const result: codegen.GenResult = if (val.isUndef(pt.zcu))
8200 switch (try lf.lowerUav(pt, val.toIntern(), .none, src_loc)) {
8201 .sym_index => |sym_index| .{ .mcv = .{ .load_symbol = sym_index } },
8202 .fail => |em| .{ .fail = em },
8203 }
81978204 else
8198 try codegen.genTypedValue(lf, pt, src_loc, val, func.target.*);
8205 try codegen.genTypedValue(lf, pt, src_loc, val, func.target);
81998206 const mcv: MCValue = switch (result) {
82008207 .mcv => |mcv| switch (mcv) {
82018208 .none => .none,
......@@ -8484,7 +8491,7 @@ fn promoteInt(func: *Func, ty: Type) Type {
84848491
84858492fn promoteVarArg(func: *Func, ty: Type) Type {
84868493 if (!ty.isRuntimeFloat()) return func.promoteInt(ty);
8487 switch (ty.floatBits(func.target.*)) {
8494 switch (ty.floatBits(func.target)) {
84888495 32, 64 => return Type.f64,
84898496 else => |float_bits| {
84908497 assert(float_bits == func.target.cTypeBitSize(.longdouble));
src/arch/sparc64/CodeGen.zig+1-1
......@@ -4088,7 +4088,7 @@ fn genTypedValue(self: *Self, val: Value) InnerError!MCValue {
40884088 pt,
40894089 self.src_loc,
40904090 val,
4091 self.target.*,
4091 self.target,
40924092 )) {
40934093 .mcv => |mcv| switch (mcv) {
40944094 .none => .none,
src/arch/wasm/CodeGen.zig+15-15
......@@ -982,7 +982,7 @@ fn addExtraAssumeCapacity(cg: *CodeGen, extra: anytype) error{OutOfMemory}!u32 {
982982pub fn typeToValtype(ty: Type, zcu: *const Zcu, target: *const std.Target) std.wasm.Valtype {
983983 const ip = &zcu.intern_pool;
984984 return switch (ty.zigTypeTag(zcu)) {
985 .float => switch (ty.floatBits(target.*)) {
985 .float => switch (ty.floatBits(target)) {
986986 16 => .i32, // stored/loaded as u16
987987 32 => .f32,
988988 64 => .f64,
......@@ -1715,7 +1715,7 @@ fn isByRef(ty: Type, zcu: *const Zcu, target: *const std.Target) bool {
17151715 .vector => return determineSimdStoreStrategy(ty, zcu, target) == .unrolled,
17161716 .int => return ty.intInfo(zcu).bits > 64,
17171717 .@"enum" => return ty.intInfo(zcu).bits > 64,
1718 .float => return ty.floatBits(target.*) > 64,
1718 .float => return ty.floatBits(target) > 64,
17191719 .error_union => {
17201720 const pl_ty = ty.errorUnionPayload(zcu);
17211721 if (!pl_ty.hasRuntimeBitsIgnoreComptime(zcu)) {
......@@ -2904,7 +2904,7 @@ fn floatOp(cg: *CodeGen, float_op: FloatOp, ty: Type, args: []const WValue) Inne
29042904 return cg.fail("TODO: Implement floatOps for vectors", .{});
29052905 }
29062906
2907 const float_bits = ty.floatBits(cg.target.*);
2907 const float_bits = ty.floatBits(cg.target);
29082908
29092909 if (float_op == .neg) {
29102910 return cg.floatNeg(ty, args[0]);
......@@ -2931,7 +2931,7 @@ fn floatOp(cg: *CodeGen, float_op: FloatOp, ty: Type, args: []const WValue) Inne
29312931
29322932/// NOTE: The result value remains on top of the stack.
29332933fn floatNeg(cg: *CodeGen, ty: Type, arg: WValue) InnerError!WValue {
2934 const float_bits = ty.floatBits(cg.target.*);
2934 const float_bits = ty.floatBits(cg.target);
29352935 switch (float_bits) {
29362936 16 => {
29372937 try cg.emitWValue(arg);
......@@ -3300,7 +3300,7 @@ fn emitUndefined(cg: *CodeGen, ty: Type) InnerError!WValue {
33003300 33...64 => return .{ .imm64 = 0xaaaaaaaaaaaaaaaa },
33013301 else => unreachable,
33023302 },
3303 .float => switch (ty.floatBits(cg.target.*)) {
3303 .float => switch (ty.floatBits(cg.target)) {
33043304 16 => return .{ .imm32 = 0xaaaaaaaa },
33053305 32 => return .{ .float32 = @as(f32, @bitCast(@as(u32, 0xaaaaaaaa))) },
33063306 64 => return .{ .float64 = @as(f64, @bitCast(@as(u64, 0xaaaaaaaaaaaaaaaa))) },
......@@ -3507,7 +3507,7 @@ fn cmp(cg: *CodeGen, lhs: WValue, rhs: WValue, ty: Type, op: std.math.CompareOpe
35073507/// Compares two floats.
35083508/// NOTE: Leaves the result of the comparison on top of the stack.
35093509fn cmpFloat(cg: *CodeGen, ty: Type, lhs: WValue, rhs: WValue, cmp_op: std.math.CompareOperator) InnerError!WValue {
3510 const float_bits = ty.floatBits(cg.target.*);
3510 const float_bits = ty.floatBits(cg.target);
35113511
35123512 const op: Op = switch (cmp_op) {
35133513 .lt => .lt,
......@@ -4919,7 +4919,7 @@ fn airIntFromFloat(cg: *CodeGen, inst: Air.Inst.Index) InnerError!void {
49194919
49204920 const operand = try cg.resolveInst(ty_op.operand);
49214921 const op_ty = cg.typeOf(ty_op.operand);
4922 const op_bits = op_ty.floatBits(cg.target.*);
4922 const op_bits = op_ty.floatBits(cg.target);
49234923
49244924 const dest_ty = cg.typeOfIndex(inst);
49254925 const dest_info = dest_ty.intInfo(zcu);
......@@ -4973,7 +4973,7 @@ fn airFloatFromInt(cg: *CodeGen, inst: Air.Inst.Index) InnerError!void {
49734973 const op_info = op_ty.intInfo(zcu);
49744974
49754975 const dest_ty = cg.typeOfIndex(inst);
4976 const dest_bits = dest_ty.floatBits(cg.target.*);
4976 const dest_bits = dest_ty.floatBits(cg.target);
49774977
49784978 if (op_info.bits > 128) {
49794979 return cg.fail("TODO: floatFromInt for integers/floats with bitsize {d} bits", .{op_info.bits});
......@@ -5567,8 +5567,8 @@ fn airFpext(cg: *CodeGen, inst: Air.Inst.Index) InnerError!void {
55675567/// Extends a float from a given `Type` to a larger wanted `Type`, leaving the
55685568/// result on the stack.
55695569fn fpext(cg: *CodeGen, operand: WValue, given: Type, wanted: Type) InnerError!WValue {
5570 const given_bits = given.floatBits(cg.target.*);
5571 const wanted_bits = wanted.floatBits(cg.target.*);
5570 const given_bits = given.floatBits(cg.target);
5571 const wanted_bits = wanted.floatBits(cg.target);
55725572
55735573 const intrinsic: Mir.Intrinsic = switch (given_bits) {
55745574 16 => switch (wanted_bits) {
......@@ -5621,8 +5621,8 @@ fn airFptrunc(cg: *CodeGen, inst: Air.Inst.Index) InnerError!void {
56215621/// Truncates a float from a given `Type` to its wanted `Type`, leaving the
56225622/// result on the stack.
56235623fn fptrunc(cg: *CodeGen, operand: WValue, given: Type, wanted: Type) InnerError!WValue {
5624 const given_bits = given.floatBits(cg.target.*);
5625 const wanted_bits = wanted.floatBits(cg.target.*);
5624 const given_bits = given.floatBits(cg.target);
5625 const wanted_bits = wanted.floatBits(cg.target);
56265626
56275627 const intrinsic: Mir.Intrinsic = switch (given_bits) {
56285628 32 => switch (wanted_bits) {
......@@ -6231,7 +6231,7 @@ fn airMaxMin(
62316231
62326232 if (ty.zigTypeTag(zcu) == .float) {
62336233 const intrinsic = switch (op) {
6234 inline .fmin, .fmax => |ct_op| switch (ty.floatBits(cg.target.*)) {
6234 inline .fmin, .fmax => |ct_op| switch (ty.floatBits(cg.target)) {
62356235 inline 16, 32, 64, 80, 128 => |bits| @field(
62366236 Mir.Intrinsic,
62376237 libcFloatPrefix(bits) ++ @tagName(ct_op) ++ libcFloatSuffix(bits),
......@@ -6268,7 +6268,7 @@ fn airMulAdd(cg: *CodeGen, inst: Air.Inst.Index) InnerError!void {
62686268 const lhs = try cg.resolveInst(bin_op.lhs);
62696269 const rhs = try cg.resolveInst(bin_op.rhs);
62706270
6271 const result = if (ty.floatBits(cg.target.*) == 16) fl_result: {
6271 const result = if (ty.floatBits(cg.target) == 16) fl_result: {
62726272 const rhs_ext = try cg.fpext(rhs, ty, Type.f32);
62736273 const lhs_ext = try cg.fpext(lhs, ty, Type.f32);
62746274 const addend_ext = try cg.fpext(addend, ty, Type.f32);
......@@ -6667,7 +6667,7 @@ fn airDivFloor(cg: *CodeGen, inst: Air.Inst.Index) InnerError!void {
66676667 _ = try cg.wrapOperand(.stack, ty);
66686668 }
66696669 } else {
6670 const float_bits = ty.floatBits(cg.target.*);
6670 const float_bits = ty.floatBits(cg.target);
66716671 if (float_bits > 64) {
66726672 return cg.fail("TODO: `@divFloor` for floats with bitsize: {d}", .{float_bits});
66736673 }
src/arch/x86_64/CodeGen.zig+11695-7272
......@@ -32,88 +32,47 @@ const FrameIndex = bits.FrameIndex;
3232
3333const InnerError = codegen.CodeGenError || error{OutOfRegisters};
3434
35pub fn legalizeFeatures(target: *const std.Target) *const Air.Legalize.Features {
36 @setEvalBranchQuota(1_200);
37 return switch (target.ofmt == .coff) {
38 inline false, true => |use_old| comptime &.init(.{
39 .scalarize_add = use_old,
40 .scalarize_add_sat = use_old,
41 .scalarize_sub = use_old,
42 .scalarize_sub_sat = use_old,
43 .scalarize_mul = use_old,
44 .scalarize_mul_wrap = use_old,
45 .scalarize_mul_sat = true,
46 .scalarize_div_float = use_old,
47 .scalarize_div_float_optimized = use_old,
48 .scalarize_div_trunc = use_old,
49 .scalarize_div_trunc_optimized = use_old,
50 .scalarize_div_floor = true,
51 .scalarize_div_floor_optimized = use_old,
52 .scalarize_div_exact = use_old,
53 .scalarize_div_exact_optimized = use_old,
54 .scalarize_mod = true,
55 .scalarize_max = use_old,
56 .scalarize_min = use_old,
57 .scalarize_add_with_overflow = true,
58 .scalarize_sub_with_overflow = true,
59 .scalarize_mul_with_overflow = true,
60 .scalarize_shl_with_overflow = true,
61 .scalarize_bit_and = use_old,
62 .scalarize_bit_or = use_old,
63 .scalarize_shr = true,
64 .scalarize_shr_exact = true,
65 .scalarize_shl = true,
66 .scalarize_shl_exact = true,
67 .scalarize_shl_sat = true,
68 .scalarize_xor = use_old,
69 .scalarize_not = use_old,
70 .scalarize_bitcast = true,
71 .scalarize_clz = use_old,
72 .scalarize_ctz = true,
73 .scalarize_popcount = true,
74 .scalarize_byte_swap = true,
75 .scalarize_bit_reverse = true,
76 .scalarize_sin = use_old,
77 .scalarize_cos = use_old,
78 .scalarize_tan = use_old,
79 .scalarize_exp = use_old,
80 .scalarize_exp2 = use_old,
81 .scalarize_log = use_old,
82 .scalarize_log2 = use_old,
83 .scalarize_log10 = use_old,
84 .scalarize_abs = use_old,
85 .scalarize_floor = use_old,
86 .scalarize_ceil = use_old,
87 .scalarize_trunc_float = use_old,
88 .scalarize_cmp_vector = true,
89 .scalarize_cmp_vector_optimized = true,
90 .scalarize_fptrunc = use_old,
91 .scalarize_fpext = use_old,
92 .scalarize_intcast = use_old,
93 .scalarize_int_from_float = use_old,
94 .scalarize_int_from_float_optimized = use_old,
95 .scalarize_float_from_int = use_old,
96 .scalarize_shuffle_one = true,
97 .scalarize_shuffle_two = true,
98 .scalarize_select = true,
99 .scalarize_mul_add = use_old,
100
101 .unsplat_shift_rhs = false,
102 .reduce_one_elem_to_bitcast = true,
103
104 .expand_intcast_safe = true,
105 .expand_int_from_float_safe = true,
106 .expand_int_from_float_optimized_safe = true,
107 .expand_add_safe = true,
108 .expand_sub_safe = true,
109 .expand_mul_safe = true,
110
111 .expand_packed_load = true,
112 .expand_packed_store = true,
113 .expand_packed_struct_field_val = true,
114 .expand_packed_aggregate_init = true,
115 }),
116 };
35pub fn legalizeFeatures(_: *const std.Target) *const Air.Legalize.Features {
36 return comptime &.initMany(&.{
37 .scalarize_mul_sat,
38 .scalarize_div_floor,
39 .scalarize_mod,
40 .scalarize_add_with_overflow,
41 .scalarize_sub_with_overflow,
42 .scalarize_mul_with_overflow,
43 .scalarize_shl_with_overflow,
44 .scalarize_shr,
45 .scalarize_shr_exact,
46 .scalarize_shl,
47 .scalarize_shl_exact,
48 .scalarize_shl_sat,
49 .scalarize_bitcast,
50 .scalarize_ctz,
51 .scalarize_popcount,
52 .scalarize_byte_swap,
53 .scalarize_bit_reverse,
54 .scalarize_cmp_vector,
55 .scalarize_cmp_vector_optimized,
56 .scalarize_shuffle_one,
57 .scalarize_shuffle_two,
58 .scalarize_select,
59
60 //.unsplat_shift_rhs,
61 .reduce_one_elem_to_bitcast,
62 .splat_one_elem_to_bitcast,
63
64 .expand_intcast_safe,
65 .expand_int_from_float_safe,
66 .expand_int_from_float_optimized_safe,
67 .expand_add_safe,
68 .expand_sub_safe,
69 .expand_mul_safe,
70
71 .expand_packed_load,
72 .expand_packed_store,
73 .expand_packed_struct_field_val,
74 .expand_packed_aggregate_init,
75 });
11776}
11877
11978/// Set this to `false` to uncover Sema OPV bugs.
......@@ -246,6 +205,7 @@ pub const MCValue = union(enum) {
246205 memory: u64,
247206 /// The value is in memory at a constant offset from the address in a register.
248207 indirect: bits.RegisterOffset,
208 indirect_load_frame: bits.FrameAddr,
249209 /// The value stored at an offset from a frame index
250210 /// Payload is a frame address.
251211 load_frame: bits.FrameAddr,
......@@ -279,6 +239,7 @@ pub const MCValue = union(enum) {
279239 .register_mask,
280240 .eflags,
281241 .register_overflow,
242 .indirect_load_frame,
282243 .lea_frame,
283244 .lea_nav,
284245 .load_uav,
......@@ -417,6 +378,7 @@ pub const MCValue = union(enum) {
417378 0 => .{ .register = reg_off.reg },
418379 else => .{ .register_offset = reg_off },
419380 },
381 .indirect_load_frame => |frame_addr| .{ .load_frame = frame_addr },
420382 .load_frame => |frame_addr| .{ .lea_frame = frame_addr },
421383 .load_nav => |nav| .{ .lea_nav = nav },
422384 .load_uav => |uav| .{ .lea_uav = uav },
......@@ -439,7 +401,7 @@ pub const MCValue = union(enum) {
439401 .register_mask,
440402 .memory,
441403 .indirect,
442 .load_frame,
404 .indirect_load_frame,
443405 .load_nav,
444406 .load_uav,
445407 .load_lazy_sym,
......@@ -451,6 +413,7 @@ pub const MCValue = union(enum) {
451413 .immediate => |addr| .{ .memory = addr },
452414 .register => |reg| .{ .indirect = .{ .reg = reg } },
453415 .register_offset => |reg_off| .{ .indirect = reg_off },
416 .load_frame => |frame_addr| .{ .indirect_load_frame = frame_addr },
454417 .lea_frame => |frame_addr| .{ .load_frame = frame_addr },
455418 .lea_nav => |nav| .{ .load_nav = nav },
456419 .lea_uav => |uav| .{ .load_uav = uav },
......@@ -477,6 +440,7 @@ pub const MCValue = union(enum) {
477440 .register_mask,
478441 .memory,
479442 .indirect,
443 .indirect_load_frame,
480444 .load_frame,
481445 .load_nav,
482446 .lea_nav,
......@@ -516,6 +480,7 @@ pub const MCValue = union(enum) {
516480 .register_offset,
517481 .register_overflow,
518482 .register_mask,
483 .indirect_load_frame,
519484 .lea_frame,
520485 .elementwise_args,
521486 .reserved_frame,
......@@ -589,6 +554,7 @@ pub const MCValue = union(enum) {
589554 @tagName(pl.reg),
590555 }),
591556 .indirect => |pl| try writer.print("[{s} + 0x{x}]", .{ @tagName(pl.reg), pl.off }),
557 .indirect_load_frame => |pl| try writer.print("[[{} + 0x{x}]]", .{ pl.index, pl.off }),
592558 .load_frame => |pl| try writer.print("[{} + 0x{x}]", .{ pl.index, pl.off }),
593559 .lea_frame => |pl| try writer.print("{} + 0x{x}", .{ pl.index, pl.off }),
594560 .load_nav => |pl| try writer.print("[nav:{d}]", .{@intFromEnum(pl)}),
......@@ -621,6 +587,7 @@ const InstTracking = struct {
621587 .undef,
622588 .immediate,
623589 .memory,
590 .indirect_load_frame,
624591 .load_frame,
625592 .lea_frame,
626593 .load_nav,
......@@ -724,6 +691,7 @@ const InstTracking = struct {
724691 .undef,
725692 .immediate,
726693 .memory,
694 .indirect_load_frame,
727695 .lea_frame,
728696 .load_nav,
729697 .lea_nav,
......@@ -795,9 +763,9 @@ const InstTracking = struct {
795763 }
796764 }
797765
798 fn die(self: *InstTracking, function: *CodeGen, inst: Air.Inst.Index) !void {
766 fn die(self: *InstTracking, function: *CodeGen, inst: Air.Inst.Index, comptime opts: FreeOptions) !void {
799767 if (self.short == .dead) return;
800 try function.freeValue(self.short);
768 try function.freeValue(self.short, opts);
801769 if (self.long == .none) self.long = self.short;
802770 self.short = .{ .dead = function.scope_generation };
803771 tracking_log.debug("{} => {} (death)", .{ inst, self.* });
......@@ -2356,13 +2324,12 @@ fn genBodyBlock(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
23562324}
23572325
23582326fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2359 @setEvalBranchQuota(28_700);
2327 @setEvalBranchQuota(29_400);
23602328 const pt = cg.pt;
23612329 const zcu = pt.zcu;
23622330 const ip = &zcu.intern_pool;
23632331 const air_tags = cg.air.instructions.items(.tag);
23642332 const air_datas = cg.air.instructions.items(.data);
2365 const use_old = cg.target.ofmt == .coff;
23662333
23672334 for (body) |inst| {
23682335 if (cg.liveness.isUnused(inst) and !cg.air.mustLower(inst, ip)) continue;
......@@ -2372,17 +2339,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
23722339 cg.reused_operands = .initEmpty();
23732340 try cg.inst_tracking.ensureUnusedCapacity(cg.gpa, 1);
23742341 switch (air_tags[@intFromEnum(inst)]) {
2375 // zig fmt: off
2376 .select => try cg.airSelect(inst),
2342 .select => try cg.airSelect(inst),
23772343 .shuffle_one, .shuffle_two => @panic("x86_64 TODO: shuffle_one/shuffle_two"),
2378 // zig fmt: on
23792344
23802345 .arg => try cg.airArg(inst),
2381 .add, .add_optimized, .add_wrap => |air_tag| if (use_old) try cg.airBinOp(inst, switch (air_tag) {
2382 else => unreachable,
2383 .add, .add_optimized => .add,
2384 .add_wrap => .add_wrap,
2385 }) else {
2346 .add, .add_optimized, .add_wrap => |air_tag| {
23862347 const bin_op = air_datas[@intFromEnum(inst)].bin_op;
23872348 var ops = try cg.tempsFromOperands(inst, .{ bin_op.lhs, bin_op.rhs });
23882349 var res: [1]Temp = undefined;
......@@ -3393,7 +3354,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
33933354 .any,
33943355 },
33953356 .patterns = &.{
3396 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } },
3357 .{ .src = .{
3358 .{ .to_param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } },
3359 .{ .to_param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } },
3360 .none,
3361 } },
33973362 },
33983363 .call_frame = .{ .alignment = .@"16" },
33993364 .extra_temps = .{
......@@ -3527,8 +3492,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
35273492 .call_frame = .{ .alignment = .@"16" },
35283493 .extra_temps = .{
35293494 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
3530 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
3531 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
3495 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
3496 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
35323497 .{ .type = .usize, .kind = .{ .extern_func = "__addhf3" } },
35333498 .unused,
35343499 .unused,
......@@ -3563,8 +3528,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
35633528 .call_frame = .{ .alignment = .@"16" },
35643529 .extra_temps = .{
35653530 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
3566 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
3567 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
3531 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
3532 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
35683533 .{ .type = .usize, .kind = .{ .extern_func = "__addhf3" } },
35693534 .unused,
35703535 .unused,
......@@ -3600,8 +3565,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
36003565 .call_frame = .{ .alignment = .@"16" },
36013566 .extra_temps = .{
36023567 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
3603 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
3604 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
3568 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
3569 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
36053570 .{ .type = .usize, .kind = .{ .extern_func = "__addhf3" } },
36063571 .{ .type = .f16, .kind = .{ .reg = .ax } },
36073572 .unused,
......@@ -3640,8 +3605,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
36403605 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
36413606 .{ .type = .f16, .kind = .{ .reg = .ax } },
36423607 .{ .type = .f32, .kind = .mem },
3643 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
3644 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
3608 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
3609 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
36453610 .{ .type = .usize, .kind = .{ .extern_func = "__addhf3" } },
36463611 .unused,
36473612 .unused,
......@@ -4021,6 +3986,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
40213986 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
40223987 } },
40233988 }, .{
3989 .required_abi = .gnu,
40243990 .required_features = .{ .x87, null, null, null },
40253991 .src_constraints = .{
40263992 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
......@@ -4051,6 +4017,44 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
40514017 .{ ._, .f_p, .st, .dst0t, ._, ._, ._ },
40524018 } },
40534019 }, .{
4020 .required_abi = .msvc,
4021 .required_features = .{ .x87, null, null, null },
4022 .src_constraints = .{
4023 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
4024 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
4025 .any,
4026 },
4027 .patterns = &.{
4028 .{ .src = .{ .mem, .mem, .none } },
4029 },
4030 .extra_temps = .{
4031 .{ .type = .f80, .kind = .{ .reg = .st6 } },
4032 .{ .type = .f80, .kind = .{ .reg = .st7 } },
4033 .{ .type = .u16, .kind = .mem },
4034 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
4035 .unused,
4036 .unused,
4037 .unused,
4038 .unused,
4039 .unused,
4040 .unused,
4041 .unused,
4042 },
4043 .dst_temps = .{ .{ .rc = .x87 }, .unused },
4044 .each = .{ .once = &.{
4045 .{ ._, .f_, .ld, .src0t, ._, ._, ._ },
4046 .{ ._, .f_, .ld, .src1t, ._, ._, ._ },
4047 .{ ._, .fn_cw, .st, .tmp2w, ._, ._, ._ },
4048 .{ ._, ._, .movzx, .tmp3d, .memd(.tmp2b, 1), ._, ._ },
4049 .{ ._, ._, .@"or", .memd(.tmp2b, 1), .ui(0b000_0_00_11), ._, ._ },
4050 .{ ._, .f_cw, .ld, .tmp2w, ._, ._, ._ },
4051 .{ ._, ._, .mov, .memd(.tmp2b, 1), .tmp3b, ._, ._ },
4052 .{ ._, .f_p, .add, ._, ._, ._, ._ },
4053 .{ ._, .f_cw, .ld, .tmp2w, ._, ._, ._ },
4054 .{ ._, .f_p, .st, .dst0t, ._, ._, ._ },
4055 } },
4056 }, .{
4057 .required_abi = .gnu,
40544058 .required_features = .{ .x87, null, null, null },
40554059 .src_constraints = .{
40564060 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
......@@ -4082,6 +4086,45 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
40824086 .{ ._, .f_p, .st, .dst0t, ._, ._, ._ },
40834087 } },
40844088 }, .{
4089 .required_abi = .msvc,
4090 .required_features = .{ .x87, null, null, null },
4091 .src_constraints = .{
4092 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
4093 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
4094 .any,
4095 },
4096 .patterns = &.{
4097 .{ .src = .{ .to_x87, .mem, .none }, .commute = .{ 0, 1 } },
4098 .{ .src = .{ .mem, .to_x87, .none } },
4099 .{ .src = .{ .to_x87, .to_x87, .none } },
4100 },
4101 .extra_temps = .{
4102 .{ .type = .f80, .kind = .{ .reg = .st7 } },
4103 .{ .type = .u16, .kind = .mem },
4104 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
4105 .unused,
4106 .unused,
4107 .unused,
4108 .unused,
4109 .unused,
4110 .unused,
4111 .unused,
4112 .unused,
4113 },
4114 .dst_temps = .{ .{ .rc = .x87 }, .unused },
4115 .each = .{ .once = &.{
4116 .{ ._, .f_, .ld, .src0t, ._, ._, ._ },
4117 .{ ._, .fn_cw, .st, .tmp1w, ._, ._, ._ },
4118 .{ ._, ._, .movzx, .tmp2d, .memd(.tmp1b, 1), ._, ._ },
4119 .{ ._, ._, .@"or", .memd(.tmp1b, 1), .ui(0b000_0_00_11), ._, ._ },
4120 .{ ._, .f_cw, .ld, .tmp1w, ._, ._, ._ },
4121 .{ ._, ._, .mov, .memd(.tmp1b, 1), .tmp2b, ._, ._ },
4122 .{ ._, .f_, .add, .tmp0t, .src1t, ._, ._ },
4123 .{ ._, .f_cw, .ld, .tmp1w, ._, ._, ._ },
4124 .{ ._, .f_p, .st, .dst0t, ._, ._, ._ },
4125 } },
4126 }, .{
4127 .required_abi = .gnu,
40854128 .required_features = .{ .x87, null, null, null },
40864129 .src_constraints = .{
40874130 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
......@@ -4115,6 +4158,47 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
41154158 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
41164159 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
41174160 } },
4161 }, .{
4162 .required_abi = .msvc,
4163 .required_features = .{ .x87, null, null, null },
4164 .src_constraints = .{
4165 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
4166 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
4167 .any,
4168 },
4169 .patterns = &.{
4170 .{ .src = .{ .to_mem, .to_mem, .none } },
4171 },
4172 .extra_temps = .{
4173 .{ .type = .u16, .kind = .mem },
4174 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
4175 .{ .type = .f80, .kind = .{ .reg = .st6 } },
4176 .{ .type = .f80, .kind = .{ .reg = .st7 } },
4177 .unused,
4178 .unused,
4179 .unused,
4180 .unused,
4181 .unused,
4182 .unused,
4183 .unused,
4184 },
4185 .dst_temps = .{ .mem, .unused },
4186 .clobbers = .{ .eflags = true },
4187 .each = .{ .once = &.{
4188 .{ ._, .fn_cw, .st, .tmp0w, ._, ._, ._ },
4189 .{ ._, ._, .movzx, .tmp1d, .memd(.tmp0b, 1), ._, ._ },
4190 .{ ._, ._, .@"or", .memd(.tmp0b, 1), .ui(0b000_0_00_11), ._, ._ },
4191 .{ ._, .f_cw, .ld, .tmp0w, ._, ._, ._ },
4192 .{ ._, ._, .mov, .memd(.tmp0b, 1), .tmp1b, ._, ._ },
4193 .{ ._, ._, .mov, .tmp1p, .sa(.src0, .sub_unaligned_size), ._, ._ },
4194 .{ .@"0:", .f_, .ld, .memia(.src0t, .tmp1, .add_unaligned_size), ._, ._, ._ },
4195 .{ ._, .f_, .ld, .memia(.src1t, .tmp1, .add_unaligned_size), ._, ._, ._ },
4196 .{ ._, .f_p, .add, ._, ._, ._, ._ },
4197 .{ ._, .f_p, .st, .memia(.dst0t, .tmp1, .add_unaligned_size), ._, ._, ._ },
4198 .{ ._, ._, .add, .tmp1p, .si(16), ._, ._ },
4199 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
4200 .{ ._, .f_cw, .ld, .tmp0w, ._, ._, ._ },
4201 } },
41184202 }, .{
41194203 .required_features = .{ .sse, null, null, null },
41204204 .src_constraints = .{
......@@ -4123,7 +4207,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
41234207 .any,
41244208 },
41254209 .patterns = &.{
4126 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } },
4210 .{ .src = .{
4211 .{ .to_param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } },
4212 .{ .to_param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } },
4213 .none,
4214 } },
41274215 },
41284216 .call_frame = .{ .alignment = .@"16" },
41294217 .extra_temps = .{
......@@ -4157,8 +4245,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
41574245 .call_frame = .{ .alignment = .@"16" },
41584246 .extra_temps = .{
41594247 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
4160 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
4161 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
4248 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
4249 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
41624250 .{ .type = .usize, .kind = .{ .extern_func = "__addtf3" } },
41634251 .unused,
41644252 .unused,
......@@ -4192,8 +4280,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
41924280 .call_frame = .{ .alignment = .@"16" },
41934281 .extra_temps = .{
41944282 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
4195 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
4196 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
4283 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
4284 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
41974285 .{ .type = .usize, .kind = .{ .extern_func = "__addtf3" } },
41984286 .unused,
41994287 .unused,
......@@ -4227,8 +4315,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
42274315 .call_frame = .{ .alignment = .@"16" },
42284316 .extra_temps = .{
42294317 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
4230 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
4231 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
4318 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
4319 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
42324320 .{ .type = .usize, .kind = .{ .extern_func = "__addtf3" } },
42334321 .unused,
42344322 .unused,
......@@ -4273,7 +4361,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
42734361 try res[0].finish(inst, &.{ bin_op.lhs, bin_op.rhs }, &ops, cg);
42744362 },
42754363 .add_safe => unreachable,
4276 .add_sat => |air_tag| if (use_old) try cg.airAddSat(inst) else {
4364 .add_sat => |air_tag| {
42774365 const bin_op = air_datas[@intFromEnum(inst)].bin_op;
42784366 var ops = try cg.tempsFromOperands(inst, .{ bin_op.lhs, bin_op.rhs });
42794367 var res: [1]Temp = undefined;
......@@ -12838,11 +12926,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1283812926 };
1283912927 try res[0].finish(inst, &.{ bin_op.lhs, bin_op.rhs }, &ops, cg);
1284012928 },
12841 .sub, .sub_optimized, .sub_wrap => |air_tag| if (use_old) try cg.airBinOp(inst, switch (air_tag) {
12842 else => unreachable,
12843 .sub, .sub_optimized => .sub,
12844 .sub_wrap => .sub_wrap,
12845 }) else {
12929 .sub, .sub_optimized, .sub_wrap => |air_tag| {
1284612930 const bin_op = air_datas[@intFromEnum(inst)].bin_op;
1284712931 var ops = try cg.tempsFromOperands(inst, .{ bin_op.lhs, bin_op.rhs });
1284812932 var res: [1]Temp = undefined;
......@@ -13825,7 +13909,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1382513909 .any,
1382613910 },
1382713911 .patterns = &.{
13828 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } },
13912 .{ .src = .{
13913 .{ .to_param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } },
13914 .{ .to_param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } },
13915 .none,
13916 } },
1382913917 },
1383013918 .call_frame = .{ .alignment = .@"16" },
1383113919 .extra_temps = .{
......@@ -13959,8 +14047,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1395914047 .call_frame = .{ .alignment = .@"16" },
1396014048 .extra_temps = .{
1396114049 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
13962 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
13963 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
14050 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
14051 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
1396414052 .{ .type = .usize, .kind = .{ .extern_func = "__subhf3" } },
1396514053 .unused,
1396614054 .unused,
......@@ -13995,8 +14083,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1399514083 .call_frame = .{ .alignment = .@"16" },
1399614084 .extra_temps = .{
1399714085 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
13998 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
13999 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
14086 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
14087 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
1400014088 .{ .type = .usize, .kind = .{ .extern_func = "__subhf3" } },
1400114089 .unused,
1400214090 .unused,
......@@ -14032,8 +14120,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1403214120 .call_frame = .{ .alignment = .@"16" },
1403314121 .extra_temps = .{
1403414122 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
14035 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
14036 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
14123 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
14124 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
1403714125 .{ .type = .usize, .kind = .{ .extern_func = "__subhf3" } },
1403814126 .{ .type = .f16, .kind = .{ .reg = .ax } },
1403914127 .unused,
......@@ -14072,8 +14160,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1407214160 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
1407314161 .{ .type = .f16, .kind = .{ .reg = .ax } },
1407414162 .{ .type = .f32, .kind = .mem },
14075 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
14076 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
14163 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
14164 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
1407714165 .{ .type = .usize, .kind = .{ .extern_func = "__subhf3" } },
1407814166 .unused,
1407914167 .unused,
......@@ -14442,6 +14530,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1444214530 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
1444314531 } },
1444414532 }, .{
14533 .required_abi = .gnu,
1444514534 .required_features = .{ .x87, null, null, null },
1444614535 .src_constraints = .{
1444714536 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
......@@ -14472,6 +14561,44 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1447214561 .{ ._, .f_p, .st, .dst0t, ._, ._, ._ },
1447314562 } },
1447414563 }, .{
14564 .required_abi = .msvc,
14565 .required_features = .{ .x87, null, null, null },
14566 .src_constraints = .{
14567 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
14568 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
14569 .any,
14570 },
14571 .patterns = &.{
14572 .{ .src = .{ .mem, .mem, .none } },
14573 },
14574 .extra_temps = .{
14575 .{ .type = .f80, .kind = .{ .reg = .st6 } },
14576 .{ .type = .f80, .kind = .{ .reg = .st7 } },
14577 .{ .type = .u16, .kind = .mem },
14578 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
14579 .unused,
14580 .unused,
14581 .unused,
14582 .unused,
14583 .unused,
14584 .unused,
14585 .unused,
14586 },
14587 .dst_temps = .{ .{ .rc = .x87 }, .unused },
14588 .each = .{ .once = &.{
14589 .{ ._, .f_, .ld, .src0t, ._, ._, ._ },
14590 .{ ._, .f_, .ld, .src1t, ._, ._, ._ },
14591 .{ ._, .fn_cw, .st, .tmp2w, ._, ._, ._ },
14592 .{ ._, ._, .movzx, .tmp3d, .memd(.tmp2b, 1), ._, ._ },
14593 .{ ._, ._, .@"or", .memd(.tmp2b, 1), .ui(0b000_0_00_11), ._, ._ },
14594 .{ ._, .f_cw, .ld, .tmp2w, ._, ._, ._ },
14595 .{ ._, ._, .mov, .memd(.tmp2b, 1), .tmp3b, ._, ._ },
14596 .{ ._, .f_p, .sub, ._, ._, ._, ._ },
14597 .{ ._, .f_cw, .ld, .tmp2w, ._, ._, ._ },
14598 .{ ._, .f_p, .st, .dst0t, ._, ._, ._ },
14599 } },
14600 }, .{
14601 .required_abi = .gnu,
1447514602 .required_features = .{ .x87, null, null, null },
1447614603 .src_constraints = .{
1447714604 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
......@@ -14501,6 +14628,43 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1450114628 .{ ._, .f_p, .st, .dst0t, ._, ._, ._ },
1450214629 } },
1450314630 }, .{
14631 .required_abi = .msvc,
14632 .required_features = .{ .x87, null, null, null },
14633 .src_constraints = .{
14634 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
14635 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
14636 .any,
14637 },
14638 .patterns = &.{
14639 .{ .src = .{ .to_x87, .mem, .none }, .commute = .{ 0, 1 } },
14640 },
14641 .extra_temps = .{
14642 .{ .type = .f80, .kind = .{ .reg = .st7 } },
14643 .{ .type = .u16, .kind = .mem },
14644 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
14645 .unused,
14646 .unused,
14647 .unused,
14648 .unused,
14649 .unused,
14650 .unused,
14651 .unused,
14652 .unused,
14653 },
14654 .dst_temps = .{ .{ .rc = .x87 }, .unused },
14655 .each = .{ .once = &.{
14656 .{ ._, .f_, .ld, .src0t, ._, ._, ._ },
14657 .{ ._, .fn_cw, .st, .tmp1w, ._, ._, ._ },
14658 .{ ._, ._, .movzx, .tmp2d, .memd(.tmp1b, 1), ._, ._ },
14659 .{ ._, ._, .@"or", .memd(.tmp1b, 1), .ui(0b000_0_00_11), ._, ._ },
14660 .{ ._, .f_cw, .ld, .tmp1w, ._, ._, ._ },
14661 .{ ._, ._, .mov, .memd(.tmp1b, 1), .tmp2b, ._, ._ },
14662 .{ ._, .f_, .subr, .tmp0t, .src1t, ._, ._ },
14663 .{ ._, .f_cw, .ld, .tmp1w, ._, ._, ._ },
14664 .{ ._, .f_p, .st, .dst0t, ._, ._, ._ },
14665 } },
14666 }, .{
14667 .required_abi = .gnu,
1450414668 .required_features = .{ .x87, null, null, null },
1450514669 .src_constraints = .{
1450614670 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
......@@ -14531,6 +14695,44 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1453114695 .{ ._, .f_p, .st, .dst0t, ._, ._, ._ },
1453214696 } },
1453314697 }, .{
14698 .required_abi = .msvc,
14699 .required_features = .{ .x87, null, null, null },
14700 .src_constraints = .{
14701 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
14702 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
14703 .any,
14704 },
14705 .patterns = &.{
14706 .{ .src = .{ .mem, .to_x87, .none } },
14707 .{ .src = .{ .to_x87, .to_x87, .none } },
14708 },
14709 .extra_temps = .{
14710 .{ .type = .f80, .kind = .{ .reg = .st7 } },
14711 .{ .type = .u16, .kind = .mem },
14712 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
14713 .unused,
14714 .unused,
14715 .unused,
14716 .unused,
14717 .unused,
14718 .unused,
14719 .unused,
14720 .unused,
14721 },
14722 .dst_temps = .{ .{ .rc = .x87 }, .unused },
14723 .each = .{ .once = &.{
14724 .{ ._, .f_, .ld, .src0t, ._, ._, ._ },
14725 .{ ._, .fn_cw, .st, .tmp1w, ._, ._, ._ },
14726 .{ ._, ._, .movzx, .tmp2d, .memd(.tmp1b, 1), ._, ._ },
14727 .{ ._, ._, .@"or", .memd(.tmp1b, 1), .ui(0b000_0_00_11), ._, ._ },
14728 .{ ._, .f_cw, .ld, .tmp1w, ._, ._, ._ },
14729 .{ ._, ._, .mov, .memd(.tmp1b, 1), .tmp2b, ._, ._ },
14730 .{ ._, .f_, .sub, .tmp0t, .src1t, ._, ._ },
14731 .{ ._, .f_cw, .ld, .tmp1w, ._, ._, ._ },
14732 .{ ._, .f_p, .st, .dst0t, ._, ._, ._ },
14733 } },
14734 }, .{
14735 .required_abi = .gnu,
1453414736 .required_features = .{ .x87, null, null, null },
1453514737 .src_constraints = .{
1453614738 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
......@@ -14564,6 +14766,47 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1456414766 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
1456514767 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
1456614768 } },
14769 }, .{
14770 .required_abi = .msvc,
14771 .required_features = .{ .x87, null, null, null },
14772 .src_constraints = .{
14773 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
14774 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
14775 .any,
14776 },
14777 .patterns = &.{
14778 .{ .src = .{ .to_mem, .to_mem, .none } },
14779 },
14780 .extra_temps = .{
14781 .{ .type = .u16, .kind = .mem },
14782 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
14783 .{ .type = .f80, .kind = .{ .reg = .st6 } },
14784 .{ .type = .f80, .kind = .{ .reg = .st7 } },
14785 .unused,
14786 .unused,
14787 .unused,
14788 .unused,
14789 .unused,
14790 .unused,
14791 .unused,
14792 },
14793 .dst_temps = .{ .mem, .unused },
14794 .clobbers = .{ .eflags = true },
14795 .each = .{ .once = &.{
14796 .{ ._, .fn_cw, .st, .tmp0w, ._, ._, ._ },
14797 .{ ._, ._, .movzx, .tmp1d, .memd(.tmp0b, 1), ._, ._ },
14798 .{ ._, ._, .@"or", .memd(.tmp0b, 1), .ui(0b000_0_00_11), ._, ._ },
14799 .{ ._, .f_cw, .ld, .tmp0w, ._, ._, ._ },
14800 .{ ._, ._, .mov, .memd(.tmp0b, 1), .tmp1b, ._, ._ },
14801 .{ ._, ._, .mov, .tmp1p, .sa(.src0, .sub_unaligned_size), ._, ._ },
14802 .{ .@"0:", .f_, .ld, .memia(.src0t, .tmp1, .add_unaligned_size), ._, ._, ._ },
14803 .{ ._, .f_, .ld, .memia(.src1t, .tmp1, .add_unaligned_size), ._, ._, ._ },
14804 .{ ._, .f_p, .sub, ._, ._, ._, ._ },
14805 .{ ._, .f_p, .st, .memia(.dst0t, .tmp1, .add_unaligned_size), ._, ._, ._ },
14806 .{ ._, ._, .add, .tmp1p, .si(16), ._, ._ },
14807 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
14808 .{ ._, .f_cw, .ld, .tmp0w, ._, ._, ._ },
14809 } },
1456714810 }, .{
1456814811 .required_features = .{ .sse, null, null, null },
1456914812 .src_constraints = .{
......@@ -14572,7 +14815,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1457214815 .any,
1457314816 },
1457414817 .patterns = &.{
14575 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } },
14818 .{ .src = .{
14819 .{ .to_param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } },
14820 .{ .to_param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } },
14821 .none,
14822 } },
1457614823 },
1457714824 .call_frame = .{ .alignment = .@"16" },
1457814825 .extra_temps = .{
......@@ -14606,8 +14853,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1460614853 .call_frame = .{ .alignment = .@"16" },
1460714854 .extra_temps = .{
1460814855 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
14609 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
14610 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
14856 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
14857 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
1461114858 .{ .type = .usize, .kind = .{ .extern_func = "__subtf3" } },
1461214859 .unused,
1461314860 .unused,
......@@ -14641,8 +14888,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1464114888 .call_frame = .{ .alignment = .@"16" },
1464214889 .extra_temps = .{
1464314890 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
14644 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
14645 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
14891 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
14892 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
1464614893 .{ .type = .usize, .kind = .{ .extern_func = "__subtf3" } },
1464714894 .unused,
1464814895 .unused,
......@@ -14676,8 +14923,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1467614923 .call_frame = .{ .alignment = .@"16" },
1467714924 .extra_temps = .{
1467814925 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
14679 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
14680 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
14926 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
14927 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
1468114928 .{ .type = .usize, .kind = .{ .extern_func = "__subtf3" } },
1468214929 .unused,
1468314930 .unused,
......@@ -14722,7 +14969,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1472214969 try res[0].finish(inst, &.{ bin_op.lhs, bin_op.rhs }, &ops, cg);
1472314970 },
1472414971 .sub_safe => unreachable,
14725 .sub_sat => |air_tag| if (use_old) try cg.airSubSat(inst) else {
14972 .sub_sat => |air_tag| {
1472614973 const bin_op = air_datas[@intFromEnum(inst)].bin_op;
1472714974 var ops = try cg.tempsFromOperands(inst, .{ bin_op.lhs, bin_op.rhs });
1472814975 var res: [1]Temp = undefined;
......@@ -21556,7 +21803,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2155621803 };
2155721804 try res[0].finish(inst, &.{ bin_op.lhs, bin_op.rhs }, &ops, cg);
2155821805 },
21559 .mul, .mul_optimized => |air_tag| if (use_old) try cg.airMulDivBinOp(inst, .mul) else {
21806 .mul, .mul_optimized => |air_tag| {
2156021807 const bin_op = air_datas[@intFromEnum(inst)].bin_op;
2156121808 const ty = cg.typeOf(bin_op.lhs);
2156221809 var ops = try cg.tempsFromOperands(inst, .{ bin_op.lhs, bin_op.rhs });
......@@ -23355,7 +23602,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2335523602 .any,
2335623603 },
2335723604 .patterns = &.{
23358 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } },
23605 .{ .src = .{
23606 .{ .to_param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } },
23607 .{ .to_param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } },
23608 .none,
23609 } },
2335923610 },
2336023611 .call_frame = .{ .alignment = .@"16" },
2336123612 .extra_temps = .{
......@@ -23489,8 +23740,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2348923740 .call_frame = .{ .alignment = .@"16" },
2349023741 .extra_temps = .{
2349123742 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
23492 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
23493 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
23743 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
23744 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
2349423745 .{ .type = .usize, .kind = .{ .extern_func = "__mulhf3" } },
2349523746 .unused,
2349623747 .unused,
......@@ -23525,8 +23776,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2352523776 .call_frame = .{ .alignment = .@"16" },
2352623777 .extra_temps = .{
2352723778 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
23528 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
23529 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
23779 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
23780 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
2353023781 .{ .type = .usize, .kind = .{ .extern_func = "__mulhf3" } },
2353123782 .unused,
2353223783 .unused,
......@@ -23562,8 +23813,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2356223813 .call_frame = .{ .alignment = .@"16" },
2356323814 .extra_temps = .{
2356423815 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
23565 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
23566 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
23816 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
23817 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
2356723818 .{ .type = .usize, .kind = .{ .extern_func = "__mulhf3" } },
2356823819 .{ .type = .f16, .kind = .{ .reg = .ax } },
2356923820 .unused,
......@@ -23602,8 +23853,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2360223853 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
2360323854 .{ .type = .f16, .kind = .{ .reg = .ax } },
2360423855 .{ .type = .f32, .kind = .mem },
23605 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
23606 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
23856 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
23857 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
2360723858 .{ .type = .usize, .kind = .{ .extern_func = "__mulhf3" } },
2360823859 .unused,
2360923860 .unused,
......@@ -23983,6 +24234,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2398324234 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2398424235 } },
2398524236 }, .{
24237 .required_abi = .gnu,
2398624238 .required_features = .{ .x87, null, null, null },
2398724239 .src_constraints = .{
2398824240 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
......@@ -24013,6 +24265,44 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2401324265 .{ ._, .f_p, .st, .dst0t, ._, ._, ._ },
2401424266 } },
2401524267 }, .{
24268 .required_abi = .msvc,
24269 .required_features = .{ .x87, null, null, null },
24270 .src_constraints = .{
24271 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
24272 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
24273 .any,
24274 },
24275 .patterns = &.{
24276 .{ .src = .{ .mem, .mem, .none } },
24277 },
24278 .extra_temps = .{
24279 .{ .type = .f80, .kind = .{ .reg = .st6 } },
24280 .{ .type = .f80, .kind = .{ .reg = .st7 } },
24281 .{ .type = .u16, .kind = .mem },
24282 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
24283 .unused,
24284 .unused,
24285 .unused,
24286 .unused,
24287 .unused,
24288 .unused,
24289 .unused,
24290 },
24291 .dst_temps = .{ .{ .rc = .x87 }, .unused },
24292 .each = .{ .once = &.{
24293 .{ ._, .f_, .ld, .src0t, ._, ._, ._ },
24294 .{ ._, .f_, .ld, .src1t, ._, ._, ._ },
24295 .{ ._, .fn_cw, .st, .tmp2w, ._, ._, ._ },
24296 .{ ._, ._, .movzx, .tmp3d, .memd(.tmp2b, 1), ._, ._ },
24297 .{ ._, ._, .@"or", .memd(.tmp2b, 1), .ui(0b000_0_00_11), ._, ._ },
24298 .{ ._, .f_cw, .ld, .tmp2w, ._, ._, ._ },
24299 .{ ._, ._, .mov, .memd(.tmp2b, 1), .tmp3b, ._, ._ },
24300 .{ ._, .f_p, .mul, ._, ._, ._, ._ },
24301 .{ ._, .f_cw, .ld, .tmp2w, ._, ._, ._ },
24302 .{ ._, .f_p, .st, .dst0t, ._, ._, ._ },
24303 } },
24304 }, .{
24305 .required_abi = .gnu,
2401624306 .required_features = .{ .x87, null, null, null },
2401724307 .src_constraints = .{
2401824308 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
......@@ -24044,6 +24334,45 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2404424334 .{ ._, .f_p, .st, .dst0t, ._, ._, ._ },
2404524335 } },
2404624336 }, .{
24337 .required_abi = .msvc,
24338 .required_features = .{ .x87, null, null, null },
24339 .src_constraints = .{
24340 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
24341 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
24342 .any,
24343 },
24344 .patterns = &.{
24345 .{ .src = .{ .to_x87, .mem, .none }, .commute = .{ 0, 1 } },
24346 .{ .src = .{ .mem, .to_x87, .none } },
24347 .{ .src = .{ .to_x87, .to_x87, .none } },
24348 },
24349 .extra_temps = .{
24350 .{ .type = .f80, .kind = .{ .reg = .st7 } },
24351 .{ .type = .u16, .kind = .mem },
24352 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
24353 .unused,
24354 .unused,
24355 .unused,
24356 .unused,
24357 .unused,
24358 .unused,
24359 .unused,
24360 .unused,
24361 },
24362 .dst_temps = .{ .{ .rc = .x87 }, .unused },
24363 .each = .{ .once = &.{
24364 .{ ._, .f_, .ld, .src0t, ._, ._, ._ },
24365 .{ ._, .fn_cw, .st, .tmp1w, ._, ._, ._ },
24366 .{ ._, ._, .movzx, .tmp2d, .memd(.tmp1b, 1), ._, ._ },
24367 .{ ._, ._, .@"or", .memd(.tmp1b, 1), .ui(0b000_0_00_11), ._, ._ },
24368 .{ ._, .f_cw, .ld, .tmp1w, ._, ._, ._ },
24369 .{ ._, ._, .mov, .memd(.tmp1b, 1), .tmp2b, ._, ._ },
24370 .{ ._, .f_, .mul, .tmp0t, .src1t, ._, ._ },
24371 .{ ._, .f_cw, .ld, .tmp1w, ._, ._, ._ },
24372 .{ ._, .f_p, .st, .dst0t, ._, ._, ._ },
24373 } },
24374 }, .{
24375 .required_abi = .gnu,
2404724376 .required_features = .{ .x87, null, null, null },
2404824377 .src_constraints = .{
2404924378 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
......@@ -24077,6 +24406,47 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2407724406 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
2407824407 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
2407924408 } },
24409 }, .{
24410 .required_abi = .msvc,
24411 .required_features = .{ .x87, null, null, null },
24412 .src_constraints = .{
24413 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
24414 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
24415 .any,
24416 },
24417 .patterns = &.{
24418 .{ .src = .{ .to_mem, .to_mem, .none } },
24419 },
24420 .extra_temps = .{
24421 .{ .type = .u16, .kind = .mem },
24422 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
24423 .{ .type = .f80, .kind = .{ .reg = .st6 } },
24424 .{ .type = .f80, .kind = .{ .reg = .st7 } },
24425 .unused,
24426 .unused,
24427 .unused,
24428 .unused,
24429 .unused,
24430 .unused,
24431 .unused,
24432 },
24433 .dst_temps = .{ .mem, .unused },
24434 .clobbers = .{ .eflags = true },
24435 .each = .{ .once = &.{
24436 .{ ._, .fn_cw, .st, .tmp0w, ._, ._, ._ },
24437 .{ ._, ._, .movzx, .tmp1d, .memd(.tmp0b, 1), ._, ._ },
24438 .{ ._, ._, .@"or", .memd(.tmp0b, 1), .ui(0b000_0_00_11), ._, ._ },
24439 .{ ._, .f_cw, .ld, .tmp0w, ._, ._, ._ },
24440 .{ ._, ._, .mov, .memd(.tmp0b, 1), .tmp1b, ._, ._ },
24441 .{ ._, ._, .mov, .tmp1p, .sa(.src0, .sub_unaligned_size), ._, ._ },
24442 .{ .@"0:", .f_, .ld, .memia(.src0t, .tmp1, .add_unaligned_size), ._, ._, ._ },
24443 .{ ._, .f_, .ld, .memia(.src1t, .tmp1, .add_unaligned_size), ._, ._, ._ },
24444 .{ ._, .f_p, .mul, ._, ._, ._, ._ },
24445 .{ ._, .f_p, .st, .memia(.dst0t, .tmp1, .add_unaligned_size), ._, ._, ._ },
24446 .{ ._, ._, .add, .tmp1p, .si(16), ._, ._ },
24447 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
24448 .{ ._, .f_cw, .ld, .tmp0w, ._, ._, ._ },
24449 } },
2408024450 }, .{
2408124451 .required_features = .{ .sse, null, null, null },
2408224452 .src_constraints = .{
......@@ -24085,7 +24455,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2408524455 .any,
2408624456 },
2408724457 .patterns = &.{
24088 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } },
24458 .{ .src = .{
24459 .{ .to_param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } },
24460 .{ .to_param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } },
24461 .none,
24462 } },
2408924463 },
2409024464 .call_frame = .{ .alignment = .@"16" },
2409124465 .extra_temps = .{
......@@ -24119,8 +24493,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2411924493 .call_frame = .{ .alignment = .@"16" },
2412024494 .extra_temps = .{
2412124495 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
24122 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
24123 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
24496 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
24497 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
2412424498 .{ .type = .usize, .kind = .{ .extern_func = "__multf3" } },
2412524499 .unused,
2412624500 .unused,
......@@ -24154,8 +24528,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2415424528 .call_frame = .{ .alignment = .@"16" },
2415524529 .extra_temps = .{
2415624530 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
24157 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
24158 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
24531 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
24532 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
2415924533 .{ .type = .usize, .kind = .{ .extern_func = "__multf3" } },
2416024534 .unused,
2416124535 .unused,
......@@ -24189,8 +24563,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2418924563 .call_frame = .{ .alignment = .@"16" },
2419024564 .extra_temps = .{
2419124565 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
24192 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
24193 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
24566 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
24567 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
2419424568 .{ .type = .usize, .kind = .{ .extern_func = "__multf3" } },
2419524569 .unused,
2419624570 .unused,
......@@ -24223,7 +24597,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2422324597 try res[0].finish(inst, &.{ bin_op.lhs, bin_op.rhs }, &ops, cg);
2422424598 },
2422524599 .mul_safe => unreachable,
24226 .mul_wrap => |air_tag| if (use_old) try cg.airMulDivBinOp(inst, air_tag) else {
24600 .mul_wrap => |air_tag| {
2422724601 const bin_op = air_datas[@intFromEnum(inst)].bin_op;
2422824602 const ty = cg.typeOf(bin_op.lhs);
2422924603 var ops = try cg.tempsFromOperands(inst, .{ bin_op.lhs, bin_op.rhs });
......@@ -26047,7 +26421,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2604726421 .any,
2604826422 },
2604926423 .patterns = &.{
26050 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } },
26424 .{ .src = .{
26425 .{ .to_param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } },
26426 .{ .to_param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } },
26427 .none,
26428 } },
2605126429 },
2605226430 .call_frame = .{ .alignment = .@"16" },
2605326431 .extra_temps = .{
......@@ -26181,8 +26559,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2618126559 .call_frame = .{ .alignment = .@"16" },
2618226560 .extra_temps = .{
2618326561 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
26184 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
26185 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
26562 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
26563 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
2618626564 .{ .type = .usize, .kind = .{ .extern_func = "__mulhf3" } },
2618726565 .unused,
2618826566 .unused,
......@@ -26217,8 +26595,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2621726595 .call_frame = .{ .alignment = .@"16" },
2621826596 .extra_temps = .{
2621926597 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
26220 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
26221 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
26598 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
26599 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
2622226600 .{ .type = .usize, .kind = .{ .extern_func = "__mulhf3" } },
2622326601 .unused,
2622426602 .unused,
......@@ -26254,8 +26632,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2625426632 .call_frame = .{ .alignment = .@"16" },
2625526633 .extra_temps = .{
2625626634 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
26257 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
26258 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
26635 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
26636 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
2625926637 .{ .type = .usize, .kind = .{ .extern_func = "__mulhf3" } },
2626026638 .{ .type = .f16, .kind = .{ .reg = .ax } },
2626126639 .unused,
......@@ -26294,8 +26672,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2629426672 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
2629526673 .{ .type = .f16, .kind = .{ .reg = .ax } },
2629626674 .{ .type = .f32, .kind = .mem },
26297 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
26298 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
26675 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
26676 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
2629926677 .{ .type = .usize, .kind = .{ .extern_func = "__mulhf3" } },
2630026678 .unused,
2630126679 .unused,
......@@ -26777,7 +27155,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2677727155 .any,
2677827156 },
2677927157 .patterns = &.{
26780 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } },
27158 .{ .src = .{
27159 .{ .to_param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } },
27160 .{ .to_param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } },
27161 .none,
27162 } },
2678127163 },
2678227164 .call_frame = .{ .alignment = .@"16" },
2678327165 .extra_temps = .{
......@@ -26811,8 +27193,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2681127193 .call_frame = .{ .alignment = .@"16" },
2681227194 .extra_temps = .{
2681327195 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
26814 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
26815 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
27196 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
27197 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
2681627198 .{ .type = .usize, .kind = .{ .extern_func = "__multf3" } },
2681727199 .unused,
2681827200 .unused,
......@@ -26846,8 +27228,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2684627228 .call_frame = .{ .alignment = .@"16" },
2684727229 .extra_temps = .{
2684827230 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
26849 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
26850 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
27231 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
27232 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
2685127233 .{ .type = .usize, .kind = .{ .extern_func = "__multf3" } },
2685227234 .unused,
2685327235 .unused,
......@@ -26881,8 +27263,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2688127263 .call_frame = .{ .alignment = .@"16" },
2688227264 .extra_temps = .{
2688327265 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
26884 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
26885 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
27266 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
27267 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
2688627268 .{ .type = .usize, .kind = .{ .extern_func = "__multf3" } },
2688727269 .unused,
2688827270 .unused,
......@@ -26922,9 +27304,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2692227304 };
2692327305 try res[0].finish(inst, &.{ bin_op.lhs, bin_op.rhs }, &ops, cg);
2692427306 },
26925 .mul_sat => |air_tag| if (use_old) try cg.airMulSat(inst) else fallback: {
27307 .mul_sat => |air_tag| {
2692627308 const bin_op = air_datas[@intFromEnum(inst)].bin_op;
26927 if (cg.typeOf(bin_op.lhs).isVector(zcu)) break :fallback try cg.airMulSat(inst);
2692827309 var ops = try cg.tempsFromOperands(inst, .{ bin_op.lhs, bin_op.rhs });
2692927310 var res: [1]Temp = undefined;
2693027311 cg.select(&res, &.{cg.typeOf(bin_op.lhs)}, &ops, comptime &.{ .{
......@@ -32140,11 +32521,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3214032521 };
3214132522 try res[0].finish(inst, &.{ bin_op.lhs, bin_op.rhs }, &ops, cg);
3214232523 },
32143 .div_float, .div_float_optimized, .div_exact, .div_exact_optimized => |air_tag| if (use_old) try cg.airMulDivBinOp(inst, switch (air_tag) {
32144 else => unreachable,
32145 .div_float, .div_float_optimized => .div_float,
32146 .div_exact, .div_exact_optimized => .div_exact,
32147 }) else {
32524 .div_float, .div_float_optimized, .div_exact, .div_exact_optimized => |air_tag| {
3214832525 const bin_op = air_datas[@intFromEnum(inst)].bin_op;
3214932526 const ty = cg.typeOf(bin_op.lhs);
3215032527 var ops = try cg.tempsFromOperands(inst, .{ bin_op.lhs, bin_op.rhs });
......@@ -32187,7 +32564,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3218732564 .any,
3218832565 },
3218932566 .patterns = &.{
32190 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } },
32567 .{ .src = .{
32568 .{ .to_param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } },
32569 .{ .to_param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } },
32570 .none,
32571 } },
3219132572 },
3219232573 .call_frame = .{ .alignment = .@"16" },
3219332574 .extra_temps = .{
......@@ -32321,8 +32702,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3232132702 .call_frame = .{ .alignment = .@"16" },
3232232703 .extra_temps = .{
3232332704 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
32324 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
32325 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
32705 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
32706 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
3232632707 .{ .type = .usize, .kind = .{ .extern_func = "__divhf3" } },
3232732708 .unused,
3232832709 .unused,
......@@ -32357,8 +32738,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3235732738 .call_frame = .{ .alignment = .@"16" },
3235832739 .extra_temps = .{
3235932740 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
32360 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
32361 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
32741 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
32742 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
3236232743 .{ .type = .usize, .kind = .{ .extern_func = "__divhf3" } },
3236332744 .unused,
3236432745 .unused,
......@@ -32394,8 +32775,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3239432775 .call_frame = .{ .alignment = .@"16" },
3239532776 .extra_temps = .{
3239632777 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
32397 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
32398 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
32778 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
32779 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
3239932780 .{ .type = .usize, .kind = .{ .extern_func = "__divhf3" } },
3240032781 .{ .type = .f16, .kind = .{ .reg = .ax } },
3240132782 .unused,
......@@ -32434,8 +32815,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3243432815 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
3243532816 .{ .type = .f16, .kind = .{ .reg = .ax } },
3243632817 .{ .type = .f32, .kind = .mem },
32437 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
32438 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
32818 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
32819 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
3243932820 .{ .type = .usize, .kind = .{ .extern_func = "__divhf3" } },
3244032821 .unused,
3244132822 .unused,
......@@ -32805,6 +33186,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3280533186 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
3280633187 } },
3280733188 }, .{
33189 .required_abi = .gnu,
3280833190 .required_features = .{ .x87, null, null, null },
3280933191 .src_constraints = .{
3281033192 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
......@@ -32835,6 +33217,44 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3283533217 .{ ._, .f_p, .st, .dst0t, ._, ._, ._ },
3283633218 } },
3283733219 }, .{
33220 .required_abi = .msvc,
33221 .required_features = .{ .x87, null, null, null },
33222 .src_constraints = .{
33223 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
33224 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
33225 .any,
33226 },
33227 .patterns = &.{
33228 .{ .src = .{ .mem, .mem, .none } },
33229 },
33230 .extra_temps = .{
33231 .{ .type = .f80, .kind = .{ .reg = .st6 } },
33232 .{ .type = .f80, .kind = .{ .reg = .st7 } },
33233 .{ .type = .u16, .kind = .mem },
33234 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
33235 .unused,
33236 .unused,
33237 .unused,
33238 .unused,
33239 .unused,
33240 .unused,
33241 .unused,
33242 },
33243 .dst_temps = .{ .{ .rc = .x87 }, .unused },
33244 .each = .{ .once = &.{
33245 .{ ._, .f_, .ld, .src0t, ._, ._, ._ },
33246 .{ ._, .f_, .ld, .src1t, ._, ._, ._ },
33247 .{ ._, .fn_cw, .st, .tmp2w, ._, ._, ._ },
33248 .{ ._, ._, .movzx, .tmp3d, .memd(.tmp2b, 1), ._, ._ },
33249 .{ ._, ._, .@"or", .memd(.tmp2b, 1), .ui(0b000_0_00_11), ._, ._ },
33250 .{ ._, .f_cw, .ld, .tmp2w, ._, ._, ._ },
33251 .{ ._, ._, .mov, .memd(.tmp2b, 1), .tmp3b, ._, ._ },
33252 .{ ._, .f_p, .div, ._, ._, ._, ._ },
33253 .{ ._, .f_cw, .ld, .tmp2w, ._, ._, ._ },
33254 .{ ._, .f_p, .st, .dst0t, ._, ._, ._ },
33255 } },
33256 }, .{
33257 .required_abi = .gnu,
3283833258 .required_features = .{ .x87, null, null, null },
3283933259 .src_constraints = .{
3284033260 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
......@@ -32864,6 +33284,43 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3286433284 .{ ._, .f_p, .st, .dst0t, ._, ._, ._ },
3286533285 } },
3286633286 }, .{
33287 .required_abi = .msvc,
33288 .required_features = .{ .x87, null, null, null },
33289 .src_constraints = .{
33290 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
33291 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
33292 .any,
33293 },
33294 .patterns = &.{
33295 .{ .src = .{ .to_x87, .mem, .none }, .commute = .{ 0, 1 } },
33296 },
33297 .extra_temps = .{
33298 .{ .type = .f80, .kind = .{ .reg = .st7 } },
33299 .{ .type = .u16, .kind = .mem },
33300 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
33301 .unused,
33302 .unused,
33303 .unused,
33304 .unused,
33305 .unused,
33306 .unused,
33307 .unused,
33308 .unused,
33309 },
33310 .dst_temps = .{ .{ .rc = .x87 }, .unused },
33311 .each = .{ .once = &.{
33312 .{ ._, .f_, .ld, .src0t, ._, ._, ._ },
33313 .{ ._, .fn_cw, .st, .tmp1w, ._, ._, ._ },
33314 .{ ._, ._, .movzx, .tmp2d, .memd(.tmp1b, 1), ._, ._ },
33315 .{ ._, ._, .@"or", .memd(.tmp1b, 1), .ui(0b000_0_00_11), ._, ._ },
33316 .{ ._, .f_cw, .ld, .tmp1w, ._, ._, ._ },
33317 .{ ._, ._, .mov, .memd(.tmp1b, 1), .tmp2b, ._, ._ },
33318 .{ ._, .f_, .divr, .tmp0t, .src1t, ._, ._ },
33319 .{ ._, .f_cw, .ld, .tmp1w, ._, ._, ._ },
33320 .{ ._, .f_p, .st, .dst0t, ._, ._, ._ },
33321 } },
33322 }, .{
33323 .required_abi = .gnu,
3286733324 .required_features = .{ .x87, null, null, null },
3286833325 .src_constraints = .{
3286933326 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
......@@ -32894,6 +33351,44 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3289433351 .{ ._, .f_p, .st, .dst0t, ._, ._, ._ },
3289533352 } },
3289633353 }, .{
33354 .required_abi = .msvc,
33355 .required_features = .{ .x87, null, null, null },
33356 .src_constraints = .{
33357 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
33358 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
33359 .any,
33360 },
33361 .patterns = &.{
33362 .{ .src = .{ .mem, .to_x87, .none } },
33363 .{ .src = .{ .to_x87, .to_x87, .none } },
33364 },
33365 .extra_temps = .{
33366 .{ .type = .f80, .kind = .{ .reg = .st7 } },
33367 .{ .type = .u16, .kind = .mem },
33368 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
33369 .unused,
33370 .unused,
33371 .unused,
33372 .unused,
33373 .unused,
33374 .unused,
33375 .unused,
33376 .unused,
33377 },
33378 .dst_temps = .{ .{ .rc = .x87 }, .unused },
33379 .each = .{ .once = &.{
33380 .{ ._, .f_, .ld, .src0t, ._, ._, ._ },
33381 .{ ._, .fn_cw, .st, .tmp1w, ._, ._, ._ },
33382 .{ ._, ._, .movzx, .tmp2d, .memd(.tmp1b, 1), ._, ._ },
33383 .{ ._, ._, .@"or", .memd(.tmp1b, 1), .ui(0b000_0_00_11), ._, ._ },
33384 .{ ._, .f_cw, .ld, .tmp1w, ._, ._, ._ },
33385 .{ ._, ._, .mov, .memd(.tmp1b, 1), .tmp2b, ._, ._ },
33386 .{ ._, .f_, .div, .tmp0t, .src1t, ._, ._ },
33387 .{ ._, .f_cw, .ld, .tmp1w, ._, ._, ._ },
33388 .{ ._, .f_p, .st, .dst0t, ._, ._, ._ },
33389 } },
33390 }, .{
33391 .required_abi = .gnu,
3289733392 .required_features = .{ .x87, null, null, null },
3289833393 .src_constraints = .{
3289933394 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
......@@ -32927,6 +33422,47 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3292733422 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
3292833423 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
3292933424 } },
33425 }, .{
33426 .required_abi = .msvc,
33427 .required_features = .{ .x87, null, null, null },
33428 .src_constraints = .{
33429 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
33430 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
33431 .any,
33432 },
33433 .patterns = &.{
33434 .{ .src = .{ .to_mem, .to_mem, .none } },
33435 },
33436 .extra_temps = .{
33437 .{ .type = .u16, .kind = .mem },
33438 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
33439 .{ .type = .f80, .kind = .{ .reg = .st6 } },
33440 .{ .type = .f80, .kind = .{ .reg = .st7 } },
33441 .unused,
33442 .unused,
33443 .unused,
33444 .unused,
33445 .unused,
33446 .unused,
33447 .unused,
33448 },
33449 .dst_temps = .{ .mem, .unused },
33450 .clobbers = .{ .eflags = true },
33451 .each = .{ .once = &.{
33452 .{ ._, .fn_cw, .st, .tmp0w, ._, ._, ._ },
33453 .{ ._, ._, .movzx, .tmp1d, .memd(.tmp0b, 1), ._, ._ },
33454 .{ ._, ._, .@"or", .memd(.tmp0b, 1), .ui(0b000_0_00_11), ._, ._ },
33455 .{ ._, .f_cw, .ld, .tmp0w, ._, ._, ._ },
33456 .{ ._, ._, .mov, .memd(.tmp0b, 1), .tmp1b, ._, ._ },
33457 .{ ._, ._, .mov, .tmp1p, .sa(.src0, .sub_unaligned_size), ._, ._ },
33458 .{ .@"0:", .f_, .ld, .memia(.src0t, .tmp1, .add_unaligned_size), ._, ._, ._ },
33459 .{ ._, .f_, .ld, .memia(.src1t, .tmp1, .add_unaligned_size), ._, ._, ._ },
33460 .{ ._, .f_p, .div, ._, ._, ._, ._ },
33461 .{ ._, .f_p, .st, .memia(.dst0t, .tmp1, .add_unaligned_size), ._, ._, ._ },
33462 .{ ._, ._, .add, .tmp1p, .si(16), ._, ._ },
33463 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
33464 .{ ._, .f_cw, .ld, .tmp0w, ._, ._, ._ },
33465 } },
3293033466 }, .{
3293133467 .required_features = .{ .sse, null, null, null },
3293233468 .src_constraints = .{
......@@ -32935,7 +33471,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3293533471 .any,
3293633472 },
3293733473 .patterns = &.{
32938 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } },
33474 .{ .src = .{
33475 .{ .to_param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } },
33476 .{ .to_param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } },
33477 .none,
33478 } },
3293933479 },
3294033480 .call_frame = .{ .alignment = .@"16" },
3294133481 .extra_temps = .{
......@@ -32969,8 +33509,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3296933509 .call_frame = .{ .alignment = .@"16" },
3297033510 .extra_temps = .{
3297133511 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
32972 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
32973 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
33512 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
33513 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
3297433514 .{ .type = .usize, .kind = .{ .extern_func = "__divtf3" } },
3297533515 .unused,
3297633516 .unused,
......@@ -33004,8 +33544,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3300433544 .call_frame = .{ .alignment = .@"16" },
3300533545 .extra_temps = .{
3300633546 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
33007 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
33008 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
33547 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
33548 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
3300933549 .{ .type = .usize, .kind = .{ .extern_func = "__divtf3" } },
3301033550 .unused,
3301133551 .unused,
......@@ -33039,8 +33579,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3303933579 .call_frame = .{ .alignment = .@"16" },
3304033580 .extra_temps = .{
3304133581 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
33042 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
33043 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
33582 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
33583 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
3304433584 .{ .type = .usize, .kind = .{ .extern_func = "__divtf3" } },
3304533585 .unused,
3304633586 .unused,
......@@ -33075,7 +33615,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3307533615 };
3307633616 try res[0].finish(inst, &.{ bin_op.lhs, bin_op.rhs }, &ops, cg);
3307733617 },
33078 .div_trunc => |air_tag| if (use_old) try cg.airMulDivBinOp(inst, air_tag) else {
33618 .div_trunc => |air_tag| {
3307933619 const bin_op = air_datas[@intFromEnum(inst)].bin_op;
3308033620 const ty = cg.typeOf(bin_op.lhs);
3308133621 var ops = try cg.tempsFromOperands(inst, .{ bin_op.lhs, bin_op.rhs });
......@@ -33121,7 +33661,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3312133661 .any,
3312233662 },
3312333663 .patterns = &.{
33124 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } },
33664 .{ .src = .{
33665 .{ .to_param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } },
33666 .{ .to_param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } },
33667 .none,
33668 } },
3312533669 },
3312633670 .call_frame = .{ .alignment = .@"16" },
3312733671 .extra_temps = .{
......@@ -33265,8 +33809,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3326533809 .call_frame = .{ .alignment = .@"16" },
3326633810 .extra_temps = .{
3326733811 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
33268 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
33269 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
33812 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
33813 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
3327033814 .{ .type = .usize, .kind = .{ .extern_func = "__divhf3" } },
3327133815 .{ .type = .usize, .kind = .{ .extern_func = "__trunch" } },
3327233816 .unused,
......@@ -33302,8 +33846,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3330233846 .call_frame = .{ .alignment = .@"16" },
3330333847 .extra_temps = .{
3330433848 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
33305 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
33306 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
33849 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
33850 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
3330733851 .{ .type = .usize, .kind = .{ .extern_func = "__divhf3" } },
3330833852 .{ .type = .usize, .kind = .{ .extern_func = "__trunch" } },
3330933853 .unused,
......@@ -33340,8 +33884,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3334033884 .call_frame = .{ .alignment = .@"16" },
3334133885 .extra_temps = .{
3334233886 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
33343 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
33344 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
33887 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
33888 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
3334533889 .{ .type = .usize, .kind = .{ .extern_func = "__divhf3" } },
3334633890 .{ .type = .usize, .kind = .{ .extern_func = "__trunch" } },
3334733891 .{ .type = .f16, .kind = .{ .reg = .ax } },
......@@ -33381,8 +33925,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3338133925 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
3338233926 .{ .type = .f16, .kind = .{ .reg = .ax } },
3338333927 .{ .type = .f32, .kind = .mem },
33384 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
33385 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
33928 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
33929 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
3338633930 .{ .type = .usize, .kind = .{ .extern_func = "__divhf3" } },
3338733931 .{ .type = .usize, .kind = .{ .extern_func = "__trunch" } },
3338833932 .unused,
......@@ -33448,7 +33992,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3344833992 .any,
3344933993 },
3345033994 .patterns = &.{
33451 .{ .src = .{ .{ .to_reg = .xmm0 }, .to_mem, .none } },
33995 .{ .src = .{ .{ .to_param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .to_mem, .none } },
3345233996 },
3345333997 .call_frame = .{ .alignment = .@"16" },
3345433998 .extra_temps = .{
......@@ -33515,7 +34059,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3351534059 .call_frame = .{ .alignment = .@"16" },
3351634060 .extra_temps = .{
3351734061 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
33518 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
34062 .{ .type = .f32, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
3351934063 .{ .type = .usize, .kind = .{ .extern_func = "truncf" } },
3352034064 .unused,
3352134065 .unused,
......@@ -33661,7 +34205,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3366134205 .any,
3366234206 },
3366334207 .patterns = &.{
33664 .{ .src = .{ .{ .to_reg = .xmm0 }, .to_mem, .none } },
34208 .{ .src = .{ .{ .to_param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .to_mem, .none } },
3366534209 },
3366634210 .call_frame = .{ .alignment = .@"16" },
3366734211 .extra_temps = .{
......@@ -33691,7 +34235,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3369134235 .any,
3369234236 },
3369334237 .patterns = &.{
33694 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } },
34238 .{ .src = .{
34239 .{ .to_param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } },
34240 .{ .to_param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } },
34241 .none,
34242 } },
3369534243 },
3369634244 .call_frame = .{ .alignment = .@"16" },
3369734245 .extra_temps = .{
......@@ -33842,7 +34390,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3384234390 .call_frame = .{ .alignment = .@"16" },
3384334391 .extra_temps = .{
3384434392 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
33845 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
34393 .{ .type = .f64, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
3384634394 .{ .type = .usize, .kind = .{ .extern_func = "trunc" } },
3384734395 .unused,
3384834396 .unused,
......@@ -33877,8 +34425,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3387734425 .call_frame = .{ .alignment = .@"16" },
3387834426 .extra_temps = .{
3387934427 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
33880 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
33881 .{ .type = .f64, .kind = .{ .reg = .xmm1 } },
34428 .{ .type = .f64, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
34429 .{ .type = .f64, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
3388234430 .{ .type = .usize, .kind = .{ .extern_func = "__divdf3" } },
3388334431 .{ .type = .usize, .kind = .{ .extern_func = "trunc" } },
3388434432 .unused,
......@@ -33903,6 +34451,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3390334451 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
3390434452 } },
3390534453 }, .{
34454 .required_abi = .gnu,
34455 .required_cc_abi = .sysv64,
3390634456 .required_features = .{ .x87, null, null, null },
3390734457 .src_constraints = .{
3390834458 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
......@@ -33936,6 +34486,88 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3393634486 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
3393734487 } },
3393834488 }, .{
34489 .required_abi = .gnu,
34490 .required_cc_abi = .win64,
34491 .required_features = .{ .x87, null, null, null },
34492 .src_constraints = .{
34493 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
34494 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
34495 .any,
34496 },
34497 .patterns = &.{
34498 .{ .src = .{ .to_mem, .to_mem, .none } },
34499 },
34500 .call_frame = .{ .alignment = .@"16" },
34501 .extra_temps = .{
34502 .{ .type = .f80, .kind = .{ .reg = .st6 } },
34503 .{ .type = .f80, .kind = .{ .reg = .st7 } },
34504 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
34505 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
34506 .{ .type = .usize, .kind = .{ .extern_func = "__truncx" } },
34507 .unused,
34508 .unused,
34509 .unused,
34510 .unused,
34511 .unused,
34512 .unused,
34513 },
34514 .dst_temps = .{ .mem, .unused },
34515 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
34516 .each = .{ .once = &.{
34517 .{ ._, .f_, .ld, .src0t, ._, ._, ._ },
34518 .{ ._, .f_, .ld, .src1t, ._, ._, ._ },
34519 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },
34520 .{ ._, .f_p, .div, ._, ._, ._, ._ },
34521 .{ ._, .f_p, .st, .lea(.tmp2t), ._, ._, ._ },
34522 .{ ._, ._, .mov, .tmp3p, .tmp2p, ._, ._ },
34523 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
34524 } },
34525 }, .{
34526 .required_abi = .msvc,
34527 .required_cc_abi = .win64,
34528 .required_features = .{ .x87, null, null, null },
34529 .src_constraints = .{
34530 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
34531 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
34532 .any,
34533 },
34534 .patterns = &.{
34535 .{ .src = .{ .to_mem, .to_mem, .none } },
34536 },
34537 .call_frame = .{ .alignment = .@"16" },
34538 .extra_temps = .{
34539 .{ .type = .f80, .kind = .{ .reg = .st6 } },
34540 .{ .type = .f80, .kind = .{ .reg = .st7 } },
34541 .{ .type = .u16, .kind = .mem },
34542 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
34543 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
34544 .{ .type = .usize, .kind = .{ .extern_func = "__truncx" } },
34545 .unused,
34546 .unused,
34547 .unused,
34548 .unused,
34549 .unused,
34550 },
34551 .dst_temps = .{ .mem, .unused },
34552 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
34553 .each = .{ .once = &.{
34554 .{ ._, .f_, .ld, .src0t, ._, ._, ._ },
34555 .{ ._, .f_, .ld, .src1t, ._, ._, ._ },
34556 .{ ._, .fn_cw, .st, .tmp2w, ._, ._, ._ },
34557 .{ ._, ._, .movzx, .tmp3d, .memd(.tmp2b, 1), ._, ._ },
34558 .{ ._, ._, .@"or", .memd(.tmp2b, 1), .ui(0b000_0_00_11), ._, ._ },
34559 .{ ._, .f_cw, .ld, .tmp2w, ._, ._, ._ },
34560 .{ ._, ._, .mov, .memd(.tmp2b, 1), .tmp3b, ._, ._ },
34561 .{ ._, ._, .lea, .tmp3p, .mem(.dst0), ._, ._ },
34562 .{ ._, .f_p, .div, ._, ._, ._, ._ },
34563 .{ ._, .f_cw, .ld, .tmp2w, ._, ._, ._ },
34564 .{ ._, .f_p, .st, .lea(.tmp3t), ._, ._, ._ },
34565 .{ ._, ._, .mov, .tmp4p, .tmp3p, ._, ._ },
34566 .{ ._, ._, .call, .tmp5d, ._, ._, ._ },
34567 } },
34568 }, .{
34569 .required_abi = .gnu,
34570 .required_cc_abi = .sysv64,
3393934571 .required_features = .{ .x87, null, null, null },
3394034572 .src_constraints = .{
3394134573 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
......@@ -33973,6 +34605,92 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3397334605 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
3397434606 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
3397534607 } },
34608 }, .{
34609 .required_abi = .gnu,
34610 .required_cc_abi = .win64,
34611 .required_features = .{ .x87, null, null, null },
34612 .src_constraints = .{
34613 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
34614 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
34615 .any,
34616 },
34617 .patterns = &.{
34618 .{ .src = .{ .to_mem, .to_mem, .none } },
34619 },
34620 .call_frame = .{ .alignment = .@"16" },
34621 .extra_temps = .{
34622 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
34623 .{ .type = .f80, .kind = .{ .reg = .st6 } },
34624 .{ .type = .f80, .kind = .{ .reg = .st7 } },
34625 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
34626 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
34627 .{ .type = .usize, .kind = .{ .extern_func = "__truncx" } },
34628 .unused,
34629 .unused,
34630 .unused,
34631 .unused,
34632 .unused,
34633 },
34634 .dst_temps = .{ .mem, .unused },
34635 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
34636 .each = .{ .once = &.{
34637 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
34638 .{ .@"0:", .f_, .ld, .memia(.src0t, .tmp0, .add_unaligned_size), ._, ._, ._ },
34639 .{ ._, .f_, .ld, .memia(.src1t, .tmp0, .add_unaligned_size), ._, ._, ._ },
34640 .{ ._, .f_p, .div, ._, ._, ._, ._ },
34641 .{ ._, ._, .lea, .tmp3p, .memia(.dst0, .tmp0, .add_unaligned_size), ._, ._ },
34642 .{ ._, .f_p, .st, .lea(.tmp3t), ._, ._, ._ },
34643 .{ ._, ._, .mov, .tmp4p, .tmp3p, ._, ._ },
34644 .{ ._, ._, .call, .tmp5d, ._, ._, ._ },
34645 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
34646 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
34647 } },
34648 }, .{
34649 .required_abi = .msvc,
34650 .required_cc_abi = .win64,
34651 .required_features = .{ .x87, null, null, null },
34652 .src_constraints = .{
34653 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
34654 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
34655 .any,
34656 },
34657 .patterns = &.{
34658 .{ .src = .{ .to_mem, .to_mem, .none } },
34659 },
34660 .call_frame = .{ .alignment = .@"16" },
34661 .extra_temps = .{
34662 .{ .type = .u16, .kind = .mem },
34663 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
34664 .{ .type = .f80, .kind = .{ .reg = .st6 } },
34665 .{ .type = .f80, .kind = .{ .reg = .st7 } },
34666 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
34667 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
34668 .{ .type = .usize, .kind = .{ .extern_func = "__truncx" } },
34669 .unused,
34670 .unused,
34671 .unused,
34672 .unused,
34673 },
34674 .dst_temps = .{ .mem, .unused },
34675 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
34676 .each = .{ .once = &.{
34677 .{ ._, .fn_cw, .st, .tmp0w, ._, ._, ._ },
34678 .{ ._, ._, .movzx, .tmp1d, .memd(.tmp0b, 1), ._, ._ },
34679 .{ ._, ._, .@"or", .memd(.tmp0b, 1), .ui(0b000_0_00_11), ._, ._ },
34680 .{ ._, .f_cw, .ld, .tmp0w, ._, ._, ._ },
34681 .{ ._, ._, .mov, .memd(.tmp0b, 1), .tmp1b, ._, ._ },
34682 .{ ._, ._, .mov, .tmp1p, .sa(.src0, .sub_unaligned_size), ._, ._ },
34683 .{ .@"0:", .f_, .ld, .memia(.src0t, .tmp1, .add_unaligned_size), ._, ._, ._ },
34684 .{ ._, .f_, .ld, .memia(.src1t, .tmp1, .add_unaligned_size), ._, ._, ._ },
34685 .{ ._, .f_p, .div, ._, ._, ._, ._ },
34686 .{ ._, ._, .lea, .tmp4p, .memia(.dst0, .tmp1, .add_unaligned_size), ._, ._ },
34687 .{ ._, .f_p, .st, .lea(.tmp4t), ._, ._, ._ },
34688 .{ ._, ._, .mov, .tmp5p, .tmp4p, ._, ._ },
34689 .{ ._, ._, .call, .tmp6d, ._, ._, ._ },
34690 .{ ._, ._, .add, .tmp1p, .si(16), ._, ._ },
34691 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
34692 .{ ._, .f_cw, .ld, .tmp0w, ._, ._, ._ },
34693 } },
3397634694 }, .{
3397734695 .required_features = .{ .sse, null, null, null },
3397834696 .src_constraints = .{
......@@ -33981,7 +34699,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3398134699 .any,
3398234700 },
3398334701 .patterns = &.{
33984 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } },
34702 .{ .src = .{
34703 .{ .to_param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } },
34704 .{ .to_param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } },
34705 .none,
34706 } },
3398534707 },
3398634708 .call_frame = .{ .alignment = .@"16" },
3398734709 .extra_temps = .{
......@@ -34016,8 +34738,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3401634738 .call_frame = .{ .alignment = .@"16" },
3401734739 .extra_temps = .{
3401834740 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
34019 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
34020 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
34741 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
34742 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
3402134743 .{ .type = .usize, .kind = .{ .extern_func = "__divtf3" } },
3402234744 .{ .type = .usize, .kind = .{ .extern_func = "truncq" } },
3402334745 .unused,
......@@ -34052,8 +34774,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3405234774 .call_frame = .{ .alignment = .@"16" },
3405334775 .extra_temps = .{
3405434776 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
34055 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
34056 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
34777 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
34778 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
3405734779 .{ .type = .usize, .kind = .{ .extern_func = "__divtf3" } },
3405834780 .{ .type = .usize, .kind = .{ .extern_func = "truncq" } },
3405934781 .unused,
......@@ -34088,8 +34810,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3408834810 .call_frame = .{ .alignment = .@"16" },
3408934811 .extra_temps = .{
3409034812 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
34091 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
34092 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
34813 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
34814 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
3409334815 .{ .type = .usize, .kind = .{ .extern_func = "__divtf3" } },
3409434816 .{ .type = .usize, .kind = .{ .extern_func = "truncq" } },
3409534817 .unused,
......@@ -34124,11 +34846,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3412434846 };
3412534847 try res[0].finish(inst, &.{ bin_op.lhs, bin_op.rhs }, &ops, cg);
3412634848 },
34127 .div_trunc_optimized, .div_floor_optimized => |air_tag| if (use_old) try cg.airMulDivBinOp(inst, switch (air_tag) {
34128 else => unreachable,
34129 .div_trunc_optimized => .div_trunc,
34130 .div_floor_optimized => .div_floor,
34131 }) else {
34849 .div_trunc_optimized, .div_floor_optimized => |air_tag| {
3413234850 const bin_op = air_datas[@intFromEnum(inst)].bin_op;
3413334851 var ops = try cg.tempsFromOperands(inst, .{ bin_op.lhs, bin_op.rhs });
3413434852 var res: [1]Temp = undefined;
......@@ -34177,7 +34895,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3417734895 .any,
3417834896 },
3417934897 .patterns = &.{
34180 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } },
34898 .{ .src = .{
34899 .{ .to_param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } },
34900 .{ .to_param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } },
34901 .none,
34902 } },
3418134903 },
3418234904 .call_frame = .{ .alignment = .@"16" },
3418334905 .extra_temps = .{
......@@ -34319,8 +35041,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3431935041 .call_frame = .{ .alignment = .@"16" },
3432035042 .extra_temps = .{
3432135043 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
34322 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
34323 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
35044 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
35045 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
3432435046 .{ .type = .usize, .kind = .{ .extern_func = "__divhf3" } },
3432535047 .{ .type = .usize, .kind = .{ .extern_func = switch (direction) {
3432635048 else => unreachable,
......@@ -34360,8 +35082,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3436035082 .call_frame = .{ .alignment = .@"16" },
3436135083 .extra_temps = .{
3436235084 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
34363 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
34364 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
35085 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
35086 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
3436535087 .{ .type = .usize, .kind = .{ .extern_func = "__divhf3" } },
3436635088 .{ .type = .usize, .kind = .{ .extern_func = switch (direction) {
3436735089 else => unreachable,
......@@ -34402,8 +35124,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3440235124 .call_frame = .{ .alignment = .@"16" },
3440335125 .extra_temps = .{
3440435126 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
34405 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
34406 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
35127 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
35128 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
3440735129 .{ .type = .usize, .kind = .{ .extern_func = "__divhf3" } },
3440835130 .{ .type = .usize, .kind = .{ .extern_func = switch (direction) {
3440935131 else => unreachable,
......@@ -34447,8 +35169,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3444735169 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
3444835170 .{ .type = .f16, .kind = .{ .reg = .ax } },
3444935171 .{ .type = .f32, .kind = .mem },
34450 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
34451 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
35172 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
35173 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
3445235174 .{ .type = .usize, .kind = .{ .extern_func = "__divhf3" } },
3445335175 .{ .type = .usize, .kind = .{ .extern_func = switch (direction) {
3445435176 else => unreachable,
......@@ -34518,7 +35240,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3451835240 .any,
3451935241 },
3452035242 .patterns = &.{
34521 .{ .src = .{ .{ .to_reg = .xmm0 }, .to_mem, .none } },
35243 .{ .src = .{ .{ .to_param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .to_mem, .none } },
3452235244 },
3452335245 .call_frame = .{ .alignment = .@"16" },
3452435246 .extra_temps = .{
......@@ -34589,7 +35311,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3458935311 .call_frame = .{ .alignment = .@"16" },
3459035312 .extra_temps = .{
3459135313 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
34592 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
35314 .{ .type = .f32, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
3459335315 .{ .type = .usize, .kind = .{ .extern_func = switch (direction) {
3459435316 else => unreachable,
3459535317 .zero => "truncf",
......@@ -34739,7 +35461,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3473935461 .any,
3474035462 },
3474135463 .patterns = &.{
34742 .{ .src = .{ .{ .to_reg = .xmm0 }, .to_mem, .none } },
35464 .{ .src = .{ .{ .to_param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .to_mem, .none } },
3474335465 },
3474435466 .call_frame = .{ .alignment = .@"16" },
3474535467 .extra_temps = .{
......@@ -34773,7 +35495,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3477335495 .any,
3477435496 },
3477535497 .patterns = &.{
34776 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } },
35498 .{ .src = .{
35499 .{ .to_param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } },
35500 .{ .to_param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } },
35501 .none,
35502 } },
3477735503 },
3477835504 .call_frame = .{ .alignment = .@"16" },
3477935505 .extra_temps = .{
......@@ -34928,7 +35654,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3492835654 .call_frame = .{ .alignment = .@"16" },
3492935655 .extra_temps = .{
3493035656 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
34931 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
35657 .{ .type = .f64, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
3493235658 .{ .type = .usize, .kind = .{ .extern_func = switch (direction) {
3493335659 else => unreachable,
3493435660 .zero => "trunc",
......@@ -34967,8 +35693,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3496735693 .call_frame = .{ .alignment = .@"16" },
3496835694 .extra_temps = .{
3496935695 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
34970 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
34971 .{ .type = .f64, .kind = .{ .reg = .xmm1 } },
35696 .{ .type = .f64, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
35697 .{ .type = .f64, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
3497235698 .{ .type = .usize, .kind = .{ .extern_func = "__divdf3" } },
3497335699 .{ .type = .usize, .kind = .{ .extern_func = switch (direction) {
3497435700 else => unreachable,
......@@ -34997,6 +35723,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3499735723 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
3499835724 } },
3499935725 }, .{
35726 .required_abi = .gnu,
35727 .required_cc_abi = .sysv64,
3500035728 .required_features = .{ .x87, null, null, null },
3500135729 .src_constraints = .{
3500235730 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
......@@ -35004,7 +35732,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3500435732 .any,
3500535733 },
3500635734 .patterns = &.{
35007 .{ .src = .{ .mem, .mem, .none } },
35735 .{ .src = .{ .to_mem, .to_mem, .none } },
3500835736 },
3500935737 .call_frame = .{ .size = 16, .alignment = .@"16" },
3501035738 .extra_temps = .{
......@@ -35034,6 +35762,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3503435762 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
3503535763 } },
3503635764 }, .{
35765 .required_abi = .gnu,
35766 .required_cc_abi = .win64,
3503735767 .required_features = .{ .x87, null, null, null },
3503835768 .src_constraints = .{
3503935769 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
......@@ -35041,12 +35771,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3504135771 .any,
3504235772 },
3504335773 .patterns = &.{
35044 .{ .src = .{ .to_x87, .mem, .none } },
35774 .{ .src = .{ .to_mem, .to_mem, .none } },
3504535775 },
35046 .call_frame = .{ .size = 16, .alignment = .@"16" },
35776 .call_frame = .{ .alignment = .@"16" },
3504735777 .extra_temps = .{
35778 .{ .type = .f80, .kind = .{ .reg = .st6 } },
3504835779 .{ .type = .f80, .kind = .{ .reg = .st7 } },
35049 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
35780 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
35781 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
3505035782 .{ .type = .usize, .kind = .{ .extern_func = switch (direction) {
3505135783 else => unreachable,
3505235784 .zero => "__truncx",
......@@ -35058,18 +35790,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3505835790 .unused,
3505935791 .unused,
3506035792 .unused,
35061 .unused,
35062 .unused,
3506335793 },
35064 .dst_temps = .{ .{ .reg = .st0 }, .unused },
35794 .dst_temps = .{ .mem, .unused },
3506535795 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
3506635796 .each = .{ .once = &.{
3506735797 .{ ._, .f_, .ld, .src0t, ._, ._, ._ },
35068 .{ ._, .f_, .divr, .tmp0t, .src1t, ._, ._ },
35069 .{ ._, .f_p, .st, .mem(.tmp1t), ._, ._, ._ },
35070 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
35798 .{ ._, .f_, .ld, .src1t, ._, ._, ._ },
35799 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },
35800 .{ ._, .f_p, .div, ._, ._, ._, ._ },
35801 .{ ._, .f_p, .st, .lea(.tmp2t), ._, ._, ._ },
35802 .{ ._, ._, .mov, .tmp3p, .tmp2p, ._, ._ },
35803 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
3507135804 } },
3507235805 }, .{
35806 .required_abi = .msvc,
35807 .required_cc_abi = .win64,
3507335808 .required_features = .{ .x87, null, null, null },
3507435809 .src_constraints = .{
3507535810 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
......@@ -35077,13 +35812,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3507735812 .any,
3507835813 },
3507935814 .patterns = &.{
35080 .{ .src = .{ .mem, .to_x87, .none } },
35081 .{ .src = .{ .to_x87, .to_x87, .none } },
35815 .{ .src = .{ .to_mem, .to_mem, .none } },
3508235816 },
35083 .call_frame = .{ .size = 16, .alignment = .@"16" },
35817 .call_frame = .{ .alignment = .@"16" },
3508435818 .extra_temps = .{
35819 .{ .type = .f80, .kind = .{ .reg = .st6 } },
3508535820 .{ .type = .f80, .kind = .{ .reg = .st7 } },
35086 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
35821 .{ .type = .u16, .kind = .mem },
35822 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
35823 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
3508735824 .{ .type = .usize, .kind = .{ .extern_func = switch (direction) {
3508835825 else => unreachable,
3508935826 .zero => "__truncx",
......@@ -35094,19 +35831,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3509435831 .unused,
3509535832 .unused,
3509635833 .unused,
35097 .unused,
35098 .unused,
35099 .unused,
3510035834 },
35101 .dst_temps = .{ .{ .reg = .st0 }, .unused },
35835 .dst_temps = .{ .mem, .unused },
3510235836 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
3510335837 .each = .{ .once = &.{
3510435838 .{ ._, .f_, .ld, .src0t, ._, ._, ._ },
35105 .{ ._, .f_, .div, .tmp0t, .src1t, ._, ._ },
35106 .{ ._, .f_p, .st, .mem(.tmp1t), ._, ._, ._ },
35107 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
35839 .{ ._, .f_, .ld, .src1t, ._, ._, ._ },
35840 .{ ._, .fn_cw, .st, .tmp2w, ._, ._, ._ },
35841 .{ ._, ._, .movzx, .tmp3d, .memd(.tmp2b, 1), ._, ._ },
35842 .{ ._, ._, .@"or", .memd(.tmp2b, 1), .ui(0b000_0_00_11), ._, ._ },
35843 .{ ._, .f_cw, .ld, .tmp2w, ._, ._, ._ },
35844 .{ ._, ._, .mov, .memd(.tmp2b, 1), .tmp3b, ._, ._ },
35845 .{ ._, ._, .lea, .tmp3p, .mem(.dst0), ._, ._ },
35846 .{ ._, .f_p, .div, ._, ._, ._, ._ },
35847 .{ ._, .f_cw, .ld, .tmp2w, ._, ._, ._ },
35848 .{ ._, .f_p, .st, .lea(.tmp3t), ._, ._, ._ },
35849 .{ ._, ._, .mov, .tmp4p, .tmp3p, ._, ._ },
35850 .{ ._, ._, .call, .tmp5d, ._, ._, ._ },
3510835851 } },
3510935852 }, .{
35853 .required_abi = .gnu,
35854 .required_cc_abi = .sysv64,
3511035855 .required_features = .{ .x87, null, null, null },
3511135856 .src_constraints = .{
3511235857 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
......@@ -35148,6 +35893,100 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3514835893 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
3514935894 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
3515035895 } },
35896 }, .{
35897 .required_abi = .gnu,
35898 .required_cc_abi = .win64,
35899 .required_features = .{ .x87, null, null, null },
35900 .src_constraints = .{
35901 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
35902 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
35903 .any,
35904 },
35905 .patterns = &.{
35906 .{ .src = .{ .to_mem, .to_mem, .none } },
35907 },
35908 .call_frame = .{ .alignment = .@"16" },
35909 .extra_temps = .{
35910 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
35911 .{ .type = .f80, .kind = .{ .reg = .st6 } },
35912 .{ .type = .f80, .kind = .{ .reg = .st7 } },
35913 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
35914 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
35915 .{ .type = .usize, .kind = .{ .extern_func = switch (direction) {
35916 else => unreachable,
35917 .zero => "__truncx",
35918 .down => "__floorx",
35919 } } },
35920 .unused,
35921 .unused,
35922 .unused,
35923 .unused,
35924 .unused,
35925 },
35926 .dst_temps = .{ .mem, .unused },
35927 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
35928 .each = .{ .once = &.{
35929 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
35930 .{ .@"0:", .f_, .ld, .memia(.src0t, .tmp0, .add_unaligned_size), ._, ._, ._ },
35931 .{ ._, .f_, .ld, .memia(.src1t, .tmp0, .add_unaligned_size), ._, ._, ._ },
35932 .{ ._, .f_p, .div, ._, ._, ._, ._ },
35933 .{ ._, ._, .lea, .tmp3p, .memia(.dst0, .tmp0, .add_unaligned_size), ._, ._ },
35934 .{ ._, .f_p, .st, .lea(.tmp3t), ._, ._, ._ },
35935 .{ ._, ._, .mov, .tmp4p, .tmp3p, ._, ._ },
35936 .{ ._, ._, .call, .tmp5d, ._, ._, ._ },
35937 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
35938 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
35939 } },
35940 }, .{
35941 .required_abi = .msvc,
35942 .required_cc_abi = .win64,
35943 .required_features = .{ .x87, null, null, null },
35944 .src_constraints = .{
35945 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
35946 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
35947 .any,
35948 },
35949 .patterns = &.{
35950 .{ .src = .{ .to_mem, .to_mem, .none } },
35951 },
35952 .call_frame = .{ .alignment = .@"16" },
35953 .extra_temps = .{
35954 .{ .type = .u16, .kind = .mem },
35955 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
35956 .{ .type = .f80, .kind = .{ .reg = .st6 } },
35957 .{ .type = .f80, .kind = .{ .reg = .st7 } },
35958 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
35959 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
35960 .{ .type = .usize, .kind = .{ .extern_func = switch (direction) {
35961 else => unreachable,
35962 .zero => "__truncx",
35963 .down => "__floorx",
35964 } } },
35965 .unused,
35966 .unused,
35967 .unused,
35968 .unused,
35969 },
35970 .dst_temps = .{ .mem, .unused },
35971 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
35972 .each = .{ .once = &.{
35973 .{ ._, .fn_cw, .st, .tmp0w, ._, ._, ._ },
35974 .{ ._, ._, .movzx, .tmp1d, .memd(.tmp0b, 1), ._, ._ },
35975 .{ ._, ._, .@"or", .memd(.tmp0b, 1), .ui(0b000_0_00_11), ._, ._ },
35976 .{ ._, .f_cw, .ld, .tmp0w, ._, ._, ._ },
35977 .{ ._, ._, .mov, .memd(.tmp0b, 1), .tmp1b, ._, ._ },
35978 .{ ._, ._, .mov, .tmp1p, .sa(.src0, .sub_unaligned_size), ._, ._ },
35979 .{ .@"0:", .f_, .ld, .memia(.src0t, .tmp1, .add_unaligned_size), ._, ._, ._ },
35980 .{ ._, .f_, .ld, .memia(.src1t, .tmp1, .add_unaligned_size), ._, ._, ._ },
35981 .{ ._, .f_p, .div, ._, ._, ._, ._ },
35982 .{ ._, ._, .lea, .tmp4p, .memia(.dst0, .tmp1, .add_unaligned_size), ._, ._ },
35983 .{ ._, .f_p, .st, .lea(.tmp4t), ._, ._, ._ },
35984 .{ ._, ._, .mov, .tmp5p, .tmp4p, ._, ._ },
35985 .{ ._, ._, .call, .tmp6d, ._, ._, ._ },
35986 .{ ._, ._, .add, .tmp1p, .si(16), ._, ._ },
35987 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
35988 .{ ._, .f_cw, .ld, .tmp0w, ._, ._, ._ },
35989 } },
3515135990 }, .{
3515235991 .required_features = .{ .sse, null, null, null },
3515335992 .src_constraints = .{
......@@ -35156,7 +35995,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3515635995 .any,
3515735996 },
3515835997 .patterns = &.{
35159 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } },
35998 .{ .src = .{
35999 .{ .to_param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } },
36000 .{ .to_param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } },
36001 .none,
36002 } },
3516036003 },
3516136004 .call_frame = .{ .alignment = .@"16" },
3516236005 .extra_temps = .{
......@@ -35195,8 +36038,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3519536038 .call_frame = .{ .alignment = .@"16" },
3519636039 .extra_temps = .{
3519736040 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
35198 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
35199 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
36041 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
36042 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
3520036043 .{ .type = .usize, .kind = .{ .extern_func = "__divtf3" } },
3520136044 .{ .type = .usize, .kind = .{ .extern_func = switch (direction) {
3520236045 else => unreachable,
......@@ -35235,8 +36078,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3523536078 .call_frame = .{ .alignment = .@"16" },
3523636079 .extra_temps = .{
3523736080 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
35238 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
35239 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
36081 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
36082 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
3524036083 .{ .type = .usize, .kind = .{ .extern_func = "__divtf3" } },
3524136084 .{ .type = .usize, .kind = .{ .extern_func = switch (direction) {
3524236085 else => unreachable,
......@@ -35275,8 +36118,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3527536118 .call_frame = .{ .alignment = .@"16" },
3527636119 .extra_temps = .{
3527736120 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
35278 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
35279 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
36121 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
36122 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
3528036123 .{ .type = .usize, .kind = .{ .extern_func = "__divtf3" } },
3528136124 .{ .type = .usize, .kind = .{ .extern_func = switch (direction) {
3528236125 else => unreachable,
......@@ -35314,7 +36157,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3531436157 };
3531536158 try res[0].finish(inst, &.{ bin_op.lhs, bin_op.rhs }, &ops, cg);
3531636159 },
35317 .div_floor => |air_tag| if (use_old) try cg.airMulDivBinOp(inst, air_tag) else {
36160 .div_floor => |air_tag| {
3531836161 const bin_op = air_datas[@intFromEnum(inst)].bin_op;
3531936162 const ty = cg.typeOf(bin_op.lhs);
3532036163 var ops = try cg.tempsFromOperands(inst, .{ bin_op.lhs, bin_op.rhs });
......@@ -35460,15 +36303,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3546036303 .{ ._, ._, .adc, .dst0q, .si(-1), ._, ._ },
3546136304 } },
3546236305 }, .{
35463 .required_features = .{ .@"64bit", null, null, null },
36306 .required_cc_abi = .sysv64,
3546436307 .src_constraints = .{ .{ .signed_int = .xword }, .{ .signed_int = .xword }, .any },
3546536308 .patterns = &.{
3546636309 .{ .src = .{ .mem, .mem, .none } },
3546736310 },
3546836311 .call_frame = .{ .alignment = .@"16" },
3546936312 .extra_temps = .{
35470 .{ .type = .i128, .kind = .{ .param_gpr_pair = .{ .cc = .ccc, .at = 0 } } },
35471 .{ .type = .i64, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 3 } } },
36313 .{ .type = .i128, .kind = .{ .param_gpr_pair = .{ .cc = .ccc, .after = 0, .at = 0 } } },
36314 .{ .type = .i64, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 3, .at = 3 } } },
3547236315 .{ .type = .usize, .kind = .{ .extern_func = "__modti3" } },
3547336316 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
3547436317 .{ .type = .usize, .kind = .{ .extern_func = "__divti3" } },
......@@ -35479,7 +36322,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3547936322 .unused,
3548036323 .unused,
3548136324 },
35482 .dst_temps = .{ .{ .ret_gpr_pair = .{ .cc = .ccc, .at = 0 } }, .unused },
36325 .dst_temps = .{ .{ .ret_gpr_pair = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
3548336326 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
3548436327 .each = .{ .once = &.{
3548536328 .{ ._, ._, .mov, .tmp0q0, .mem(.src0q), ._, ._ },
......@@ -35515,10 +36358,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3551536358 },
3551636359 .call_frame = .{ .alignment = .@"16" },
3551736360 .extra_temps = .{
35518 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 0 } } },
35519 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 1 } } },
35520 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 2 } } },
35521 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 3 } } },
36361 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
36362 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
36363 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 2, .at = 2 } } },
36364 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 3, .at = 3 } } },
3552236365 .{ .type = .i32, .kind = .{ .rc = .general_purpose } },
3552336366 .{ .type = .usize, .kind = .{ .extern_func = "__divei4" } },
3552436367 .{ .kind = .{ .mem_of_type = .dst0 } },
......@@ -35597,7 +36440,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3559736440 .any,
3559836441 },
3559936442 .patterns = &.{
35600 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } },
36443 .{ .src = .{
36444 .{ .to_param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } },
36445 .{ .to_param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } },
36446 .none,
36447 } },
3560136448 },
3560236449 .call_frame = .{ .alignment = .@"16" },
3560336450 .extra_temps = .{
......@@ -35741,8 +36588,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3574136588 .call_frame = .{ .alignment = .@"16" },
3574236589 .extra_temps = .{
3574336590 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
35744 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
35745 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
36591 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
36592 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
3574636593 .{ .type = .usize, .kind = .{ .extern_func = "__divhf3" } },
3574736594 .{ .type = .usize, .kind = .{ .extern_func = "__floorh" } },
3574836595 .unused,
......@@ -35778,8 +36625,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3577836625 .call_frame = .{ .alignment = .@"16" },
3577936626 .extra_temps = .{
3578036627 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
35781 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
35782 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
36628 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
36629 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
3578336630 .{ .type = .usize, .kind = .{ .extern_func = "__divhf3" } },
3578436631 .{ .type = .usize, .kind = .{ .extern_func = "__floorh" } },
3578536632 .unused,
......@@ -35816,8 +36663,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3581636663 .call_frame = .{ .alignment = .@"16" },
3581736664 .extra_temps = .{
3581836665 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
35819 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
35820 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
36666 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
36667 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
3582136668 .{ .type = .usize, .kind = .{ .extern_func = "__divhf3" } },
3582236669 .{ .type = .usize, .kind = .{ .extern_func = "__floorh" } },
3582336670 .{ .type = .f16, .kind = .{ .reg = .ax } },
......@@ -35857,8 +36704,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3585736704 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
3585836705 .{ .type = .f16, .kind = .{ .reg = .ax } },
3585936706 .{ .type = .f32, .kind = .mem },
35860 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
35861 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
36707 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
36708 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
3586236709 .{ .type = .usize, .kind = .{ .extern_func = "__divhf3" } },
3586336710 .{ .type = .usize, .kind = .{ .extern_func = "__floorh" } },
3586436711 .unused,
......@@ -35924,7 +36771,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3592436771 .any,
3592536772 },
3592636773 .patterns = &.{
35927 .{ .src = .{ .{ .to_reg = .xmm0 }, .to_mem, .none } },
36774 .{ .src = .{ .{ .to_param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .to_mem, .none } },
3592836775 },
3592936776 .call_frame = .{ .alignment = .@"16" },
3593036777 .extra_temps = .{
......@@ -35991,7 +36838,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3599136838 .call_frame = .{ .alignment = .@"16" },
3599236839 .extra_temps = .{
3599336840 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
35994 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
36841 .{ .type = .f32, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
3599536842 .{ .type = .usize, .kind = .{ .extern_func = "floorf" } },
3599636843 .unused,
3599736844 .unused,
......@@ -36137,7 +36984,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3613736984 .any,
3613836985 },
3613936986 .patterns = &.{
36140 .{ .src = .{ .{ .to_reg = .xmm0 }, .to_mem, .none } },
36987 .{ .src = .{ .{ .to_param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .to_mem, .none } },
3614136988 },
3614236989 .call_frame = .{ .alignment = .@"16" },
3614336990 .extra_temps = .{
......@@ -36167,7 +37014,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3616737014 .any,
3616837015 },
3616937016 .patterns = &.{
36170 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } },
37017 .{ .src = .{
37018 .{ .to_param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } },
37019 .{ .to_param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } },
37020 .none,
37021 } },
3617137022 },
3617237023 .call_frame = .{ .alignment = .@"16" },
3617337024 .extra_temps = .{
......@@ -36318,7 +37169,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3631837169 .call_frame = .{ .alignment = .@"16" },
3631937170 .extra_temps = .{
3632037171 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
36321 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
37172 .{ .type = .f64, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
3632237173 .{ .type = .usize, .kind = .{ .extern_func = "floor" } },
3632337174 .unused,
3632437175 .unused,
......@@ -36353,8 +37204,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3635337204 .call_frame = .{ .alignment = .@"16" },
3635437205 .extra_temps = .{
3635537206 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
36356 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
36357 .{ .type = .f64, .kind = .{ .reg = .xmm1 } },
37207 .{ .type = .f64, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
37208 .{ .type = .f64, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
3635837209 .{ .type = .usize, .kind = .{ .extern_func = "__divdf3" } },
3635937210 .{ .type = .usize, .kind = .{ .extern_func = "floor" } },
3636037211 .unused,
......@@ -36379,6 +37230,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3637937230 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
3638037231 } },
3638137232 }, .{
37233 .required_abi = .gnu,
37234 .required_cc_abi = .sysv64,
3638237235 .required_features = .{ .x87, null, null, null },
3638337236 .src_constraints = .{
3638437237 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
......@@ -36412,6 +37265,88 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3641237265 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
3641337266 } },
3641437267 }, .{
37268 .required_abi = .gnu,
37269 .required_cc_abi = .win64,
37270 .required_features = .{ .x87, null, null, null },
37271 .src_constraints = .{
37272 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
37273 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
37274 .any,
37275 },
37276 .patterns = &.{
37277 .{ .src = .{ .to_mem, .to_mem, .none } },
37278 },
37279 .call_frame = .{ .alignment = .@"16" },
37280 .extra_temps = .{
37281 .{ .type = .f80, .kind = .{ .reg = .st6 } },
37282 .{ .type = .f80, .kind = .{ .reg = .st7 } },
37283 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
37284 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
37285 .{ .type = .usize, .kind = .{ .extern_func = "__floorx" } },
37286 .unused,
37287 .unused,
37288 .unused,
37289 .unused,
37290 .unused,
37291 .unused,
37292 },
37293 .dst_temps = .{ .mem, .unused },
37294 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
37295 .each = .{ .once = &.{
37296 .{ ._, .f_, .ld, .src0t, ._, ._, ._ },
37297 .{ ._, .f_, .ld, .src1t, ._, ._, ._ },
37298 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },
37299 .{ ._, .f_p, .div, ._, ._, ._, ._ },
37300 .{ ._, .f_p, .st, .lea(.tmp2t), ._, ._, ._ },
37301 .{ ._, ._, .mov, .tmp3p, .tmp2p, ._, ._ },
37302 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
37303 } },
37304 }, .{
37305 .required_abi = .msvc,
37306 .required_cc_abi = .win64,
37307 .required_features = .{ .x87, null, null, null },
37308 .src_constraints = .{
37309 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
37310 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
37311 .any,
37312 },
37313 .patterns = &.{
37314 .{ .src = .{ .to_mem, .to_mem, .none } },
37315 },
37316 .call_frame = .{ .alignment = .@"16" },
37317 .extra_temps = .{
37318 .{ .type = .f80, .kind = .{ .reg = .st6 } },
37319 .{ .type = .f80, .kind = .{ .reg = .st7 } },
37320 .{ .type = .u16, .kind = .mem },
37321 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
37322 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
37323 .{ .type = .usize, .kind = .{ .extern_func = "__floorx" } },
37324 .unused,
37325 .unused,
37326 .unused,
37327 .unused,
37328 .unused,
37329 },
37330 .dst_temps = .{ .mem, .unused },
37331 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
37332 .each = .{ .once = &.{
37333 .{ ._, .f_, .ld, .src0t, ._, ._, ._ },
37334 .{ ._, .f_, .ld, .src1t, ._, ._, ._ },
37335 .{ ._, .fn_cw, .st, .tmp2w, ._, ._, ._ },
37336 .{ ._, ._, .movzx, .tmp3d, .memd(.tmp2b, 1), ._, ._ },
37337 .{ ._, ._, .@"or", .memd(.tmp2b, 1), .ui(0b000_0_00_11), ._, ._ },
37338 .{ ._, .f_cw, .ld, .tmp2w, ._, ._, ._ },
37339 .{ ._, ._, .mov, .memd(.tmp2b, 1), .tmp3b, ._, ._ },
37340 .{ ._, ._, .lea, .tmp3p, .mem(.dst0), ._, ._ },
37341 .{ ._, .f_p, .div, ._, ._, ._, ._ },
37342 .{ ._, .f_cw, .ld, .tmp2w, ._, ._, ._ },
37343 .{ ._, .f_p, .st, .lea(.tmp3t), ._, ._, ._ },
37344 .{ ._, ._, .mov, .tmp4p, .tmp3p, ._, ._ },
37345 .{ ._, ._, .call, .tmp5d, ._, ._, ._ },
37346 } },
37347 }, .{
37348 .required_abi = .gnu,
37349 .required_cc_abi = .sysv64,
3641537350 .required_features = .{ .x87, null, null, null },
3641637351 .src_constraints = .{
3641737352 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
......@@ -36449,6 +37384,92 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3644937384 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
3645037385 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
3645137386 } },
37387 }, .{
37388 .required_abi = .gnu,
37389 .required_cc_abi = .win64,
37390 .required_features = .{ .x87, null, null, null },
37391 .src_constraints = .{
37392 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
37393 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
37394 .any,
37395 },
37396 .patterns = &.{
37397 .{ .src = .{ .to_mem, .to_mem, .none } },
37398 },
37399 .call_frame = .{ .alignment = .@"16" },
37400 .extra_temps = .{
37401 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
37402 .{ .type = .f80, .kind = .{ .reg = .st6 } },
37403 .{ .type = .f80, .kind = .{ .reg = .st7 } },
37404 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
37405 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
37406 .{ .type = .usize, .kind = .{ .extern_func = "__floorx" } },
37407 .unused,
37408 .unused,
37409 .unused,
37410 .unused,
37411 .unused,
37412 },
37413 .dst_temps = .{ .mem, .unused },
37414 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
37415 .each = .{ .once = &.{
37416 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
37417 .{ .@"0:", .f_, .ld, .memia(.src0t, .tmp0, .add_unaligned_size), ._, ._, ._ },
37418 .{ ._, .f_, .ld, .memia(.src1t, .tmp0, .add_unaligned_size), ._, ._, ._ },
37419 .{ ._, .f_p, .div, ._, ._, ._, ._ },
37420 .{ ._, ._, .lea, .tmp3p, .memia(.dst0, .tmp0, .add_unaligned_size), ._, ._ },
37421 .{ ._, .f_p, .st, .lea(.tmp3t), ._, ._, ._ },
37422 .{ ._, ._, .mov, .tmp4p, .tmp3p, ._, ._ },
37423 .{ ._, ._, .call, .tmp5d, ._, ._, ._ },
37424 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
37425 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
37426 } },
37427 }, .{
37428 .required_abi = .msvc,
37429 .required_cc_abi = .win64,
37430 .required_features = .{ .x87, null, null, null },
37431 .src_constraints = .{
37432 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
37433 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
37434 .any,
37435 },
37436 .patterns = &.{
37437 .{ .src = .{ .to_mem, .to_mem, .none } },
37438 },
37439 .call_frame = .{ .alignment = .@"16" },
37440 .extra_temps = .{
37441 .{ .type = .u16, .kind = .mem },
37442 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
37443 .{ .type = .f80, .kind = .{ .reg = .st6 } },
37444 .{ .type = .f80, .kind = .{ .reg = .st7 } },
37445 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
37446 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
37447 .{ .type = .usize, .kind = .{ .extern_func = "__floorx" } },
37448 .unused,
37449 .unused,
37450 .unused,
37451 .unused,
37452 },
37453 .dst_temps = .{ .mem, .unused },
37454 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
37455 .each = .{ .once = &.{
37456 .{ ._, .fn_cw, .st, .tmp0w, ._, ._, ._ },
37457 .{ ._, ._, .movzx, .tmp1d, .memd(.tmp0b, 1), ._, ._ },
37458 .{ ._, ._, .@"or", .memd(.tmp0b, 1), .ui(0b000_0_00_11), ._, ._ },
37459 .{ ._, .f_cw, .ld, .tmp0w, ._, ._, ._ },
37460 .{ ._, ._, .mov, .memd(.tmp0b, 1), .tmp1b, ._, ._ },
37461 .{ ._, ._, .mov, .tmp1p, .sa(.src0, .sub_unaligned_size), ._, ._ },
37462 .{ .@"0:", .f_, .ld, .memia(.src0t, .tmp1, .add_unaligned_size), ._, ._, ._ },
37463 .{ ._, .f_, .ld, .memia(.src1t, .tmp1, .add_unaligned_size), ._, ._, ._ },
37464 .{ ._, .f_p, .div, ._, ._, ._, ._ },
37465 .{ ._, ._, .lea, .tmp4p, .memia(.dst0, .tmp1, .add_unaligned_size), ._, ._ },
37466 .{ ._, .f_p, .st, .lea(.tmp4t), ._, ._, ._ },
37467 .{ ._, ._, .mov, .tmp5p, .tmp4p, ._, ._ },
37468 .{ ._, ._, .call, .tmp6d, ._, ._, ._ },
37469 .{ ._, ._, .add, .tmp1p, .si(16), ._, ._ },
37470 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
37471 .{ ._, .f_cw, .ld, .tmp0w, ._, ._, ._ },
37472 } },
3645237473 }, .{
3645337474 .required_features = .{ .sse, null, null, null },
3645437475 .src_constraints = .{
......@@ -36457,7 +37478,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3645737478 .any,
3645837479 },
3645937480 .patterns = &.{
36460 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } },
37481 .{ .src = .{
37482 .{ .to_param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } },
37483 .{ .to_param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } },
37484 .none,
37485 } },
3646137486 },
3646237487 .call_frame = .{ .alignment = .@"16" },
3646337488 .extra_temps = .{
......@@ -36492,8 +37517,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3649237517 .call_frame = .{ .alignment = .@"16" },
3649337518 .extra_temps = .{
3649437519 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
36495 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
36496 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
37520 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
37521 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
3649737522 .{ .type = .usize, .kind = .{ .extern_func = "__divtf3" } },
3649837523 .{ .type = .usize, .kind = .{ .extern_func = "floorq" } },
3649937524 .unused,
......@@ -36528,8 +37553,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3652837553 .call_frame = .{ .alignment = .@"16" },
3652937554 .extra_temps = .{
3653037555 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
36531 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
36532 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
37556 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
37557 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
3653337558 .{ .type = .usize, .kind = .{ .extern_func = "__divtf3" } },
3653437559 .{ .type = .usize, .kind = .{ .extern_func = "floorq" } },
3653537560 .unused,
......@@ -36564,8 +37589,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3656437589 .call_frame = .{ .alignment = .@"16" },
3656537590 .extra_temps = .{
3656637591 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
36567 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
36568 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
37592 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
37593 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
3656937594 .{ .type = .usize, .kind = .{ .extern_func = "__divtf3" } },
3657037595 .{ .type = .usize, .kind = .{ .extern_func = "floorq" } },
3657137596 .unused,
......@@ -36598,7 +37623,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3659837623 };
3659937624 try res[0].finish(inst, &.{ bin_op.lhs, bin_op.rhs }, &ops, cg);
3660037625 },
36601 .rem, .rem_optimized => |air_tag| if (use_old) try cg.airMulDivBinOp(inst, .rem) else {
37626 .rem, .rem_optimized => |air_tag| {
3660237627 const bin_op = air_datas[@intFromEnum(inst)].bin_op;
3660337628 var ops = try cg.tempsFromOperands(inst, .{ bin_op.lhs, bin_op.rhs });
3660437629 var res: [1]Temp = undefined;
......@@ -36712,12 +37737,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3671237737 .{ ._, ._, .div, .src1q, ._, ._, ._ },
3671337738 } },
3671437739 }, .{
36715 .required_features = .{ .@"64bit", null, null, null },
37740 .required_cc_abi = .sysv64,
3671637741 .src_constraints = .{ .{ .signed_int = .xword }, .{ .signed_int = .xword }, .any },
3671737742 .patterns = &.{
3671837743 .{ .src = .{
36719 .{ .to_param_gpr_pair = .{ .cc = .ccc, .at = 0 } },
36720 .{ .to_param_gpr_pair = .{ .cc = .ccc, .at = 2 } },
37744 .{ .to_param_gpr_pair = .{ .cc = .ccc, .after = 0, .at = 0 } },
37745 .{ .to_param_gpr_pair = .{ .cc = .ccc, .after = 2, .at = 2 } },
3672137746 .none,
3672237747 } },
3672337748 },
......@@ -36735,18 +37760,46 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3673537760 .unused,
3673637761 .unused,
3673737762 },
36738 .dst_temps = .{ .{ .ret_gpr_pair = .{ .cc = .ccc, .at = 0 } }, .unused },
37763 .dst_temps = .{ .{ .ret_gpr_pair = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
3673937764 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
3674037765 .each = .{ .once = &.{
3674137766 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
3674237767 } },
3674337768 }, .{
36744 .required_features = .{ .@"64bit", null, null, null },
37769 .required_cc_abi = .win64,
37770 .required_features = .{ .sse, null, null, null },
37771 .src_constraints = .{ .{ .signed_int = .xword }, .{ .signed_int = .xword }, .any },
37772 .patterns = &.{
37773 .{ .src = .{ .to_mem, .to_mem, .none } },
37774 },
37775 .call_frame = .{ .alignment = .@"16" },
37776 .extra_temps = .{
37777 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
37778 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
37779 .{ .type = .usize, .kind = .{ .extern_func = "__modti3" } },
37780 .unused,
37781 .unused,
37782 .unused,
37783 .unused,
37784 .unused,
37785 .unused,
37786 .unused,
37787 .unused,
37788 },
37789 .dst_temps = .{ .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
37790 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
37791 .each = .{ .once = &.{
37792 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
37793 .{ ._, ._, .lea, .tmp1p, .mem(.src1), ._, ._ },
37794 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
37795 } },
37796 }, .{
37797 .required_cc_abi = .sysv64,
3674537798 .src_constraints = .{ .{ .unsigned_int = .xword }, .{ .unsigned_int = .xword }, .any },
3674637799 .patterns = &.{
3674737800 .{ .src = .{
36748 .{ .to_param_gpr_pair = .{ .cc = .ccc, .at = 0 } },
36749 .{ .to_param_gpr_pair = .{ .cc = .ccc, .at = 2 } },
37801 .{ .to_param_gpr_pair = .{ .cc = .ccc, .after = 0, .at = 0 } },
37802 .{ .to_param_gpr_pair = .{ .cc = .ccc, .after = 2, .at = 2 } },
3675037803 .none,
3675137804 } },
3675237805 },
......@@ -36764,11 +37817,39 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3676437817 .unused,
3676537818 .unused,
3676637819 },
36767 .dst_temps = .{ .{ .ret_gpr_pair = .{ .cc = .ccc, .at = 0 } }, .unused },
37820 .dst_temps = .{ .{ .ret_gpr_pair = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
3676837821 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
3676937822 .each = .{ .once = &.{
3677037823 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
3677137824 } },
37825 }, .{
37826 .required_cc_abi = .win64,
37827 .required_features = .{ .sse, null, null, null },
37828 .src_constraints = .{ .{ .unsigned_int = .xword }, .{ .unsigned_int = .xword }, .any },
37829 .patterns = &.{
37830 .{ .src = .{ .to_mem, .to_mem, .none } },
37831 },
37832 .call_frame = .{ .alignment = .@"16" },
37833 .extra_temps = .{
37834 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
37835 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
37836 .{ .type = .usize, .kind = .{ .extern_func = "__umodti3" } },
37837 .unused,
37838 .unused,
37839 .unused,
37840 .unused,
37841 .unused,
37842 .unused,
37843 .unused,
37844 .unused,
37845 },
37846 .dst_temps = .{ .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
37847 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
37848 .each = .{ .once = &.{
37849 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
37850 .{ ._, ._, .lea, .tmp1p, .mem(.src1), ._, ._ },
37851 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
37852 } },
3677237853 }, .{
3677337854 .required_features = .{ .@"64bit", null, null, null },
3677437855 .src_constraints = .{
......@@ -36781,10 +37862,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3678137862 },
3678237863 .call_frame = .{ .alignment = .@"16" },
3678337864 .extra_temps = .{
36784 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 0 } } },
36785 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 1 } } },
36786 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 2 } } },
36787 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 3 } } },
37865 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
37866 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
37867 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 2, .at = 2 } } },
37868 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 3, .at = 3 } } },
3678837869 .{ .type = .usize, .kind = .{ .extern_func = "__modei4" } },
3678937870 .unused,
3679037871 .unused,
......@@ -36814,10 +37895,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3681437895 },
3681537896 .call_frame = .{ .alignment = .@"16" },
3681637897 .extra_temps = .{
36817 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 0 } } },
36818 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 1 } } },
36819 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 2 } } },
36820 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 3 } } },
37898 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
37899 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
37900 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 2, .at = 2 } } },
37901 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 3, .at = 3 } } },
3682137902 .{ .type = .usize, .kind = .{ .extern_func = "__umodei4" } },
3682237903 .unused,
3682337904 .unused,
......@@ -37166,7 +38247,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3716638247 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
3716738248 } },
3716838249 }, .{
37169 .required_features = .{ .@"64bit", null, null, null },
38250 .required_cc_abi = .sysv64,
3717038251 .src_constraints = .{
3717138252 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } },
3717238253 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } },
......@@ -37178,12 +38259,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3717838259 .call_frame = .{ .alignment = .@"16" },
3717938260 .extra_temps = .{
3718038261 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
37181 .{ .type = .u64, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 0 } } },
37182 .{ .type = .i64, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 1 } } },
37183 .{ .type = .u64, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 2 } } },
37184 .{ .type = .i64, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 3 } } },
38262 .{ .type = .u64, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
38263 .{ .type = .i64, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
38264 .{ .type = .u64, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 2, .at = 2 } } },
38265 .{ .type = .i64, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 3, .at = 3 } } },
3718538266 .{ .type = .usize, .kind = .{ .extern_func = "__modti3" } },
37186 .{ .type = .u64, .kind = .{ .ret_gpr = .{ .cc = .ccc, .at = 0 } } },
38267 .{ .type = .u64, .kind = .{ .ret_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
3718738268 .unused,
3718838269 .unused,
3718938270 .unused,
......@@ -37204,7 +38285,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3720438285 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
3720538286 } },
3720638287 }, .{
37207 .required_features = .{ .@"64bit", null, null, null },
38288 .required_cc_abi = .sysv64,
3720838289 .src_constraints = .{
3720938290 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } },
3721038291 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } },
......@@ -37216,12 +38297,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3721638297 .call_frame = .{ .alignment = .@"16" },
3721738298 .extra_temps = .{
3721838299 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
37219 .{ .type = .u64, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 0 } } },
37220 .{ .type = .u64, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 1 } } },
37221 .{ .type = .u64, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 2 } } },
37222 .{ .type = .u64, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 3 } } },
38300 .{ .type = .u64, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
38301 .{ .type = .u64, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
38302 .{ .type = .u64, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 2, .at = 2 } } },
38303 .{ .type = .u64, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 3, .at = 3 } } },
3722338304 .{ .type = .usize, .kind = .{ .extern_func = "__umodti3" } },
37224 .{ .type = .u64, .kind = .{ .ret_gpr = .{ .cc = .ccc, .at = 0 } } },
38305 .{ .type = .u64, .kind = .{ .ret_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
3722538306 .unused,
3722638307 .unused,
3722738308 .unused,
......@@ -37254,10 +38335,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3725438335 .call_frame = .{ .alignment = .@"16" },
3725538336 .extra_temps = .{
3725638337 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
37257 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 0 } } },
37258 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 1 } } },
37259 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 2 } } },
37260 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 3 } } },
38338 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
38339 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
38340 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 2, .at = 2 } } },
38341 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 3, .at = 3 } } },
3726138342 .{ .type = .usize, .kind = .{ .extern_func = "__modei4" } },
3726238343 .unused,
3726338344 .unused,
......@@ -37290,10 +38371,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3729038371 .call_frame = .{ .alignment = .@"16" },
3729138372 .extra_temps = .{
3729238373 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
37293 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 0 } } },
37294 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 1 } } },
37295 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 2 } } },
37296 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 3 } } },
38374 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
38375 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
38376 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 2, .at = 2 } } },
38377 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 3, .at = 3 } } },
3729738378 .{ .type = .usize, .kind = .{ .extern_func = "__umodei4" } },
3729838379 .unused,
3729938380 .unused,
......@@ -37321,7 +38402,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3732138402 .any,
3732238403 },
3732338404 .patterns = &.{
37324 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } },
38405 .{ .src = .{
38406 .{ .to_param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } },
38407 .{ .to_param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } },
38408 .none,
38409 } },
3732538410 },
3732638411 .call_frame = .{ .alignment = .@"16" },
3732738412 .extra_temps = .{
......@@ -37355,8 +38440,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3735538440 .call_frame = .{ .alignment = .@"16" },
3735638441 .extra_temps = .{
3735738442 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
37358 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
37359 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
38443 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
38444 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
3736038445 .{ .type = .usize, .kind = .{ .extern_func = "__fmodh" } },
3736138446 .unused,
3736238447 .unused,
......@@ -37391,8 +38476,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3739138476 .call_frame = .{ .alignment = .@"16" },
3739238477 .extra_temps = .{
3739338478 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
37394 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
37395 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
38479 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
38480 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
3739638481 .{ .type = .usize, .kind = .{ .extern_func = "__fmodh" } },
3739738482 .unused,
3739838483 .unused,
......@@ -37428,8 +38513,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3742838513 .call_frame = .{ .alignment = .@"16" },
3742938514 .extra_temps = .{
3743038515 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
37431 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
37432 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
38516 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
38517 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
3743338518 .{ .type = .usize, .kind = .{ .extern_func = "__fmodh" } },
3743438519 .{ .type = .f16, .kind = .{ .reg = .ax } },
3743538520 .unused,
......@@ -37468,8 +38553,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3746838553 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
3746938554 .{ .type = .f16, .kind = .{ .reg = .ax } },
3747038555 .{ .type = .f32, .kind = .mem },
37471 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
37472 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
38556 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
38557 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
3747338558 .{ .type = .usize, .kind = .{ .extern_func = "__fmodh" } },
3747438559 .unused,
3747538560 .unused,
......@@ -37502,7 +38587,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3750238587 .any,
3750338588 },
3750438589 .patterns = &.{
37505 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } },
38590 .{ .src = .{
38591 .{ .to_param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } },
38592 .{ .to_param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } },
38593 .none,
38594 } },
3750638595 },
3750738596 .call_frame = .{ .alignment = .@"16" },
3750838597 .extra_temps = .{
......@@ -37536,8 +38625,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3753638625 .call_frame = .{ .alignment = .@"16" },
3753738626 .extra_temps = .{
3753838627 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
37539 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
37540 .{ .type = .f32, .kind = .{ .reg = .xmm1 } },
38628 .{ .type = .f32, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
38629 .{ .type = .f32, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
3754138630 .{ .type = .usize, .kind = .{ .extern_func = "fmodf" } },
3754238631 .unused,
3754338632 .unused,
......@@ -37571,8 +38660,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3757138660 .call_frame = .{ .alignment = .@"16" },
3757238661 .extra_temps = .{
3757338662 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
37574 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
37575 .{ .type = .f32, .kind = .{ .reg = .xmm1 } },
38663 .{ .type = .f32, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
38664 .{ .type = .f32, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
3757638665 .{ .type = .usize, .kind = .{ .extern_func = "fmodf" } },
3757738666 .unused,
3757838667 .unused,
......@@ -37601,7 +38690,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3760138690 .any,
3760238691 },
3760338692 .patterns = &.{
37604 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } },
38693 .{ .src = .{
38694 .{ .to_param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } },
38695 .{ .to_param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } },
38696 .none,
38697 } },
3760538698 },
3760638699 .call_frame = .{ .alignment = .@"16" },
3760738700 .extra_temps = .{
......@@ -37635,8 +38728,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3763538728 .call_frame = .{ .alignment = .@"16" },
3763638729 .extra_temps = .{
3763738730 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
37638 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
37639 .{ .type = .f64, .kind = .{ .reg = .xmm1 } },
38731 .{ .type = .f64, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
38732 .{ .type = .f64, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
3764038733 .{ .type = .usize, .kind = .{ .extern_func = "fmod" } },
3764138734 .unused,
3764238735 .unused,
......@@ -37670,8 +38763,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3767038763 .call_frame = .{ .alignment = .@"16" },
3767138764 .extra_temps = .{
3767238765 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
37673 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
37674 .{ .type = .f64, .kind = .{ .reg = .xmm1 } },
38766 .{ .type = .f64, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
38767 .{ .type = .f64, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
3767538768 .{ .type = .usize, .kind = .{ .extern_func = "fmod" } },
3767638769 .unused,
3767738770 .unused,
......@@ -37705,8 +38798,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3770538798 .call_frame = .{ .alignment = .@"16" },
3770638799 .extra_temps = .{
3770738800 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
37708 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
37709 .{ .type = .f64, .kind = .{ .reg = .xmm1 } },
38801 .{ .type = .f64, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
38802 .{ .type = .f64, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
3771038803 .{ .type = .usize, .kind = .{ .extern_func = "fmod" } },
3771138804 .unused,
3771238805 .unused,
......@@ -37730,6 +38823,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3773038823 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
3773138824 } },
3773238825 }, .{
38826 .required_cc_abi = .sysv64,
3773338827 .required_features = .{ .avx, .x87, null, null },
3773438828 .src_constraints = .{
3773538829 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
......@@ -37741,7 +38835,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3774138835 },
3774238836 .call_frame = .{ .size = 16 * 2, .alignment = .@"16" },
3774338837 .extra_temps = .{
37744 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
38838 .{ .type = .f80, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
3774538839 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
3774638840 .{ .type = .usize, .kind = .{ .extern_func = "__fmodx" } },
3774738841 .unused,
......@@ -37763,6 +38857,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3776338857 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
3776438858 } },
3776538859 }, .{
38860 .required_cc_abi = .sysv64,
3776638861 .required_features = .{ .sse2, .x87, null, null },
3776738862 .src_constraints = .{
3776838863 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
......@@ -37774,7 +38869,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3777438869 },
3777538870 .call_frame = .{ .size = 16 * 2, .alignment = .@"16" },
3777638871 .extra_temps = .{
37777 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
38872 .{ .type = .f80, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
3777838873 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
3777938874 .{ .type = .usize, .kind = .{ .extern_func = "__fmodx" } },
3778038875 .unused,
......@@ -37796,6 +38891,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3779638891 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
3779738892 } },
3779838893 }, .{
38894 .required_cc_abi = .sysv64,
3779938895 .required_features = .{ .sse, .x87, null, null },
3780038896 .src_constraints = .{
3780138897 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
......@@ -37807,7 +38903,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3780738903 },
3780838904 .call_frame = .{ .size = 16 * 2, .alignment = .@"16" },
3780938905 .extra_temps = .{
37810 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
38906 .{ .type = .f80, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
3781138907 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
3781238908 .{ .type = .usize, .kind = .{ .extern_func = "__fmodx" } },
3781338909 .unused,
......@@ -37829,6 +38925,39 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3782938925 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
3783038926 } },
3783138927 }, .{
38928 .required_cc_abi = .win64,
38929 .src_constraints = .{
38930 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
38931 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
38932 .any,
38933 },
38934 .patterns = &.{
38935 .{ .src = .{ .to_mem, .to_mem, .none } },
38936 },
38937 .call_frame = .{ .alignment = .@"16" },
38938 .extra_temps = .{
38939 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
38940 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
38941 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 2, .at = 2 } } },
38942 .{ .type = .usize, .kind = .{ .extern_func = "__fmodx" } },
38943 .unused,
38944 .unused,
38945 .unused,
38946 .unused,
38947 .unused,
38948 .unused,
38949 .unused,
38950 },
38951 .dst_temps = .{ .mem, .unused },
38952 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
38953 .each = .{ .once = &.{
38954 .{ ._, ._, .lea, .tmp0p, .mem(.dst0), ._, ._ },
38955 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },
38956 .{ ._, ._, .lea, .tmp2p, .mem(.src1), ._, ._ },
38957 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
38958 } },
38959 }, .{
38960 .required_cc_abi = .sysv64,
3783238961 .required_features = .{ .avx, .x87, null, null },
3783338962 .src_constraints = .{
3783438963 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
......@@ -37841,7 +38970,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3784138970 .call_frame = .{ .size = 16 * 2, .alignment = .@"16" },
3784238971 .extra_temps = .{
3784338972 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
37844 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
38973 .{ .type = .f80, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
3784538974 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
3784638975 .{ .type = .usize, .kind = .{ .extern_func = "__fmodx" } },
3784738976 .unused,
......@@ -37867,6 +38996,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3786738996 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
3786838997 } },
3786938998 }, .{
38999 .required_cc_abi = .sysv64,
3787039000 .required_features = .{ .sse2, .x87, null, null },
3787139001 .src_constraints = .{
3787239002 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
......@@ -37879,7 +39009,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3787939009 .call_frame = .{ .size = 16 * 2, .alignment = .@"16" },
3788039010 .extra_temps = .{
3788139011 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
37882 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
39012 .{ .type = .f80, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
3788339013 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
3788439014 .{ .type = .usize, .kind = .{ .extern_func = "__fmodx" } },
3788539015 .unused,
......@@ -37905,6 +39035,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3790539035 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
3790639036 } },
3790739037 }, .{
39038 .required_cc_abi = .sysv64,
3790839039 .required_features = .{ .sse, .x87, null, null },
3790939040 .src_constraints = .{
3791039041 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
......@@ -37917,7 +39048,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3791739048 .call_frame = .{ .size = 16 * 2, .alignment = .@"16" },
3791839049 .extra_temps = .{
3791939050 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
37920 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
39051 .{ .type = .f80, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
3792139052 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
3792239053 .{ .type = .usize, .kind = .{ .extern_func = "__fmodx" } },
3792339054 .unused,
......@@ -37942,6 +39073,41 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3794239073 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
3794339074 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
3794439075 } },
39076 }, .{
39077 .required_cc_abi = .win64,
39078 .src_constraints = .{
39079 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
39080 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
39081 .any,
39082 },
39083 .patterns = &.{
39084 .{ .src = .{ .to_mem, .to_mem, .none } },
39085 },
39086 .call_frame = .{ .alignment = .@"16" },
39087 .extra_temps = .{
39088 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
39089 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
39090 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
39091 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 2, .at = 2 } } },
39092 .{ .type = .usize, .kind = .{ .extern_func = "__fmodx" } },
39093 .unused,
39094 .unused,
39095 .unused,
39096 .unused,
39097 .unused,
39098 .unused,
39099 },
39100 .dst_temps = .{ .mem, .unused },
39101 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
39102 .each = .{ .once = &.{
39103 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
39104 .{ .@"0:", ._, .lea, .tmp1p, .memia(.dst0, .tmp0, .add_unaligned_size), ._, ._ },
39105 .{ ._, ._, .lea, .tmp2p, .memia(.src0, .tmp0, .add_unaligned_size), ._, ._ },
39106 .{ ._, ._, .lea, .tmp3p, .memia(.src1, .tmp0, .add_unaligned_size), ._, ._ },
39107 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
39108 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
39109 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
39110 } },
3794539111 }, .{
3794639112 .required_features = .{ .sse, null, null, null },
3794739113 .src_constraints = .{
......@@ -37950,7 +39116,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3795039116 .any,
3795139117 },
3795239118 .patterns = &.{
37953 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } },
39119 .{ .src = .{
39120 .{ .to_param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } },
39121 .{ .to_param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } },
39122 .none,
39123 } },
3795439124 },
3795539125 .call_frame = .{ .alignment = .@"16" },
3795639126 .extra_temps = .{
......@@ -37984,8 +39154,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3798439154 .call_frame = .{ .alignment = .@"16" },
3798539155 .extra_temps = .{
3798639156 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
37987 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
37988 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
39157 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
39158 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
3798939159 .{ .type = .usize, .kind = .{ .extern_func = "fmodq" } },
3799039160 .unused,
3799139161 .unused,
......@@ -38019,8 +39189,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3801939189 .call_frame = .{ .alignment = .@"16" },
3802039190 .extra_temps = .{
3802139191 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
38022 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
38023 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
39192 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
39193 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
3802439194 .{ .type = .usize, .kind = .{ .extern_func = "fmodq" } },
3802539195 .unused,
3802639196 .unused,
......@@ -38054,8 +39224,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3805439224 .call_frame = .{ .alignment = .@"16" },
3805539225 .extra_temps = .{
3805639226 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
38057 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
38058 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
39227 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
39228 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
3805939229 .{ .type = .usize, .kind = .{ .extern_func = "fmodq" } },
3806039230 .unused,
3806139231 .unused,
......@@ -38087,7 +39257,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3808739257 };
3808839258 try res[0].finish(inst, &.{ bin_op.lhs, bin_op.rhs }, &ops, cg);
3808939259 },
38090 .mod, .mod_optimized => |air_tag| if (use_old) try cg.airMulDivBinOp(inst, .mod) else {
39260 .mod, .mod_optimized => |air_tag| {
3809139261 const bin_op = air_datas[@intFromEnum(inst)].bin_op;
3809239262 var ops = try cg.tempsFromOperands(inst, .{ bin_op.lhs, bin_op.rhs });
3809339263 var res: [1]Temp = undefined;
......@@ -38383,14 +39553,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3838339553 .{ ._, ._, .div, .src1q, ._, ._, ._ },
3838439554 } },
3838539555 }, .{
38386 .required_features = .{ .@"64bit", .cmov, null, null },
39556 .required_cc_abi = .sysv64,
39557 .required_features = .{ .cmov, null, null, null },
3838739558 .src_constraints = .{ .{ .signed_int = .xword }, .{ .signed_int = .xword }, .any },
3838839559 .patterns = &.{
38389 .{ .src = .{ .{ .to_param_gpr_pair = .{ .cc = .ccc, .at = 0 } }, .to_mem, .none } },
39560 .{ .src = .{ .{ .to_param_gpr_pair = .{ .cc = .ccc, .after = 0, .at = 0 } }, .to_mem, .none } },
3839039561 },
3839139562 .call_frame = .{ .alignment = .@"16" },
3839239563 .extra_temps = .{
38393 .{ .type = .i64, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 3 } } },
39564 .{ .type = .i64, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 3, .at = 3 } } },
3839439565 .{ .type = .usize, .kind = .{ .extern_func = "__modti3" } },
3839539566 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
3839639567 .unused,
......@@ -38402,7 +39573,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3840239573 .unused,
3840339574 .unused,
3840439575 },
38405 .dst_temps = .{ .{ .ret_gpr_pair = .{ .cc = .ccc, .at = 0 } }, .unused },
39576 .dst_temps = .{ .{ .ret_gpr_pair = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
3840639577 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
3840739578 .each = .{ .once = &.{
3840839579 .{ ._, ._, .mov, .dst0q1, .mem(.src1q), ._, ._ },
......@@ -38422,14 +39593,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3842239593 .{ ._, ._, .adc, .dst0q1, .src0q0, ._, ._ },
3842339594 } },
3842439595 }, .{
38425 .required_features = .{ .@"64bit", null, null, null },
39596 .required_cc_abi = .sysv64,
3842639597 .src_constraints = .{ .{ .signed_int = .xword }, .{ .signed_int = .xword }, .any },
3842739598 .patterns = &.{
38428 .{ .src = .{ .{ .to_param_gpr_pair = .{ .cc = .ccc, .at = 0 } }, .to_mem, .none } },
39599 .{ .src = .{ .{ .to_param_gpr_pair = .{ .cc = .ccc, .after = 0, .at = 0 } }, .to_mem, .none } },
3842939600 },
3843039601 .call_frame = .{ .alignment = .@"16" },
3843139602 .extra_temps = .{
38432 .{ .type = .i64, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 3 } } },
39603 .{ .type = .i64, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 3, .at = 3 } } },
3843339604 .{ .type = .usize, .kind = .{ .extern_func = "__modti3" } },
3843439605 .unused,
3843539606 .unused,
......@@ -38441,7 +39612,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3844139612 .unused,
3844239613 .unused,
3844339614 },
38444 .dst_temps = .{ .{ .ret_gpr_pair = .{ .cc = .ccc, .at = 0 } }, .unused },
39615 .dst_temps = .{ .{ .ret_gpr_pair = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
3844539616 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
3844639617 .each = .{ .once = &.{
3844739618 .{ ._, ._, .mov, .dst0q1, .mem(.src1q), ._, ._ },
......@@ -38459,12 +39630,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3845939630 .{ ._, ._, .adc, .dst0q1, .src0q0, ._, ._ },
3846039631 } },
3846139632 }, .{
38462 .required_features = .{ .@"64bit", null, null, null },
39633 .required_cc_abi = .sysv64,
3846339634 .src_constraints = .{ .{ .unsigned_int = .xword }, .{ .unsigned_int = .xword }, .any },
3846439635 .patterns = &.{
3846539636 .{ .src = .{
38466 .{ .to_param_gpr_pair = .{ .cc = .ccc, .at = 0 } },
38467 .{ .to_param_gpr_pair = .{ .cc = .ccc, .at = 2 } },
39637 .{ .to_param_gpr_pair = .{ .cc = .ccc, .after = 0, .at = 0 } },
39638 .{ .to_param_gpr_pair = .{ .cc = .ccc, .after = 2, .at = 2 } },
3846839639 .none,
3846939640 } },
3847039641 },
......@@ -38482,7 +39653,65 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3848239653 .unused,
3848339654 .unused,
3848439655 },
38485 .dst_temps = .{ .{ .ret_gpr_pair = .{ .cc = .ccc, .at = 0 } }, .unused },
39656 .dst_temps = .{ .{ .ret_gpr_pair = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
39657 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
39658 .each = .{ .once = &.{
39659 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
39660 } },
39661 }, .{
39662 .required_cc_abi = .win64,
39663 .required_features = .{ .sse, null, null, null },
39664 .src_constraints = .{ .{ .unsigned_int = .xword }, .{ .unsigned_int = .xword }, .any },
39665 .patterns = &.{
39666 .{ .src = .{ .to_mem, .to_mem, .none } },
39667 },
39668 .call_frame = .{ .alignment = .@"16" },
39669 .extra_temps = .{
39670 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
39671 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
39672 .{ .type = .usize, .kind = .{ .extern_func = "__umodti3" } },
39673 .unused,
39674 .unused,
39675 .unused,
39676 .unused,
39677 .unused,
39678 .unused,
39679 .unused,
39680 .unused,
39681 },
39682 .dst_temps = .{ .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
39683 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
39684 .each = .{ .once = &.{
39685 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
39686 .{ ._, ._, .lea, .tmp1p, .mem(.src1), ._, ._ },
39687 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
39688 } },
39689 }, .{
39690 .required_cc_abi = .win64,
39691 .required_features = .{ .sse, null, null, null },
39692 .src_constraints = .{ .{ .unsigned_int = .xword }, .{ .unsigned_int = .xword }, .any },
39693 .patterns = &.{
39694 .{ .src = .{
39695 .{ .to_param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } },
39696 .{ .to_param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } },
39697 .none,
39698 } },
39699 },
39700 .call_frame = .{ .alignment = .@"16" },
39701 .extra_temps = .{
39702 .{ .type = .usize, .kind = .{ .extern_func = "__umodti3" } },
39703 .unused,
39704 .unused,
39705 .unused,
39706 .unused,
39707 .unused,
39708 .unused,
39709 .unused,
39710 .unused,
39711 .unused,
39712 .unused,
39713 },
39714 .dst_temps = .{ .{ .ref = .src0 }, .unused },
3848639715 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
3848739716 .each = .{ .once = &.{
3848839717 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
......@@ -38499,10 +39728,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3849939728 },
3850039729 .call_frame = .{ .alignment = .@"16" },
3850139730 .extra_temps = .{
38502 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 0 } } },
38503 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 1 } } },
38504 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 2 } } },
38505 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 3 } } },
39731 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
39732 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
39733 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 2, .at = 2 } } },
39734 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 3, .at = 3 } } },
3850639735 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
3850739736 .{ .type = .usize, .kind = .{ .extern_func = "__modei4" } },
3850839737 .unused,
......@@ -38557,10 +39786,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3855739786 },
3855839787 .call_frame = .{ .alignment = .@"16" },
3855939788 .extra_temps = .{
38560 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 0 } } },
38561 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 1 } } },
38562 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 2 } } },
38563 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 3 } } },
39789 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
39790 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
39791 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 2, .at = 2 } } },
39792 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 3, .at = 3 } } },
3856439793 .{ .type = .usize, .kind = .{ .extern_func = "__umodei4" } },
3856539794 .unused,
3856639795 .unused,
......@@ -38586,7 +39815,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3858639815 .any,
3858739816 },
3858839817 .patterns = &.{
38589 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } },
39818 .{ .src = .{
39819 .{ .to_param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } },
39820 .{ .to_param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } },
39821 .none,
39822 } },
3859039823 },
3859139824 .call_frame = .{ .alignment = .@"16" },
3859239825 .extra_temps = .{
......@@ -38627,7 +39860,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3862739860 .any,
3862839861 },
3862939862 .patterns = &.{
38630 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } },
39863 .{ .src = .{
39864 .{ .to_param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } },
39865 .{ .to_param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } },
39866 .none,
39867 } },
3863139868 },
3863239869 .call_frame = .{ .alignment = .@"16" },
3863339870 .extra_temps = .{
......@@ -38668,7 +39905,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3866839905 .any,
3866939906 },
3867039907 .patterns = &.{
38671 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } },
39908 .{ .src = .{
39909 .{ .to_param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } },
39910 .{ .to_param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } },
39911 .none,
39912 } },
3867239913 },
3867339914 .call_frame = .{ .alignment = .@"16" },
3867439915 .extra_temps = .{
......@@ -38706,7 +39947,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3870639947 .any,
3870739948 },
3870839949 .patterns = &.{
38709 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } },
39950 .{ .src = .{
39951 .{ .to_param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } },
39952 .{ .to_param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } },
39953 .none,
39954 } },
3871039955 },
3871139956 .call_frame = .{ .alignment = .@"16" },
3871239957 .extra_temps = .{
......@@ -38744,7 +39989,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3874439989 .any,
3874539990 },
3874639991 .patterns = &.{
38747 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } },
39992 .{ .src = .{
39993 .{ .to_param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } },
39994 .{ .to_param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } },
39995 .none,
39996 } },
3874839997 },
3874939998 .call_frame = .{ .alignment = .@"16" },
3875039999 .extra_temps = .{
......@@ -38782,7 +40031,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3878240031 .any,
3878340032 },
3878440033 .patterns = &.{
38785 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } },
40034 .{ .src = .{
40035 .{ .to_param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } },
40036 .{ .to_param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } },
40037 .none,
40038 } },
3878640039 },
3878740040 .call_frame = .{ .alignment = .@"16" },
3878840041 .extra_temps = .{
......@@ -38820,7 +40073,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3882040073 .any,
3882140074 },
3882240075 .patterns = &.{
38823 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } },
40076 .{ .src = .{
40077 .{ .to_param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } },
40078 .{ .to_param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } },
40079 .none,
40080 } },
3882440081 },
3882540082 .call_frame = .{ .alignment = .@"16" },
3882640083 .extra_temps = .{
......@@ -38858,7 +40115,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3885840115 .any,
3885940116 },
3886040117 .patterns = &.{
38861 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } },
40118 .{ .src = .{
40119 .{ .to_param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } },
40120 .{ .to_param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } },
40121 .none,
40122 } },
3886240123 },
3886340124 .call_frame = .{ .alignment = .@"16" },
3886440125 .extra_temps = .{
......@@ -38901,9 +40162,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3890140162 .call_frame = .{ .alignment = .@"16" },
3890240163 .extra_temps = .{
3890340164 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
38904 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
40165 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
3890540166 .{ .type = .f16, .kind = .{ .rc = .general_purpose } },
38906 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
40167 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
3890740168 .{ .type = .usize, .kind = .{ .extern_func = "__fmodh" } },
3890840169 .{ .type = .f16, .kind = .{ .reg = .dx } },
3890940170 .{ .type = .f16, .kind = .{ .reg = .ax } },
......@@ -38949,9 +40210,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3894940210 .call_frame = .{ .alignment = .@"16" },
3895040211 .extra_temps = .{
3895140212 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
38952 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
40213 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
3895340214 .{ .type = .f16, .kind = .{ .rc = .general_purpose } },
38954 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
40215 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
3895540216 .{ .type = .usize, .kind = .{ .extern_func = "__fmodh" } },
3895640217 .{ .type = .f16, .kind = .{ .reg = .dx } },
3895740218 .{ .type = .f16, .kind = .{ .reg = .ax } },
......@@ -38997,9 +40258,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3899740258 .call_frame = .{ .alignment = .@"16" },
3899840259 .extra_temps = .{
3899940260 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
39000 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
40261 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
3900140262 .{ .type = .f16, .kind = .{ .rc = .general_purpose } },
39002 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
40263 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
3900340264 .{ .type = .usize, .kind = .{ .extern_func = "__fmodh" } },
3900440265 .{ .type = .f16, .kind = .{ .reg = .dx } },
3900540266 .{ .type = .f16, .kind = .{ .reg = .ax } },
......@@ -39042,9 +40303,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3904240303 .call_frame = .{ .alignment = .@"16" },
3904340304 .extra_temps = .{
3904440305 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
39045 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
40306 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
3904640307 .{ .type = .f16, .kind = .{ .rc = .general_purpose } },
39047 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
40308 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
3904840309 .{ .type = .usize, .kind = .{ .extern_func = "__fmodh" } },
3904940310 .{ .type = .f16, .kind = .{ .reg = .dx } },
3905040311 .{ .type = .f16, .kind = .{ .reg = .ax } },
......@@ -39087,9 +40348,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3908740348 .call_frame = .{ .alignment = .@"16" },
3908840349 .extra_temps = .{
3908940350 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
39090 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
40351 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
3909140352 .{ .type = .f16, .kind = .{ .rc = .general_purpose } },
39092 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
40353 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
3909340354 .{ .type = .usize, .kind = .{ .extern_func = "__fmodh" } },
3909440355 .{ .type = .f16, .kind = .{ .reg = .dx } },
3909540356 .{ .type = .f16, .kind = .{ .reg = .ax } },
......@@ -39132,9 +40393,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3913240393 .call_frame = .{ .alignment = .@"16" },
3913340394 .extra_temps = .{
3913440395 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
39135 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
40396 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
3913640397 .{ .type = .f16, .kind = .{ .rc = .general_purpose } },
39137 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
40398 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
3913840399 .{ .type = .usize, .kind = .{ .extern_func = "__fmodh" } },
3913940400 .{ .type = .f16, .kind = .{ .reg = .dx } },
3914040401 .{ .type = .f16, .kind = .{ .reg = .ax } },
......@@ -39177,9 +40438,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3917740438 .call_frame = .{ .alignment = .@"16" },
3917840439 .extra_temps = .{
3917940440 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
39180 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
40441 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
3918140442 .{ .type = .f16, .kind = .{ .rc = .general_purpose } },
39182 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
40443 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
3918340444 .{ .type = .usize, .kind = .{ .extern_func = "__fmodh" } },
3918440445 .{ .type = .f16, .kind = .{ .reg = .dx } },
3918540446 .{ .type = .f16, .kind = .{ .reg = .ax } },
......@@ -39223,9 +40484,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3922340484 .call_frame = .{ .alignment = .@"16" },
3922440485 .extra_temps = .{
3922540486 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
39226 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
40487 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
3922740488 .{ .type = .f16, .kind = .{ .rc = .general_purpose } },
39228 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
40489 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
3922940490 .{ .type = .usize, .kind = .{ .extern_func = "__fmodh" } },
3923040491 .{ .type = .f16, .kind = .{ .reg = .dx } },
3923140492 .{ .type = .f16, .kind = .{ .reg = .ax } },
......@@ -39271,8 +40532,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3927140532 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
3927240533 .{ .type = .f16, .kind = .{ .reg = .ax } },
3927340534 .{ .type = .f32, .kind = .mem },
39274 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
39275 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
40535 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
40536 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
3927640537 .{ .type = .usize, .kind = .{ .extern_func = "__fmodh" } },
3927740538 .{ .type = .f32, .kind = .mem },
3927840539 .{ .type = .usize, .kind = .{ .extern_func = "__addhf3" } },
......@@ -39320,8 +40581,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3932040581 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
3932140582 .{ .type = .f16, .kind = .{ .reg = .ax } },
3932240583 .{ .type = .f32, .kind = .mem },
39323 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
39324 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
40584 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
40585 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
3932540586 .{ .type = .usize, .kind = .{ .extern_func = "__fmodh" } },
3932640587 .{ .type = .f32, .kind = .mem },
3932740588 .{ .type = .usize, .kind = .{ .extern_func = "__addhf3" } },
......@@ -39362,7 +40623,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3936240623 .any,
3936340624 },
3936440625 .patterns = &.{
39365 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } },
40626 .{ .src = .{
40627 .{ .to_param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } },
40628 .{ .to_param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } },
40629 .none,
40630 } },
3936640631 },
3936740632 .call_frame = .{ .alignment = .@"16" },
3936840633 .extra_temps = .{
......@@ -39400,7 +40665,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3940040665 .any,
3940140666 },
3940240667 .patterns = &.{
39403 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } },
40668 .{ .src = .{
40669 .{ .to_param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } },
40670 .{ .to_param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } },
40671 .none,
40672 } },
3940440673 },
3940540674 .call_frame = .{ .alignment = .@"16" },
3940640675 .extra_temps = .{
......@@ -39438,7 +40707,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3943840707 .any,
3943940708 },
3944040709 .patterns = &.{
39441 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } },
40710 .{ .src = .{
40711 .{ .to_param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } },
40712 .{ .to_param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } },
40713 .none,
40714 } },
3944240715 },
3944340716 .call_frame = .{ .alignment = .@"16" },
3944440717 .extra_temps = .{
......@@ -39480,8 +40753,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3948040753 .call_frame = .{ .alignment = .@"16" },
3948140754 .extra_temps = .{
3948240755 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
39483 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
39484 .{ .type = .f32, .kind = .{ .reg = .xmm1 } },
40756 .{ .type = .f32, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
40757 .{ .type = .f32, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
3948540758 .{ .type = .f32, .kind = .{ .rc = .general_purpose } },
3948640759 .{ .type = .usize, .kind = .{ .extern_func = "fmodf" } },
3948740760 .{ .type = .f32, .kind = .{ .reg = .edx } },
......@@ -39524,8 +40797,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3952440797 .call_frame = .{ .alignment = .@"16" },
3952540798 .extra_temps = .{
3952640799 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
39527 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
39528 .{ .type = .f32, .kind = .{ .reg = .xmm1 } },
40800 .{ .type = .f32, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
40801 .{ .type = .f32, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
3952940802 .{ .type = .f32, .kind = .{ .rc = .general_purpose } },
3953040803 .{ .type = .usize, .kind = .{ .extern_func = "fmodf" } },
3953140804 .{ .type = .f32, .kind = .{ .reg = .edx } },
......@@ -39568,8 +40841,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3956840841 .call_frame = .{ .alignment = .@"16" },
3956940842 .extra_temps = .{
3957040843 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
39571 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
39572 .{ .type = .f32, .kind = .{ .reg = .xmm1 } },
40844 .{ .type = .f32, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
40845 .{ .type = .f32, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
3957340846 .{ .type = .usize, .kind = .{ .extern_func = "fmodf" } },
3957440847 .{ .type = .f32, .kind = .mem },
3957540848 .{ .type = .f32, .kind = .{ .reg = .eax } },
......@@ -39605,7 +40878,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3960540878 .any,
3960640879 },
3960740880 .patterns = &.{
39608 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } },
40881 .{ .src = .{
40882 .{ .to_param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } },
40883 .{ .to_param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } },
40884 .none,
40885 } },
3960940886 },
3961040887 .call_frame = .{ .alignment = .@"16" },
3961140888 .extra_temps = .{
......@@ -39644,7 +40921,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3964440921 .any,
3964540922 },
3964640923 .patterns = &.{
39647 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } },
40924 .{ .src = .{
40925 .{ .to_param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } },
40926 .{ .to_param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } },
40927 .none,
40928 } },
3964840929 },
3964940930 .call_frame = .{ .alignment = .@"16" },
3965040931 .extra_temps = .{
......@@ -39683,7 +40964,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3968340964 .any,
3968440965 },
3968540966 .patterns = &.{
39686 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } },
40967 .{ .src = .{
40968 .{ .to_param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } },
40969 .{ .to_param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } },
40970 .none,
40971 } },
3968740972 },
3968840973 .call_frame = .{ .alignment = .@"16" },
3968940974 .extra_temps = .{
......@@ -39730,8 +41015,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3973041015 .call_frame = .{ .alignment = .@"16" },
3973141016 .extra_temps = .{
3973241017 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
39733 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
39734 .{ .type = .f64, .kind = .{ .reg = .xmm1 } },
41018 .{ .type = .f64, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
41019 .{ .type = .f64, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
3973541020 .{ .type = .f64, .kind = .{ .rc = .general_purpose } },
3973641021 .{ .type = .usize, .kind = .{ .extern_func = "fmod" } },
3973741022 .{ .type = .f64, .kind = .{ .reg = .rcx } },
......@@ -39775,8 +41060,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3977541060 .call_frame = .{ .alignment = .@"16" },
3977641061 .extra_temps = .{
3977741062 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
39778 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
39779 .{ .type = .f64, .kind = .{ .reg = .xmm1 } },
41063 .{ .type = .f64, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
41064 .{ .type = .f64, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
3978041065 .{ .type = .f64, .kind = .{ .rc = .general_purpose } },
3978141066 .{ .type = .usize, .kind = .{ .extern_func = "fmod" } },
3978241067 .{ .type = .f64, .kind = .{ .reg = .rcx } },
......@@ -39820,8 +41105,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3982041105 .call_frame = .{ .alignment = .@"16" },
3982141106 .extra_temps = .{
3982241107 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
39823 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
39824 .{ .type = .f64, .kind = .{ .reg = .xmm1 } },
41108 .{ .type = .f64, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
41109 .{ .type = .f64, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
3982541110 .{ .type = .usize, .kind = .{ .extern_func = "fmod" } },
3982641111 .{ .type = .f64, .kind = .{ .reg = .rdx } },
3982741112 .{ .type = .f64, .kind = .mem },
......@@ -39857,6 +41142,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3985741142 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
3985841143 } },
3985941144 }, .{
41145 .required_abi = .gnu,
41146 .required_cc_abi = .sysv64,
3986041147 .required_features = .{ .@"64bit", .avx, .x87, .fast_imm16 },
3986141148 .src_constraints = .{
3986241149 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
......@@ -39868,7 +41155,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3986841155 },
3986941156 .call_frame = .{ .size = 16 * 2, .alignment = .@"16" },
3987041157 .extra_temps = .{
39871 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
41158 .{ .type = .f80, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
3987241159 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
3987341160 .{ .type = .usize, .kind = .{ .extern_func = "__fmodx" } },
3987441161 .{ .type = .f80, .kind = .{ .reg = .st7 } },
......@@ -39900,6 +41187,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3990041187 .{ ._, .f_p, .add, ._, ._, ._, ._ },
3990141188 } },
3990241189 }, .{
41190 .required_abi = .gnu,
41191 .required_cc_abi = .sysv64,
3990341192 .required_features = .{ .@"64bit", .avx, .x87, null },
3990441193 .src_constraints = .{
3990541194 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
......@@ -39911,7 +41200,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3991141200 },
3991241201 .call_frame = .{ .size = 16 * 2, .alignment = .@"16" },
3991341202 .extra_temps = .{
39914 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
41203 .{ .type = .f80, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
3991541204 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
3991641205 .{ .type = .usize, .kind = .{ .extern_func = "__fmodx" } },
3991741206 .{ .type = .f80, .kind = .{ .reg = .st7 } },
......@@ -39943,6 +41232,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3994341232 .{ ._, .f_p, .add, ._, ._, ._, ._ },
3994441233 } },
3994541234 }, .{
41235 .required_abi = .gnu,
41236 .required_cc_abi = .sysv64,
3994641237 .required_features = .{ .@"64bit", .sse2, .x87, .fast_imm16 },
3994741238 .src_constraints = .{
3994841239 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
......@@ -39954,7 +41245,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3995441245 },
3995541246 .call_frame = .{ .size = 16 * 2, .alignment = .@"16" },
3995641247 .extra_temps = .{
39957 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
41248 .{ .type = .f80, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
3995841249 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
3995941250 .{ .type = .usize, .kind = .{ .extern_func = "__fmodx" } },
3996041251 .{ .type = .f80, .kind = .{ .reg = .st7 } },
......@@ -39986,6 +41277,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3998641277 .{ ._, .f_p, .add, ._, ._, ._, ._ },
3998741278 } },
3998841279 }, .{
41280 .required_abi = .gnu,
41281 .required_cc_abi = .sysv64,
3998941282 .required_features = .{ .@"64bit", .sse2, .x87, null },
3999041283 .src_constraints = .{
3999141284 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
......@@ -39997,7 +41290,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3999741290 },
3999841291 .call_frame = .{ .size = 16 * 2, .alignment = .@"16" },
3999941292 .extra_temps = .{
40000 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
41293 .{ .type = .f80, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
4000141294 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
4000241295 .{ .type = .usize, .kind = .{ .extern_func = "__fmodx" } },
4000341296 .{ .type = .f80, .kind = .{ .reg = .st7 } },
......@@ -40029,6 +41322,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
4002941322 .{ ._, .f_p, .add, ._, ._, ._, ._ },
4003041323 } },
4003141324 }, .{
41325 .required_abi = .gnu,
41326 .required_cc_abi = .sysv64,
4003241327 .required_features = .{ .@"64bit", .sse, .x87, .fast_imm16 },
4003341328 .src_constraints = .{
4003441329 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
......@@ -40040,7 +41335,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
4004041335 },
4004141336 .call_frame = .{ .size = 16 * 2, .alignment = .@"16" },
4004241337 .extra_temps = .{
40043 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
41338 .{ .type = .f80, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
4004441339 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
4004541340 .{ .type = .usize, .kind = .{ .extern_func = "__fmodx" } },
4004641341 .{ .type = .f80, .kind = .{ .reg = .st7 } },
......@@ -40072,6 +41367,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
4007241367 .{ ._, .f_p, .add, ._, ._, ._, ._ },
4007341368 } },
4007441369 }, .{
41370 .required_abi = .gnu,
41371 .required_cc_abi = .sysv64,
4007541372 .required_features = .{ .@"64bit", .sse, .x87, null },
4007641373 .src_constraints = .{
4007741374 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
......@@ -40083,7 +41380,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
4008341380 },
4008441381 .call_frame = .{ .size = 16 * 2, .alignment = .@"16" },
4008541382 .extra_temps = .{
40086 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
41383 .{ .type = .f80, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
4008741384 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
4008841385 .{ .type = .usize, .kind = .{ .extern_func = "__fmodx" } },
4008941386 .{ .type = .f80, .kind = .{ .reg = .st7 } },
......@@ -40115,6 +41412,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
4011541412 .{ ._, .f_p, .add, ._, ._, ._, ._ },
4011641413 } },
4011741414 }, .{
41415 .required_abi = .gnu,
41416 .required_cc_abi = .sysv64,
4011841417 .required_features = .{ .@"64bit", .avx, .x87, .fast_imm16 },
4011941418 .src_constraints = .{
4012041419 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
......@@ -40127,7 +41426,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
4012741426 .call_frame = .{ .size = 16 * 2, .alignment = .@"16" },
4012841427 .extra_temps = .{
4012941428 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
40130 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
41429 .{ .type = .f80, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
4013141430 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
4013241431 .{ .type = .usize, .kind = .{ .extern_func = "__fmodx" } },
4013341432 .{ .type = .f80, .kind = .{ .reg = .st7 } },
......@@ -40163,6 +41462,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
4016341462 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
4016441463 } },
4016541464 }, .{
41465 .required_abi = .gnu,
41466 .required_cc_abi = .sysv64,
4016641467 .required_features = .{ .@"64bit", .avx, .x87, null },
4016741468 .src_constraints = .{
4016841469 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
......@@ -40175,7 +41476,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
4017541476 .call_frame = .{ .size = 16 * 2, .alignment = .@"16" },
4017641477 .extra_temps = .{
4017741478 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
40178 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
41479 .{ .type = .f80, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
4017941480 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
4018041481 .{ .type = .usize, .kind = .{ .extern_func = "__fmodx" } },
4018141482 .{ .type = .f80, .kind = .{ .reg = .st7 } },
......@@ -40211,6 +41512,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
4021141512 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
4021241513 } },
4021341514 }, .{
41515 .required_abi = .gnu,
41516 .required_cc_abi = .sysv64,
4021441517 .required_features = .{ .@"64bit", .sse2, .x87, .fast_imm16 },
4021541518 .src_constraints = .{
4021641519 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
......@@ -40223,7 +41526,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
4022341526 .call_frame = .{ .size = 16 * 2, .alignment = .@"16" },
4022441527 .extra_temps = .{
4022541528 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
40226 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
41529 .{ .type = .f80, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
4022741530 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
4022841531 .{ .type = .usize, .kind = .{ .extern_func = "__fmodx" } },
4022941532 .{ .type = .f80, .kind = .{ .reg = .st7 } },
......@@ -40259,6 +41562,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
4025941562 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
4026041563 } },
4026141564 }, .{
41565 .required_abi = .gnu,
41566 .required_cc_abi = .sysv64,
4026241567 .required_features = .{ .@"64bit", .sse2, .x87, null },
4026341568 .src_constraints = .{
4026441569 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
......@@ -40271,7 +41576,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
4027141576 .call_frame = .{ .size = 16 * 2, .alignment = .@"16" },
4027241577 .extra_temps = .{
4027341578 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
40274 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
41579 .{ .type = .f80, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
4027541580 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
4027641581 .{ .type = .usize, .kind = .{ .extern_func = "__fmodx" } },
4027741582 .{ .type = .f80, .kind = .{ .reg = .st7 } },
......@@ -40307,6 +41612,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
4030741612 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
4030841613 } },
4030941614 }, .{
41615 .required_abi = .gnu,
41616 .required_cc_abi = .sysv64,
4031041617 .required_features = .{ .@"64bit", .sse, .x87, .fast_imm16 },
4031141618 .src_constraints = .{
4031241619 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
......@@ -40319,7 +41626,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
4031941626 .call_frame = .{ .size = 16 * 2, .alignment = .@"16" },
4032041627 .extra_temps = .{
4032141628 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
40322 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
41629 .{ .type = .f80, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
4032341630 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
4032441631 .{ .type = .usize, .kind = .{ .extern_func = "__fmodx" } },
4032541632 .{ .type = .f80, .kind = .{ .reg = .st7 } },
......@@ -40355,6 +41662,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
4035541662 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
4035641663 } },
4035741664 }, .{
41665 .required_abi = .gnu,
41666 .required_cc_abi = .sysv64,
4035841667 .required_features = .{ .@"64bit", .sse, .x87, null },
4035941668 .src_constraints = .{
4036041669 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
......@@ -40367,7 +41676,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
4036741676 .call_frame = .{ .size = 16 * 2, .alignment = .@"16" },
4036841677 .extra_temps = .{
4036941678 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
40370 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
41679 .{ .type = .f80, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
4037141680 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
4037241681 .{ .type = .usize, .kind = .{ .extern_func = "__fmodx" } },
4037341682 .{ .type = .f80, .kind = .{ .reg = .st7 } },
......@@ -40410,7 +41719,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
4041041719 .any,
4041141720 },
4041241721 .patterns = &.{
40413 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } },
41722 .{ .src = .{
41723 .{ .to_param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } },
41724 .{ .to_param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } },
41725 .none,
41726 } },
4041441727 },
4041541728 .call_frame = .{ .alignment = .@"16" },
4041641729 .extra_temps = .{
......@@ -40451,7 +41764,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
4045141764 .any,
4045241765 },
4045341766 .patterns = &.{
40454 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } },
41767 .{ .src = .{
41768 .{ .to_param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } },
41769 .{ .to_param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } },
41770 .none,
41771 } },
4045541772 },
4045641773 .call_frame = .{ .alignment = .@"16" },
4045741774 .extra_temps = .{
......@@ -40492,7 +41809,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
4049241809 .any,
4049341810 },
4049441811 .patterns = &.{
40495 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } },
41812 .{ .src = .{
41813 .{ .to_param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } },
41814 .{ .to_param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } },
41815 .none,
41816 } },
4049641817 },
4049741818 .call_frame = .{ .alignment = .@"16" },
4049841819 .extra_temps = .{
......@@ -40534,7 +41855,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
4053441855 .any,
4053541856 },
4053641857 .patterns = &.{
40537 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } },
41858 .{ .src = .{
41859 .{ .to_param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } },
41860 .{ .to_param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } },
41861 .none,
41862 } },
4053841863 },
4053941864 .call_frame = .{ .alignment = .@"16" },
4054041865 .extra_temps = .{
......@@ -40579,8 +41904,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
4057941904 .call_frame = .{ .alignment = .@"16" },
4058041905 .extra_temps = .{
4058141906 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
40582 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
40583 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
41907 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
41908 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
4058441909 .{ .type = .usize, .kind = .{ .extern_func = "fmodq" } },
4058541910 .{ .type = .f128, .kind = .{ .reg = .rcx } },
4058641911 .{ .type = .f128, .kind = .{ .reg = .rdx } },
......@@ -40625,8 +41950,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
4062541950 .call_frame = .{ .alignment = .@"16" },
4062641951 .extra_temps = .{
4062741952 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
40628 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
40629 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
41953 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
41954 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
4063041955 .{ .type = .usize, .kind = .{ .extern_func = "fmodq" } },
4063141956 .{ .type = .f128, .kind = .{ .reg = .rcx } },
4063241957 .{ .type = .f128, .kind = .{ .reg = .rdx } },
......@@ -40671,8 +41996,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
4067141996 .call_frame = .{ .alignment = .@"16" },
4067241997 .extra_temps = .{
4067341998 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
40674 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
40675 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
41999 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
42000 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
4067642001 .{ .type = .usize, .kind = .{ .extern_func = "fmodq" } },
4067742002 .{ .type = .f128, .kind = .{ .reg = .rcx } },
4067842003 .{ .type = .f128, .kind = .{ .reg = .rdx } },
......@@ -40718,8 +42043,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
4071842043 .call_frame = .{ .alignment = .@"16" },
4071942044 .extra_temps = .{
4072042045 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
40721 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
40722 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
42046 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
42047 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
4072342048 .{ .type = .usize, .kind = .{ .extern_func = "fmodq" } },
4072442049 .{ .type = .f128, .kind = .{ .reg = .rdx } },
4072542050 .{ .type = .f128, .kind = .mem },
......@@ -40761,7 +42086,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
4076142086 };
4076242087 try res[0].finish(inst, &.{ bin_op.lhs, bin_op.rhs }, &ops, cg);
4076342088 },
40764 .ptr_add => |air_tag| if (use_old) try cg.airPtrArithmetic(inst, air_tag) else {
42089 .ptr_add => |air_tag| {
4076542090 const ty_pl = air_datas[@intFromEnum(inst)].ty_pl;
4076642091 const bin_op = cg.air.extraData(Air.Bin, ty_pl.payload).data;
4076742092 var ops = try cg.tempsFromOperands(inst, .{ bin_op.lhs, bin_op.rhs });
......@@ -40817,7 +42142,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
4081742142 .patterns = &.{
4081842143 .{ .src = .{ .to_gpr, .to_gpr, .none } },
4081942144 },
40820 .dst_temps = .{ .{ .ref = .src1 }, .unused },
42145 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src1, .rc = .general_purpose } }, .unused },
4082142146 .each = .{ .once = &.{
4082242147 .{ ._, ._, .lea, .dst0p, .leasi(.src1, .@"4", .src1), ._, ._ },
4082342148 .{ ._, ._, .lea, .dst0p, .leai(.src0, .dst0), ._, ._ },
......@@ -40838,7 +42163,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
4083842163 .patterns = &.{
4083942164 .{ .src = .{ .to_gpr, .to_gpr, .none } },
4084042165 },
40841 .dst_temps = .{ .{ .ref = .src1 }, .unused },
42166 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src1, .rc = .general_purpose } }, .unused },
4084242167 .each = .{ .once = &.{
4084342168 .{ ._, ._, .lea, .dst0p, .leasi(.src1, .@"8", .src1), ._, ._ },
4084442169 .{ ._, ._, .lea, .dst0p, .leai(.src0, .dst0), ._, ._ },
......@@ -40875,7 +42200,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
4087542200 } else res[0] = ops[0];
4087642201 try res[0].finish(inst, &.{ bin_op.lhs, bin_op.rhs }, &ops, cg);
4087742202 },
40878 .ptr_sub => |air_tag| if (use_old) try cg.airPtrArithmetic(inst, air_tag) else {
42203 .ptr_sub => |air_tag| {
4087942204 const ty_pl = air_datas[@intFromEnum(inst)].ty_pl;
4088042205 const bin_op = cg.air.extraData(Air.Bin, ty_pl.payload).data;
4088142206 var ops = try cg.tempsFromOperands(inst, .{ bin_op.lhs, bin_op.rhs });
......@@ -41004,7 +42329,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
4100442329 } else res[0] = ops[0];
4100542330 try res[0].finish(inst, &.{ bin_op.lhs, bin_op.rhs }, &ops, cg);
4100642331 },
41007 .max => |air_tag| if (use_old) try cg.airBinOp(inst, air_tag) else {
42332 .max => |air_tag| {
4100842333 const bin_op = air_datas[@intFromEnum(inst)].bin_op;
4100942334 var ops = try cg.tempsFromOperands(inst, .{ bin_op.lhs, bin_op.rhs });
4101042335 var res: [1]Temp = undefined;
......@@ -43810,7 +45135,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
4381045135 .any,
4381145136 },
4381245137 .patterns = &.{
43813 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } },
45138 .{ .src = .{
45139 .{ .to_param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } },
45140 .{ .to_param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } },
45141 .none,
45142 } },
4381445143 },
4381545144 .call_frame = .{ .alignment = .@"16" },
4381645145 .extra_temps = .{
......@@ -43950,8 +45279,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
4395045279 .call_frame = .{ .alignment = .@"16" },
4395145280 .extra_temps = .{
4395245281 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
43953 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
43954 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
45282 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
45283 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
4395545284 .{ .type = .usize, .kind = .{ .extern_func = "__fmaxh" } },
4395645285 .unused,
4395745286 .unused,
......@@ -43986,8 +45315,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
4398645315 .call_frame = .{ .alignment = .@"16" },
4398745316 .extra_temps = .{
4398845317 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
43989 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
43990 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
45318 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
45319 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
4399145320 .{ .type = .usize, .kind = .{ .extern_func = "__fmaxh" } },
4399245321 .unused,
4399345322 .unused,
......@@ -44023,8 +45352,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
4402345352 .call_frame = .{ .alignment = .@"16" },
4402445353 .extra_temps = .{
4402545354 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
44026 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
44027 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
45355 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
45356 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
4402845357 .{ .type = .usize, .kind = .{ .extern_func = "__fmaxh" } },
4402945358 .{ .type = .f16, .kind = .{ .reg = .ax } },
4403045359 .unused,
......@@ -44063,8 +45392,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
4406345392 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
4406445393 .{ .type = .f16, .kind = .{ .reg = .ax } },
4406545394 .{ .type = .f32, .kind = .mem },
44066 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
44067 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
45395 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
45396 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
4406845397 .{ .type = .usize, .kind = .{ .extern_func = "__fmaxh" } },
4406945398 .unused,
4407045399 .unused,
......@@ -44476,7 +45805,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
4447645805 .any,
4447745806 },
4447845807 .patterns = &.{
44479 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } },
45808 .{ .src = .{
45809 .{ .to_param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } },
45810 .{ .to_param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } },
45811 .none,
45812 } },
4448045813 },
4448145814 .call_frame = .{ .alignment = .@"16" },
4448245815 .extra_temps = .{
......@@ -44733,8 +46066,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
4473346066 .call_frame = .{ .alignment = .@"16" },
4473446067 .extra_temps = .{
4473546068 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
44736 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
44737 .{ .type = .f64, .kind = .{ .reg = .xmm1 } },
46069 .{ .type = .f64, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
46070 .{ .type = .f64, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
4473846071 .{ .type = .usize, .kind = .{ .extern_func = "fmax" } },
4473946072 .unused,
4474046073 .unused,
......@@ -45020,7 +46353,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
4502046353 .any,
4502146354 },
4502246355 .patterns = &.{
45023 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } },
46356 .{ .src = .{
46357 .{ .to_param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } },
46358 .{ .to_param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } },
46359 .none,
46360 } },
4502446361 },
4502546362 .call_frame = .{ .alignment = .@"16" },
4502646363 .extra_temps = .{
......@@ -45054,8 +46391,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
4505446391 .call_frame = .{ .alignment = .@"16" },
4505546392 .extra_temps = .{
4505646393 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
45057 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
45058 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
46394 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
46395 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
4505946396 .{ .type = .usize, .kind = .{ .extern_func = "fmaxq" } },
4506046397 .unused,
4506146398 .unused,
......@@ -45089,8 +46426,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
4508946426 .call_frame = .{ .alignment = .@"16" },
4509046427 .extra_temps = .{
4509146428 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
45092 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
45093 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
46429 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
46430 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
4509446431 .{ .type = .usize, .kind = .{ .extern_func = "fmaxq" } },
4509546432 .unused,
4509646433 .unused,
......@@ -45124,8 +46461,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
4512446461 .call_frame = .{ .alignment = .@"16" },
4512546462 .extra_temps = .{
4512646463 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
45127 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
45128 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
46464 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
46465 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
4512946466 .{ .type = .usize, .kind = .{ .extern_func = "fmaxq" } },
4513046467 .unused,
4513146468 .unused,
......@@ -45157,7 +46494,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
4515746494 };
4515846495 try res[0].finish(inst, &.{ bin_op.lhs, bin_op.rhs }, &ops, cg);
4515946496 },
45160 .min => |air_tag| if (use_old) try cg.airBinOp(inst, air_tag) else {
46497 .min => |air_tag| {
4516146498 const bin_op = air_datas[@intFromEnum(inst)].bin_op;
4516246499 var ops = try cg.tempsFromOperands(inst, .{ bin_op.lhs, bin_op.rhs });
4516346500 var res: [1]Temp = undefined;
......@@ -47969,7 +49306,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
4796949306 .any,
4797049307 },
4797149308 .patterns = &.{
47972 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } },
49309 .{ .src = .{
49310 .{ .to_param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } },
49311 .{ .to_param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } },
49312 .none,
49313 } },
4797349314 },
4797449315 .call_frame = .{ .alignment = .@"16" },
4797549316 .extra_temps = .{
......@@ -48109,8 +49450,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
4810949450 .call_frame = .{ .alignment = .@"16" },
4811049451 .extra_temps = .{
4811149452 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
48112 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
48113 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
49453 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
49454 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
4811449455 .{ .type = .usize, .kind = .{ .extern_func = "__fminh" } },
4811549456 .unused,
4811649457 .unused,
......@@ -48145,8 +49486,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
4814549486 .call_frame = .{ .alignment = .@"16" },
4814649487 .extra_temps = .{
4814749488 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
48148 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
48149 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
49489 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
49490 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
4815049491 .{ .type = .usize, .kind = .{ .extern_func = "__fminh" } },
4815149492 .unused,
4815249493 .unused,
......@@ -48182,8 +49523,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
4818249523 .call_frame = .{ .alignment = .@"16" },
4818349524 .extra_temps = .{
4818449525 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
48185 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
48186 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
49526 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
49527 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
4818749528 .{ .type = .usize, .kind = .{ .extern_func = "__fminh" } },
4818849529 .{ .type = .f16, .kind = .{ .reg = .ax } },
4818949530 .unused,
......@@ -48222,8 +49563,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
4822249563 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
4822349564 .{ .type = .f16, .kind = .{ .reg = .ax } },
4822449565 .{ .type = .f32, .kind = .mem },
48225 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
48226 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
49566 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
49567 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
4822749568 .{ .type = .usize, .kind = .{ .extern_func = "__fminh" } },
4822849569 .unused,
4822949570 .unused,
......@@ -48635,7 +49976,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
4863549976 .any,
4863649977 },
4863749978 .patterns = &.{
48638 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } },
49979 .{ .src = .{
49980 .{ .to_param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } },
49981 .{ .to_param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } },
49982 .none,
49983 } },
4863949984 },
4864049985 .call_frame = .{ .alignment = .@"16" },
4864149986 .extra_temps = .{
......@@ -48892,8 +50237,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
4889250237 .call_frame = .{ .alignment = .@"16" },
4889350238 .extra_temps = .{
4889450239 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
48895 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
48896 .{ .type = .f64, .kind = .{ .reg = .xmm1 } },
50240 .{ .type = .f64, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
50241 .{ .type = .f64, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
4889750242 .{ .type = .usize, .kind = .{ .extern_func = "fmin" } },
4889850243 .unused,
4889950244 .unused,
......@@ -49167,7 +50512,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
4916750512 .any,
4916850513 },
4916950514 .patterns = &.{
49170 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } },
50515 .{ .src = .{
50516 .{ .to_param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } },
50517 .{ .to_param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } },
50518 .none,
50519 } },
4917150520 },
4917250521 .call_frame = .{ .alignment = .@"16" },
4917350522 .extra_temps = .{
......@@ -49201,8 +50550,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
4920150550 .call_frame = .{ .alignment = .@"16" },
4920250551 .extra_temps = .{
4920350552 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
49204 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
49205 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
50553 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
50554 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
4920650555 .{ .type = .usize, .kind = .{ .extern_func = "fminq" } },
4920750556 .unused,
4920850557 .unused,
......@@ -49236,8 +50585,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
4923650585 .call_frame = .{ .alignment = .@"16" },
4923750586 .extra_temps = .{
4923850587 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
49239 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
49240 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
50588 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
50589 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
4924150590 .{ .type = .usize, .kind = .{ .extern_func = "fminq" } },
4924250591 .unused,
4924350592 .unused,
......@@ -49271,8 +50620,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
4927150620 .call_frame = .{ .alignment = .@"16" },
4927250621 .extra_temps = .{
4927350622 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
49274 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
49275 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
50623 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
50624 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
4927650625 .{ .type = .usize, .kind = .{ .extern_func = "fminq" } },
4927750626 .unused,
4927850627 .unused,
......@@ -49304,10 +50653,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
4930450653 };
4930550654 try res[0].finish(inst, &.{ bin_op.lhs, bin_op.rhs }, &ops, cg);
4930650655 },
49307 .add_with_overflow => |air_tag| if (use_old) try cg.airAddSubWithOverflow(inst) else fallback: {
50656 .add_with_overflow => |air_tag| {
4930850657 const ty_pl = air_datas[@intFromEnum(inst)].ty_pl;
4930950658 const bin_op = cg.air.extraData(Air.Bin, ty_pl.payload).data;
49310 if (cg.typeOf(bin_op.lhs).isVector(zcu)) break :fallback try cg.airAddSubWithOverflow(inst);
4931150659 var ops = try cg.tempsFromOperands(inst, .{ bin_op.lhs, bin_op.rhs });
4931250660 var res: [2]Temp = undefined;
4931350661 cg.select(&res, &.{ ty_pl.ty.toType(), .u1 }, &ops, comptime &.{ .{
......@@ -50155,10 +51503,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
5015551503 try res[0].withOverflow(&res[1], cg);
5015651504 try res[0].finish(inst, &.{ bin_op.lhs, bin_op.rhs }, &ops, cg);
5015751505 },
50158 .sub_with_overflow => |air_tag| if (use_old) try cg.airAddSubWithOverflow(inst) else fallback: {
51506 .sub_with_overflow => |air_tag| {
5015951507 const ty_pl = air_datas[@intFromEnum(inst)].ty_pl;
5016051508 const bin_op = cg.air.extraData(Air.Bin, ty_pl.payload).data;
50161 if (cg.typeOf(bin_op.lhs).isVector(zcu)) break :fallback try cg.airAddSubWithOverflow(inst);
5016251509 var ops = try cg.tempsFromOperands(inst, .{ bin_op.lhs, bin_op.rhs });
5016351510 var res: [2]Temp = undefined;
5016451511 cg.select(&res, &.{ ty_pl.ty.toType(), .u1 }, &ops, comptime &.{ .{
......@@ -51061,10 +52408,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
5106152408 try res[0].withOverflow(&res[1], cg);
5106252409 try res[0].finish(inst, &.{ bin_op.lhs, bin_op.rhs }, &ops, cg);
5106352410 },
51064 .mul_with_overflow => |air_tag| if (use_old) try cg.airMulWithOverflow(inst) else fallback: {
52411 .mul_with_overflow => |air_tag| {
5106552412 const ty_pl = air_datas[@intFromEnum(inst)].ty_pl;
5106652413 const bin_op = cg.air.extraData(Air.Bin, ty_pl.payload).data;
51067 if (cg.typeOf(bin_op.lhs).isVector(zcu)) break :fallback try cg.airMulWithOverflow(inst);
5106852414 var ops = try cg.tempsFromOperands(inst, .{ bin_op.lhs, bin_op.rhs });
5106952415 var res: [2]Temp = undefined;
5107052416 cg.select(&res, &.{ ty_pl.ty.toType(), .u1 }, &ops, comptime &.{ .{
......@@ -54659,10 +56005,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
5465956005 try res[0].withOverflow(&res[1], cg);
5466056006 try res[0].finish(inst, &.{ bin_op.lhs, bin_op.rhs }, &ops, cg);
5466156007 },
54662 .shl_with_overflow => |air_tag| if (use_old) try cg.airShlWithOverflow(inst) else fallback: {
56008 .shl_with_overflow => |air_tag| {
5466356009 const ty_pl = air_datas[@intFromEnum(inst)].ty_pl;
5466456010 const bin_op = cg.air.extraData(Air.Bin, ty_pl.payload).data;
54665 if (cg.typeOf(bin_op.lhs).isVector(zcu)) break :fallback try cg.airShlWithOverflow(inst);
5466656011 var ops = try cg.tempsFromOperands(inst, .{ bin_op.lhs, bin_op.rhs });
5466756012 var res: [2]Temp = undefined;
5466856013 cg.select(&res, &.{ ty_pl.ty.toType(), .u1 }, &ops, comptime &.{ .{
......@@ -55515,7 +56860,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
5551556860 .{ ._, ._, .mov, .tmp1d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
5551656861 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
5551756862 .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },
55518 .{ ._, ._, .lea, .tmp2p, .memsi(.src0q, .@"8", .tmp1), ._, ._ },
56863 .{ ._, ._, .lea, .tmp2p, .memsi(.src0, .@"8", .tmp1), ._, ._ },
5551956864 .{ ._, ._, .mov, .tmp3q, .memad(.src0q, .add_size, -8), ._, ._ },
5552056865 .{ ._, ._, .mov, .tmp4q, .lea(.tmp2q), ._, ._ },
5552156866 .{ ._, ._r, .sa, .tmp3q, .ui(63), ._, ._ },
......@@ -55579,7 +56924,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
5557956924 .{ ._, ._, .mov, .tmp1d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
5558056925 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
5558156926 .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },
55582 .{ ._, ._, .lea, .tmp2p, .memsi(.src0q, .@"8", .tmp1), ._, ._ },
56927 .{ ._, ._, .lea, .tmp2p, .memsi(.src0, .@"8", .tmp1), ._, ._ },
5558356928 .{ ._, ._, .mov, .tmp3q, .memad(.src0q, .add_size, -8), ._, ._ },
5558456929 .{ ._, ._, .mov, .tmp4q, .lea(.tmp2q), ._, ._ },
5558556930 .{ ._, ._r, .sa, .tmp3q, .ui(63), ._, ._ },
......@@ -55643,7 +56988,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
5564356988 .{ ._, ._, .mov, .tmp1d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
5564456989 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
5564556990 .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },
55646 .{ ._, ._, .lea, .tmp2p, .memsi(.src0q, .@"8", .tmp1), ._, ._ },
56991 .{ ._, ._, .lea, .tmp2p, .memsi(.src0, .@"8", .tmp1), ._, ._ },
5564756992 .{ ._, ._, .mov, .tmp3q, .memad(.src0q, .add_size, -8), ._, ._ },
5564856993 .{ ._, ._, .mov, .tmp4q, .lea(.tmp2q), ._, ._ },
5564956994 .{ ._, ._r, .sa, .tmp3q, .ui(63), ._, ._ },
......@@ -55707,7 +57052,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
5570757052 .{ ._, ._, .mov, .tmp1d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
5570857053 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
5570957054 .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },
55710 .{ ._, ._, .lea, .tmp2p, .memsi(.src0q, .@"8", .tmp1), ._, ._ },
57055 .{ ._, ._, .lea, .tmp2p, .memsi(.src0, .@"8", .tmp1), ._, ._ },
5571157056 .{ ._, ._, .mov, .tmp3q, .memad(.src0q, .add_size, -8), ._, ._ },
5571257057 .{ ._, ._, .mov, .tmp4q, .lea(.tmp2q), ._, ._ },
5571357058 .{ ._, ._r, .sa, .tmp3q, .ui(63), ._, ._ },
......@@ -55771,7 +57116,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
5577157116 .{ ._, ._, .mov, .tmp1d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
5577257117 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
5577357118 .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },
55774 .{ ._, ._, .lea, .tmp2p, .memsi(.src0q, .@"8", .tmp1), ._, ._ },
57119 .{ ._, ._, .lea, .tmp2p, .memsi(.src0, .@"8", .tmp1), ._, ._ },
5577557120 .{ ._, ._, .mov, .tmp3q, .lea(.tmp2q), ._, ._ },
5577657121 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
5577757122 .{ ._, ._ld, .sh, .tmp4q, .tmp3q, .src1b, ._ },
......@@ -55827,7 +57172,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
5582757172 .{ ._, ._, .mov, .tmp1d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
5582857173 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
5582957174 .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },
55830 .{ ._, ._, .lea, .tmp2p, .memsi(.src0q, .@"8", .tmp1), ._, ._ },
57175 .{ ._, ._, .lea, .tmp2p, .memsi(.src0, .@"8", .tmp1), ._, ._ },
5583157176 .{ ._, ._, .mov, .tmp3q, .lea(.tmp2q), ._, ._ },
5583257177 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
5583357178 .{ ._, ._ld, .sh, .tmp4q, .tmp3q, .src1b, ._ },
......@@ -55883,7 +57228,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
5588357228 .{ ._, ._, .mov, .tmp1d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
5588457229 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
5588557230 .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },
55886 .{ ._, ._, .lea, .tmp2p, .memsi(.src0q, .@"8", .tmp1), ._, ._ },
57231 .{ ._, ._, .lea, .tmp2p, .memsi(.src0, .@"8", .tmp1), ._, ._ },
5588757232 .{ ._, ._, .mov, .tmp3q, .lea(.tmp2q), ._, ._ },
5588857233 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
5588957234 .{ ._, ._ld, .sh, .tmp4q, .tmp3q, .src1b, ._ },
......@@ -55939,7 +57284,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
5593957284 .{ ._, ._, .mov, .tmp1d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
5594057285 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
5594157286 .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },
55942 .{ ._, ._, .lea, .tmp2p, .memsi(.src0q, .@"8", .tmp1), ._, ._ },
57287 .{ ._, ._, .lea, .tmp2p, .memsi(.src0, .@"8", .tmp1), ._, ._ },
5594357288 .{ ._, ._, .mov, .tmp3q, .lea(.tmp2q), ._, ._ },
5594457289 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
5594557290 .{ ._, ._ld, .sh, .tmp4q, .tmp3q, .src1b, ._ },
......@@ -55995,7 +57340,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
5599557340 .{ ._, ._, .mov, .tmp1d, .sia(-2, .src0, .add_size_div_8), ._, ._ },
5599657341 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
5599757342 .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },
55998 .{ ._, ._, .lea, .tmp2p, .memsi(.src0q, .@"8", .tmp1), ._, ._ },
57343 .{ ._, ._, .lea, .tmp2p, .memsi(.src0, .@"8", .tmp1), ._, ._ },
5599957344 .{ ._, ._, .mov, .tmp3q, .memad(.src0q, .add_size, -8), ._, ._ },
5600057345 .{ ._, ._, .mov, .tmp4q, .lea(.tmp2q), ._, ._ },
5600157346 .{ ._, ._, .mov, .tmp5q, .tmp3q, ._, ._ },
......@@ -56059,7 +57404,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
5605957404 .{ ._, ._, .mov, .tmp1d, .sia(-2, .src0, .add_size_div_8), ._, ._ },
5606057405 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
5606157406 .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },
56062 .{ ._, ._, .lea, .tmp2p, .memsi(.src0q, .@"8", .tmp1), ._, ._ },
57407 .{ ._, ._, .lea, .tmp2p, .memsi(.src0, .@"8", .tmp1), ._, ._ },
5606357408 .{ ._, ._, .mov, .tmp3q, .memad(.src0q, .add_size, -8), ._, ._ },
5606457409 .{ ._, ._, .mov, .tmp4q, .lea(.tmp2q), ._, ._ },
5606557410 .{ ._, ._, .mov, .tmp5q, .tmp3q, ._, ._ },
......@@ -56123,7 +57468,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
5612357468 .{ ._, ._, .mov, .tmp1d, .sia(-2, .src0, .add_size_div_8), ._, ._ },
5612457469 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
5612557470 .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },
56126 .{ ._, ._, .lea, .tmp2p, .memsi(.src0q, .@"8", .tmp1), ._, ._ },
57471 .{ ._, ._, .lea, .tmp2p, .memsi(.src0, .@"8", .tmp1), ._, ._ },
5612757472 .{ ._, ._, .mov, .tmp3q, .memad(.src0q, .add_size, -8), ._, ._ },
5612857473 .{ ._, ._, .mov, .tmp4q, .lea(.tmp2q), ._, ._ },
5612957474 .{ ._, ._, .mov, .tmp5q, .tmp3q, ._, ._ },
......@@ -56187,7 +57532,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
5618757532 .{ ._, ._, .mov, .tmp1d, .sia(-2, .src0, .add_size_div_8), ._, ._ },
5618857533 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
5618957534 .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },
56190 .{ ._, ._, .lea, .tmp2p, .memsi(.src0q, .@"8", .tmp1), ._, ._ },
57535 .{ ._, ._, .lea, .tmp2p, .memsi(.src0, .@"8", .tmp1), ._, ._ },
5619157536 .{ ._, ._, .mov, .tmp3q, .memad(.src0q, .add_size, -8), ._, ._ },
5619257537 .{ ._, ._, .mov, .tmp4q, .lea(.tmp2q), ._, ._ },
5619357538 .{ ._, ._, .mov, .tmp5q, .tmp3q, ._, ._ },
......@@ -56251,7 +57596,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
5625157596 .{ ._, ._, .mov, .tmp1d, .sia(-2, .src0, .add_size_div_8), ._, ._ },
5625257597 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
5625357598 .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },
56254 .{ ._, ._, .lea, .tmp2p, .memsi(.src0q, .@"8", .tmp1), ._, ._ },
57599 .{ ._, ._, .lea, .tmp2p, .memsi(.src0, .@"8", .tmp1), ._, ._ },
5625557600 .{ ._, ._, .mov, .tmp3q, .lea(.tmp2q), ._, ._ },
5625657601 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
5625757602 .{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -8), .tmp4q, ._, ._ },
......@@ -56308,7 +57653,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
5630857653 .{ ._, ._, .mov, .tmp1d, .sia(-2, .src0, .add_size_div_8), ._, ._ },
5630957654 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
5631057655 .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },
56311 .{ ._, ._, .lea, .tmp2p, .memsi(.src0q, .@"8", .tmp1), ._, ._ },
57656 .{ ._, ._, .lea, .tmp2p, .memsi(.src0, .@"8", .tmp1), ._, ._ },
5631257657 .{ ._, ._, .mov, .tmp3q, .lea(.tmp2q), ._, ._ },
5631357658 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
5631457659 .{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -8), .tmp4q, ._, ._ },
......@@ -56365,7 +57710,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
5636557710 .{ ._, ._, .mov, .tmp1d, .sia(-2, .src0, .add_size_div_8), ._, ._ },
5636657711 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
5636757712 .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },
56368 .{ ._, ._, .lea, .tmp2p, .memsi(.src0q, .@"8", .tmp1), ._, ._ },
57713 .{ ._, ._, .lea, .tmp2p, .memsi(.src0, .@"8", .tmp1), ._, ._ },
5636957714 .{ ._, ._, .mov, .tmp3q, .lea(.tmp2q), ._, ._ },
5637057715 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
5637157716 .{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -8), .tmp4q, ._, ._ },
......@@ -56422,7 +57767,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
5642257767 .{ ._, ._, .mov, .tmp1d, .sia(-2, .src0, .add_size_div_8), ._, ._ },
5642357768 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
5642457769 .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },
56425 .{ ._, ._, .lea, .tmp2p, .memsi(.src0q, .@"8", .tmp1), ._, ._ },
57770 .{ ._, ._, .lea, .tmp2p, .memsi(.src0, .@"8", .tmp1), ._, ._ },
5642657771 .{ ._, ._, .mov, .tmp3q, .lea(.tmp2q), ._, ._ },
5642757772 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
5642857773 .{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -8), .tmp4q, ._, ._ },
......@@ -56479,7 +57824,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
5647957824 .{ ._, ._, .mov, .tmp1d, .sia(-2, .src0, .add_size_div_8), ._, ._ },
5648057825 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
5648157826 .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },
56482 .{ ._, ._, .lea, .tmp2p, .memsi(.src0q, .@"8", .tmp1), ._, ._ },
57827 .{ ._, ._, .lea, .tmp2p, .memsi(.src0, .@"8", .tmp1), ._, ._ },
5648357828 .{ ._, ._, .mov, .tmp3q, .memad(.src0q, .add_size, -8), ._, ._ },
5648457829 .{ ._, ._, .mov, .tmp4q, .lea(.tmp2q), ._, ._ },
5648557830 .{ ._, ._, .mov, .tmp5q, .tmp3q, ._, ._ },
......@@ -56549,7 +57894,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
5654957894 .{ ._, ._, .mov, .tmp1d, .sia(-2, .src0, .add_size_div_8), ._, ._ },
5655057895 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
5655157896 .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },
56552 .{ ._, ._, .lea, .tmp2p, .memsi(.src0q, .@"8", .tmp1), ._, ._ },
57897 .{ ._, ._, .lea, .tmp2p, .memsi(.src0, .@"8", .tmp1), ._, ._ },
5655357898 .{ ._, ._, .mov, .tmp3q, .memad(.src0q, .add_size, -8), ._, ._ },
5655457899 .{ ._, ._, .mov, .tmp4q, .lea(.tmp2q), ._, ._ },
5655557900 .{ ._, ._, .mov, .tmp5q, .tmp3q, ._, ._ },
......@@ -56619,7 +57964,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
5661957964 .{ ._, ._, .mov, .tmp1d, .sia(-2, .src0, .add_size_div_8), ._, ._ },
5662057965 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
5662157966 .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },
56622 .{ ._, ._, .lea, .tmp2p, .memsi(.src0q, .@"8", .tmp1), ._, ._ },
57967 .{ ._, ._, .lea, .tmp2p, .memsi(.src0, .@"8", .tmp1), ._, ._ },
5662357968 .{ ._, ._, .mov, .tmp3q, .memad(.src0q, .add_size, -8), ._, ._ },
5662457969 .{ ._, ._, .mov, .tmp4q, .lea(.tmp2q), ._, ._ },
5662557970 .{ ._, ._, .mov, .tmp5q, .tmp3q, ._, ._ },
......@@ -56689,7 +58034,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
5668958034 .{ ._, ._, .mov, .tmp1d, .sia(-2, .src0, .add_size_div_8), ._, ._ },
5669058035 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
5669158036 .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },
56692 .{ ._, ._, .lea, .tmp2p, .memsi(.src0q, .@"8", .tmp1), ._, ._ },
58037 .{ ._, ._, .lea, .tmp2p, .memsi(.src0, .@"8", .tmp1), ._, ._ },
5669358038 .{ ._, ._, .mov, .tmp3q, .memad(.src0q, .add_size, -8), ._, ._ },
5669458039 .{ ._, ._, .mov, .tmp4q, .lea(.tmp2q), ._, ._ },
5669558040 .{ ._, ._, .mov, .tmp5q, .tmp3q, ._, ._ },
......@@ -56759,7 +58104,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
5675958104 .{ ._, ._, .mov, .tmp1d, .sia(-2, .src0, .add_size_div_8), ._, ._ },
5676058105 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
5676158106 .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },
56762 .{ ._, ._, .lea, .tmp2p, .memsi(.src0q, .@"8", .tmp1), ._, ._ },
58107 .{ ._, ._, .lea, .tmp2p, .memsi(.src0, .@"8", .tmp1), ._, ._ },
5676358108 .{ ._, ._, .mov, .tmp3q, .lea(.tmp2q), ._, ._ },
5676458109 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
5676558110 .{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -8), .tmp4q, ._, ._ },
......@@ -56821,7 +58166,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
5682158166 .{ ._, ._, .mov, .tmp1d, .sia(-2, .src0, .add_size_div_8), ._, ._ },
5682258167 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
5682358168 .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },
56824 .{ ._, ._, .lea, .tmp2p, .memsi(.src0q, .@"8", .tmp1), ._, ._ },
58169 .{ ._, ._, .lea, .tmp2p, .memsi(.src0, .@"8", .tmp1), ._, ._ },
5682558170 .{ ._, ._, .mov, .tmp3q, .lea(.tmp2q), ._, ._ },
5682658171 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
5682758172 .{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -8), .tmp4q, ._, ._ },
......@@ -56883,7 +58228,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
5688358228 .{ ._, ._, .mov, .tmp1d, .sia(-2, .src0, .add_size_div_8), ._, ._ },
5688458229 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
5688558230 .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },
56886 .{ ._, ._, .lea, .tmp2p, .memsi(.src0q, .@"8", .tmp1), ._, ._ },
58231 .{ ._, ._, .lea, .tmp2p, .memsi(.src0, .@"8", .tmp1), ._, ._ },
5688758232 .{ ._, ._, .mov, .tmp3q, .lea(.tmp2q), ._, ._ },
5688858233 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
5688958234 .{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -8), .tmp4q, ._, ._ },
......@@ -56945,7 +58290,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
5694558290 .{ ._, ._, .mov, .tmp1d, .sia(-2, .src0, .add_size_div_8), ._, ._ },
5694658291 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
5694758292 .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },
56948 .{ ._, ._, .lea, .tmp2p, .memsi(.src0q, .@"8", .tmp1), ._, ._ },
58293 .{ ._, ._, .lea, .tmp2p, .memsi(.src0, .@"8", .tmp1), ._, ._ },
5694958294 .{ ._, ._, .mov, .tmp3q, .lea(.tmp2q), ._, ._ },
5695058295 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
5695158296 .{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -8), .tmp4q, ._, ._ },
......@@ -57007,7 +58352,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
5700758352 .{ ._, ._, .mov, .tmp1d, .sia(-2, .src0, .add_size_div_8), ._, ._ },
5700858353 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
5700958354 .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },
57010 .{ ._, ._, .lea, .tmp2p, .memsi(.src0q, .@"8", .tmp1), ._, ._ },
58355 .{ ._, ._, .lea, .tmp2p, .memsi(.src0, .@"8", .tmp1), ._, ._ },
5701158356 .{ ._, ._, .mov, .tmp3q, .lea(.tmp2q), ._, ._ },
5701258357 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
5701358358 .{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -8), .tmp4q, ._, ._ },
......@@ -57069,7 +58414,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
5706958414 .{ ._, ._, .mov, .tmp1d, .sia(-2, .src0, .add_size_div_8), ._, ._ },
5707058415 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
5707158416 .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },
57072 .{ ._, ._, .lea, .tmp2p, .memsi(.src0q, .@"8", .tmp1), ._, ._ },
58417 .{ ._, ._, .lea, .tmp2p, .memsi(.src0, .@"8", .tmp1), ._, ._ },
5707358418 .{ ._, ._, .mov, .tmp3q, .lea(.tmp2q), ._, ._ },
5707458419 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
5707558420 .{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -8), .tmp4q, ._, ._ },
......@@ -57131,7 +58476,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
5713158476 .{ ._, ._, .mov, .tmp1d, .sia(-2, .src0, .add_size_div_8), ._, ._ },
5713258477 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
5713358478 .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },
57134 .{ ._, ._, .lea, .tmp2p, .memsi(.src0q, .@"8", .tmp1), ._, ._ },
58479 .{ ._, ._, .lea, .tmp2p, .memsi(.src0, .@"8", .tmp1), ._, ._ },
5713558480 .{ ._, ._, .mov, .tmp3q, .lea(.tmp2q), ._, ._ },
5713658481 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
5713758482 .{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -8), .tmp4q, ._, ._ },
......@@ -57193,7 +58538,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
5719358538 .{ ._, ._, .mov, .tmp1d, .sia(-2, .src0, .add_size_div_8), ._, ._ },
5719458539 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
5719558540 .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },
57196 .{ ._, ._, .lea, .tmp2p, .memsi(.src0q, .@"8", .tmp1), ._, ._ },
58541 .{ ._, ._, .lea, .tmp2p, .memsi(.src0, .@"8", .tmp1), ._, ._ },
5719758542 .{ ._, ._, .mov, .tmp3q, .lea(.tmp2q), ._, ._ },
5719858543 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
5719958544 .{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -8), .tmp4q, ._, ._ },
......@@ -57255,7 +58600,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
5725558600 .{ ._, ._, .mov, .tmp1d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
5725658601 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
5725758602 .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },
57258 .{ ._, ._, .lea, .tmp2p, .memsi(.src0q, .@"8", .tmp1), ._, ._ },
58603 .{ ._, ._, .lea, .tmp2p, .memsi(.src0, .@"8", .tmp1), ._, ._ },
5725958604 .{ ._, ._, .mov, .tmp3q, .memad(.src0q, .add_size, -8), ._, ._ },
5726058605 .{ ._, ._, .mov, .tmp4q, .lea(.tmp2q), ._, ._ },
5726158606 .{ ._, ._r, .sa, .tmp3q, .ui(63), ._, ._ },
......@@ -57325,7 +58670,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
5732558670 .{ ._, ._, .mov, .tmp1d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
5732658671 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
5732758672 .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },
57328 .{ ._, ._, .lea, .tmp2p, .memsi(.src0q, .@"8", .tmp1), ._, ._ },
58673 .{ ._, ._, .lea, .tmp2p, .memsi(.src0, .@"8", .tmp1), ._, ._ },
5732958674 .{ ._, ._, .mov, .tmp3q, .memad(.src0q, .add_size, -8), ._, ._ },
5733058675 .{ ._, ._, .mov, .tmp4q, .lea(.tmp2q), ._, ._ },
5733158676 .{ ._, ._r, .sa, .tmp3q, .ui(63), ._, ._ },
......@@ -57395,7 +58740,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
5739558740 .{ ._, ._, .mov, .tmp1d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
5739658741 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
5739758742 .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },
57398 .{ ._, ._, .lea, .tmp2p, .memsi(.src0q, .@"8", .tmp1), ._, ._ },
58743 .{ ._, ._, .lea, .tmp2p, .memsi(.src0, .@"8", .tmp1), ._, ._ },
5739958744 .{ ._, ._, .mov, .tmp3q, .memad(.src0q, .add_size, -8), ._, ._ },
5740058745 .{ ._, ._, .mov, .tmp4q, .lea(.tmp2q), ._, ._ },
5740158746 .{ ._, ._r, .sa, .tmp3q, .ui(63), ._, ._ },
......@@ -57465,7 +58810,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
5746558810 .{ ._, ._, .mov, .tmp1d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
5746658811 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
5746758812 .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },
57468 .{ ._, ._, .lea, .tmp2p, .memsi(.src0q, .@"8", .tmp1), ._, ._ },
58813 .{ ._, ._, .lea, .tmp2p, .memsi(.src0, .@"8", .tmp1), ._, ._ },
5746958814 .{ ._, ._, .mov, .tmp3q, .memad(.src0q, .add_size, -8), ._, ._ },
5747058815 .{ ._, ._, .mov, .tmp4q, .lea(.tmp2q), ._, ._ },
5747158816 .{ ._, ._r, .sa, .tmp3q, .ui(63), ._, ._ },
......@@ -57535,7 +58880,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
5753558880 .{ ._, ._, .mov, .tmp1d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
5753658881 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
5753758882 .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },
57538 .{ ._, ._, .lea, .tmp2p, .memsi(.src0q, .@"8", .tmp1), ._, ._ },
58883 .{ ._, ._, .lea, .tmp2p, .memsi(.src0, .@"8", .tmp1), ._, ._ },
5753958884 .{ ._, ._, .mov, .tmp3q, .lea(.tmp2q), ._, ._ },
5754058885 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
5754158886 .{ ._, ._ld, .sh, .tmp4q, .tmp3q, .src1b, ._ },
......@@ -57596,7 +58941,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
5759658941 .{ ._, ._, .mov, .tmp1d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
5759758942 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
5759858943 .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },
57599 .{ ._, ._, .lea, .tmp2p, .memsi(.src0q, .@"8", .tmp1), ._, ._ },
58944 .{ ._, ._, .lea, .tmp2p, .memsi(.src0, .@"8", .tmp1), ._, ._ },
5760058945 .{ ._, ._, .mov, .tmp3q, .lea(.tmp2q), ._, ._ },
5760158946 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
5760258947 .{ ._, ._ld, .sh, .tmp4q, .tmp3q, .src1b, ._ },
......@@ -57657,7 +59002,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
5765759002 .{ ._, ._, .mov, .tmp1d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
5765859003 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
5765959004 .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },
57660 .{ ._, ._, .lea, .tmp2p, .memsi(.src0q, .@"8", .tmp1), ._, ._ },
59005 .{ ._, ._, .lea, .tmp2p, .memsi(.src0, .@"8", .tmp1), ._, ._ },
5766159006 .{ ._, ._, .mov, .tmp3q, .lea(.tmp2q), ._, ._ },
5766259007 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
5766359008 .{ ._, ._ld, .sh, .tmp4q, .tmp3q, .src1b, ._ },
......@@ -57718,7 +59063,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
5771859063 .{ ._, ._, .mov, .tmp1d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
5771959064 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
5772059065 .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },
57721 .{ ._, ._, .lea, .tmp2p, .memsi(.src0q, .@"8", .tmp1), ._, ._ },
59066 .{ ._, ._, .lea, .tmp2p, .memsi(.src0, .@"8", .tmp1), ._, ._ },
5772259067 .{ ._, ._, .mov, .tmp3q, .lea(.tmp2q), ._, ._ },
5772359068 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
5772459069 .{ ._, ._ld, .sh, .tmp4q, .tmp3q, .src1b, ._ },
......@@ -57779,7 +59124,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
5777959124 .{ ._, ._, .mov, .tmp1d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
5778059125 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
5778159126 .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },
57782 .{ ._, ._, .lea, .tmp2p, .memsi(.src0q, .@"8", .tmp1), ._, ._ },
59127 .{ ._, ._, .lea, .tmp2p, .memsi(.src0, .@"8", .tmp1), ._, ._ },
5778359128 .{ ._, ._, .mov, .tmp3q, .lea(.tmp2q), ._, ._ },
5778459129 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
5778559130 .{ ._, ._ld, .sh, .tmp4q, .tmp3q, .src1b, ._ },
......@@ -57840,7 +59185,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
5784059185 .{ ._, ._, .mov, .tmp1d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
5784159186 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
5784259187 .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },
57843 .{ ._, ._, .lea, .tmp2p, .memsi(.src0q, .@"8", .tmp1), ._, ._ },
59188 .{ ._, ._, .lea, .tmp2p, .memsi(.src0, .@"8", .tmp1), ._, ._ },
5784459189 .{ ._, ._, .mov, .tmp3q, .lea(.tmp2q), ._, ._ },
5784559190 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
5784659191 .{ ._, ._ld, .sh, .tmp4q, .tmp3q, .src1b, ._ },
......@@ -57901,7 +59246,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
5790159246 .{ ._, ._, .mov, .tmp1d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
5790259247 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
5790359248 .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },
57904 .{ ._, ._, .lea, .tmp2p, .memsi(.src0q, .@"8", .tmp1), ._, ._ },
59249 .{ ._, ._, .lea, .tmp2p, .memsi(.src0, .@"8", .tmp1), ._, ._ },
5790559250 .{ ._, ._, .mov, .tmp3q, .lea(.tmp2q), ._, ._ },
5790659251 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
5790759252 .{ ._, ._ld, .sh, .tmp4q, .tmp3q, .src1b, ._ },
......@@ -57962,7 +59307,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
5796259307 .{ ._, ._, .mov, .tmp1d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
5796359308 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
5796459309 .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },
57965 .{ ._, ._, .lea, .tmp2p, .memsi(.src0q, .@"8", .tmp1), ._, ._ },
59310 .{ ._, ._, .lea, .tmp2p, .memsi(.src0, .@"8", .tmp1), ._, ._ },
5796659311 .{ ._, ._, .mov, .tmp3q, .lea(.tmp2q), ._, ._ },
5796759312 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
5796859313 .{ ._, ._ld, .sh, .tmp4q, .tmp3q, .src1b, ._ },
......@@ -58005,7 +59350,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
5800559350 try res[0].withOverflow(&res[1], cg);
5800659351 try res[0].finish(inst, &.{ bin_op.lhs, bin_op.rhs }, &ops, cg);
5800759352 },
58008 .alloc => if (use_old) try cg.airAlloc(inst) else {
59353 .alloc => {
5800959354 const ty = air_datas[@intFromEnum(inst)].ty;
5801059355 const slot = try cg.tempInit(ty, .{ .lea_frame = .{
5801159356 .index = try cg.allocMemPtr(inst),
......@@ -58013,7 +59358,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
5801359358 try slot.finish(inst, &.{}, &.{}, cg);
5801459359 },
5801559360 .inferred_alloc, .inferred_alloc_comptime => unreachable,
58016 .ret_ptr => if (use_old) try cg.airRetPtr(inst) else {
59361 .ret_ptr => {
5801759362 const ty = air_datas[@intFromEnum(inst)].ty;
5801859363 var slot = switch (cg.ret_mcv.long) {
5801959364 else => unreachable,
......@@ -58029,7 +59374,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
5802959374 try slot.finish(inst, &.{}, &.{}, cg);
5803059375 },
5803159376 .assembly => try cg.airAsm(inst),
58032 .bit_and, .bit_or, .xor, .bool_and, .bool_or => |air_tag| if (use_old) try cg.airBinOp(inst, air_tag) else {
59377 .bit_and, .bit_or, .xor, .bool_and, .bool_or => |air_tag| {
5803359378 const bin_op = air_datas[@intFromEnum(inst)].bin_op;
5803459379 var ops = try cg.tempsFromOperands(inst, .{ bin_op.lhs, bin_op.rhs });
5803559380 var res: [1]Temp = undefined;
......@@ -58399,9 +59744,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
5839959744 };
5840059745 try res[0].finish(inst, &.{ bin_op.lhs, bin_op.rhs }, &ops, cg);
5840159746 },
58402 .shr, .shr_exact => |air_tag| if (use_old) try cg.airShlShrBinOp(inst) else fallback: {
59747 .shr, .shr_exact => |air_tag| {
5840359748 const bin_op = air_datas[@intFromEnum(inst)].bin_op;
58404 if (cg.typeOf(bin_op.lhs).isVector(zcu)) break :fallback try cg.airShlShrBinOp(inst);
5840559749 var ops = try cg.tempsFromOperands(inst, .{ bin_op.lhs, bin_op.rhs });
5840659750 var res: [1]Temp = undefined;
5840759751 cg.select(&res, &.{cg.typeOf(bin_op.lhs)}, &ops, comptime &.{ .{
......@@ -58964,9 +60308,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
5896460308 };
5896560309 try res[0].finish(inst, &.{ bin_op.lhs, bin_op.rhs }, &ops, cg);
5896660310 },
58967 .shl, .shl_exact => |air_tag| if (use_old) try cg.airShlShrBinOp(inst) else fallback: {
60311 .shl, .shl_exact => |air_tag| {
5896860312 const bin_op = air_datas[@intFromEnum(inst)].bin_op;
58969 if (cg.typeOf(bin_op.lhs).isVector(zcu)) break :fallback try cg.airShlShrBinOp(inst);
5897060313 var ops = try cg.tempsFromOperands(inst, .{ bin_op.lhs, bin_op.rhs });
5897160314 var res: [1]Temp = undefined;
5897260315 cg.select(&res, &.{cg.typeOf(bin_op.lhs)}, &ops, comptime &.{ .{
......@@ -59339,10 +60682,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
5933960682 }
5934060683 try res[0].finish(inst, &.{ bin_op.lhs, bin_op.rhs }, &ops, cg);
5934160684 },
59342 .shl_sat => |air_tag| if (use_old) try cg.airShlSat(inst) else fallback: {
60685 .shl_sat => |air_tag| {
5934360686 const bin_op = air_datas[@intFromEnum(inst)].bin_op;
5934460687 const lhs_ty = cg.typeOf(bin_op.lhs);
59345 if (lhs_ty.isVector(zcu)) break :fallback try cg.airShlSat(inst);
5934660688 var ops = try cg.tempsFromOperands(inst, .{ bin_op.lhs, bin_op.rhs });
5934760689 var res: [1]Temp = undefined;
5934860690 switch (ops[1].tracking(cg).short) {
......@@ -61190,7 +62532,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
6119062532 .{ ._, ._, .mov, .tmp1d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
6119162533 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
6119262534 .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },
61193 .{ ._, ._, .lea, .tmp2p, .memsi(.src0q, .@"8", .tmp1), ._, ._ },
62535 .{ ._, ._, .lea, .tmp2p, .memsi(.src0, .@"8", .tmp1), ._, ._ },
6119462536 .{ ._, ._, .mov, .tmp3q, .memad(.src0q, .add_size, -8), ._, ._ },
6119562537 .{ ._, ._, .mov, .tmp4q, .lea(.tmp2q), ._, ._ },
6119662538 .{ ._, ._r, .sa, .tmp3q, .ui(63), ._, ._ },
......@@ -61274,7 +62616,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
6127462616 .{ ._, ._, .mov, .tmp1d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
6127562617 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
6127662618 .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },
61277 .{ ._, ._, .lea, .tmp2p, .memsi(.src0q, .@"8", .tmp1), ._, ._ },
62619 .{ ._, ._, .lea, .tmp2p, .memsi(.src0, .@"8", .tmp1), ._, ._ },
6127862620 .{ ._, ._, .mov, .tmp3q, .memad(.src0q, .add_size, -8), ._, ._ },
6127962621 .{ ._, ._, .mov, .tmp4q, .lea(.tmp2q), ._, ._ },
6128062622 .{ ._, ._r, .sa, .tmp3q, .ui(63), ._, ._ },
......@@ -61357,7 +62699,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
6135762699 .{ ._, ._, .mov, .tmp1d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
6135862700 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
6135962701 .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },
61360 .{ ._, ._, .lea, .tmp2p, .memsi(.src0q, .@"8", .tmp1), ._, ._ },
62702 .{ ._, ._, .lea, .tmp2p, .memsi(.src0, .@"8", .tmp1), ._, ._ },
6136162703 .{ ._, ._, .mov, .tmp3q, .lea(.tmp2q), ._, ._ },
6136262704 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
6136362705 .{ ._, ._ld, .sh, .tmp4q, .tmp3q, .src1b, ._ },
......@@ -61427,7 +62769,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
6142762769 .{ ._, ._, .mov, .tmp1d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
6142862770 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
6142962771 .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },
61430 .{ ._, ._, .lea, .tmp2p, .memsi(.src0q, .@"8", .tmp1), ._, ._ },
62772 .{ ._, ._, .lea, .tmp2p, .memsi(.src0, .@"8", .tmp1), ._, ._ },
6143162773 .{ ._, ._, .mov, .tmp3q, .lea(.tmp2q), ._, ._ },
6143262774 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
6143362775 .{ ._, ._ld, .sh, .tmp4q, .tmp3q, .src1b, ._ },
......@@ -61498,7 +62840,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
6149862840 .{ ._, ._, .mov, .tmp1d, .sia(-2, .src0, .add_size_div_8), ._, ._ },
6149962841 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
6150062842 .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },
61501 .{ ._, ._, .lea, .tmp2p, .memsi(.src0q, .@"8", .tmp1), ._, ._ },
62843 .{ ._, ._, .lea, .tmp2p, .memsi(.src0, .@"8", .tmp1), ._, ._ },
6150262844 .{ ._, ._, .mov, .tmp3q, .memad(.src0q, .add_size, -8), ._, ._ },
6150362845 .{ ._, ._, .mov, .tmp4q, .lea(.tmp2q), ._, ._ },
6150462846 .{ ._, ._, .mov, .tmp5q, .tmp3q, ._, ._ },
......@@ -61583,7 +62925,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
6158362925 .{ ._, ._, .mov, .tmp1d, .sia(-2, .src0, .add_size_div_8), ._, ._ },
6158462926 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
6158562927 .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },
61586 .{ ._, ._, .lea, .tmp2p, .memsi(.src0q, .@"8", .tmp1), ._, ._ },
62928 .{ ._, ._, .lea, .tmp2p, .memsi(.src0, .@"8", .tmp1), ._, ._ },
6158762929 .{ ._, ._, .mov, .tmp3q, .memad(.src0q, .add_size, -8), ._, ._ },
6158862930 .{ ._, ._, .mov, .tmp4q, .lea(.tmp2q), ._, ._ },
6158962931 .{ ._, ._, .mov, .tmp5q, .tmp3q, ._, ._ },
......@@ -61667,7 +63009,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
6166763009 .{ ._, ._, .mov, .tmp1d, .sia(-2, .src0, .add_size_div_8), ._, ._ },
6166863010 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
6166963011 .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },
61670 .{ ._, ._, .lea, .tmp2p, .memsi(.src0q, .@"8", .tmp1), ._, ._ },
63012 .{ ._, ._, .lea, .tmp2p, .memsi(.src0, .@"8", .tmp1), ._, ._ },
6167163013 .{ ._, ._, .mov, .tmp3q, .lea(.tmp2q), ._, ._ },
6167263014 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
6167363015 .{ ._, ._ld, .sh, .tmp4q, .tmp3q, .src1b, ._ },
......@@ -61738,7 +63080,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
6173863080 .{ ._, ._, .mov, .tmp1d, .sia(-2, .src0, .add_size_div_8), ._, ._ },
6173963081 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
6174063082 .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },
61741 .{ ._, ._, .lea, .tmp2p, .memsi(.src0q, .@"8", .tmp1), ._, ._ },
63083 .{ ._, ._, .lea, .tmp2p, .memsi(.src0, .@"8", .tmp1), ._, ._ },
6174263084 .{ ._, ._, .mov, .tmp3q, .lea(.tmp2q), ._, ._ },
6174363085 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
6174463086 .{ ._, ._ld, .sh, .tmp4q, .tmp3q, .src1b, ._ },
......@@ -61810,7 +63152,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
6181063152 .{ ._, ._, .mov, .tmp1d, .sia(-2, .src0, .add_size_div_8), ._, ._ },
6181163153 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
6181263154 .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },
61813 .{ ._, ._, .lea, .tmp2p, .memsi(.src0q, .@"8", .tmp1), ._, ._ },
63155 .{ ._, ._, .lea, .tmp2p, .memsi(.src0, .@"8", .tmp1), ._, ._ },
6181463156 .{ ._, ._, .mov, .tmp3q, .memad(.src0q, .add_size, -8), ._, ._ },
6181563157 .{ ._, ._, .mov, .tmp4q, .lea(.tmp2q), ._, ._ },
6181663158 .{ ._, ._, .mov, .tmp5q, .tmp3q, ._, ._ },
......@@ -61901,7 +63243,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
6190163243 .{ ._, ._, .mov, .tmp1d, .sia(-2, .src0, .add_size_div_8), ._, ._ },
6190263244 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
6190363245 .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },
61904 .{ ._, ._, .lea, .tmp2p, .memsi(.src0q, .@"8", .tmp1), ._, ._ },
63246 .{ ._, ._, .lea, .tmp2p, .memsi(.src0, .@"8", .tmp1), ._, ._ },
6190563247 .{ ._, ._, .mov, .tmp3q, .memad(.src0q, .add_size, -8), ._, ._ },
6190663248 .{ ._, ._, .mov, .tmp4q, .lea(.tmp2q), ._, ._ },
6190763249 .{ ._, ._, .mov, .tmp5q, .tmp3q, ._, ._ },
......@@ -61992,7 +63334,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
6199263334 .{ ._, ._, .mov, .tmp1d, .sia(-2, .src0, .add_size_div_8), ._, ._ },
6199363335 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
6199463336 .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },
61995 .{ ._, ._, .lea, .tmp2p, .memsi(.src0q, .@"8", .tmp1), ._, ._ },
63337 .{ ._, ._, .lea, .tmp2p, .memsi(.src0, .@"8", .tmp1), ._, ._ },
6199663338 .{ ._, ._, .mov, .tmp3q, .lea(.tmp2q), ._, ._ },
6199763339 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
6199863340 .{ ._, ._ld, .sh, .tmp4q, .tmp3q, .src1b, ._ },
......@@ -62070,7 +63412,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
6207063412 .{ ._, ._, .mov, .tmp1d, .sia(-2, .src0, .add_size_div_8), ._, ._ },
6207163413 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
6207263414 .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },
62073 .{ ._, ._, .lea, .tmp2p, .memsi(.src0q, .@"8", .tmp1), ._, ._ },
63415 .{ ._, ._, .lea, .tmp2p, .memsi(.src0, .@"8", .tmp1), ._, ._ },
6207463416 .{ ._, ._, .mov, .tmp3q, .lea(.tmp2q), ._, ._ },
6207563417 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
6207663418 .{ ._, ._ld, .sh, .tmp4q, .tmp3q, .src1b, ._ },
......@@ -62148,7 +63490,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
6214863490 .{ ._, ._, .mov, .tmp1d, .sia(-2, .src0, .add_size_div_8), ._, ._ },
6214963491 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
6215063492 .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },
62151 .{ ._, ._, .lea, .tmp2p, .memsi(.src0q, .@"8", .tmp1), ._, ._ },
63493 .{ ._, ._, .lea, .tmp2p, .memsi(.src0, .@"8", .tmp1), ._, ._ },
6215263494 .{ ._, ._, .mov, .tmp3q, .lea(.tmp2q), ._, ._ },
6215363495 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
6215463496 .{ ._, ._ld, .sh, .tmp4q, .tmp3q, .src1b, ._ },
......@@ -62226,7 +63568,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
6222663568 .{ ._, ._, .mov, .tmp1d, .sia(-2, .src0, .add_size_div_8), ._, ._ },
6222763569 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
6222863570 .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },
62229 .{ ._, ._, .lea, .tmp2p, .memsi(.src0q, .@"8", .tmp1), ._, ._ },
63571 .{ ._, ._, .lea, .tmp2p, .memsi(.src0, .@"8", .tmp1), ._, ._ },
6223063572 .{ ._, ._, .mov, .tmp3q, .lea(.tmp2q), ._, ._ },
6223163573 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
6223263574 .{ ._, ._ld, .sh, .tmp4q, .tmp3q, .src1b, ._ },
......@@ -62304,7 +63646,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
6230463646 .{ ._, ._, .mov, .tmp1d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
6230563647 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
6230663648 .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },
62307 .{ ._, ._, .lea, .tmp2p, .memsi(.src0q, .@"8", .tmp1), ._, ._ },
63649 .{ ._, ._, .lea, .tmp2p, .memsi(.src0, .@"8", .tmp1), ._, ._ },
6230863650 .{ ._, ._, .mov, .tmp3q, .memad(.src0q, .add_size, -8), ._, ._ },
6230963651 .{ ._, ._, .mov, .tmp4q, .lea(.tmp2q), ._, ._ },
6231063652 .{ ._, ._r, .sa, .tmp3q, .ui(63), ._, ._ },
......@@ -62394,7 +63736,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
6239463736 .{ ._, ._, .mov, .tmp1d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
6239563737 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
6239663738 .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },
62397 .{ ._, ._, .lea, .tmp2p, .memsi(.src0q, .@"8", .tmp1), ._, ._ },
63739 .{ ._, ._, .lea, .tmp2p, .memsi(.src0, .@"8", .tmp1), ._, ._ },
6239863740 .{ ._, ._, .mov, .tmp3q, .memad(.src0q, .add_size, -8), ._, ._ },
6239963741 .{ ._, ._, .mov, .tmp4q, .lea(.tmp2q), ._, ._ },
6240063742 .{ ._, ._r, .sa, .tmp3q, .ui(63), ._, ._ },
......@@ -62484,7 +63826,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
6248463826 .{ ._, ._, .mov, .tmp1d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
6248563827 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
6248663828 .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },
62487 .{ ._, ._, .lea, .tmp2p, .memsi(.src0q, .@"8", .tmp1), ._, ._ },
63829 .{ ._, ._, .lea, .tmp2p, .memsi(.src0, .@"8", .tmp1), ._, ._ },
6248863830 .{ ._, ._, .mov, .tmp3q, .lea(.tmp2q), ._, ._ },
6248963831 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
6249063832 .{ ._, ._ld, .sh, .tmp4q, .tmp3q, .src1b, ._ },
......@@ -62561,7 +63903,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
6256163903 .{ ._, ._, .mov, .tmp1d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
6256263904 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
6256363905 .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },
62564 .{ ._, ._, .lea, .tmp2p, .memsi(.src0q, .@"8", .tmp1), ._, ._ },
63906 .{ ._, ._, .lea, .tmp2p, .memsi(.src0, .@"8", .tmp1), ._, ._ },
6256563907 .{ ._, ._, .mov, .tmp3q, .lea(.tmp2q), ._, ._ },
6256663908 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
6256763909 .{ ._, ._ld, .sh, .tmp4q, .tmp3q, .src1b, ._ },
......@@ -62638,7 +63980,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
6263863980 .{ ._, ._, .mov, .tmp1d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
6263963981 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
6264063982 .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },
62641 .{ ._, ._, .lea, .tmp2p, .memsi(.src0q, .@"8", .tmp1), ._, ._ },
63983 .{ ._, ._, .lea, .tmp2p, .memsi(.src0, .@"8", .tmp1), ._, ._ },
6264263984 .{ ._, ._, .mov, .tmp3q, .lea(.tmp2q), ._, ._ },
6264363985 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
6264463986 .{ ._, ._ld, .sh, .tmp4q, .tmp3q, .src1b, ._ },
......@@ -62715,7 +64057,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
6271564057 .{ ._, ._, .mov, .tmp1d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
6271664058 .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ },
6271764059 .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ },
62718 .{ ._, ._, .lea, .tmp2p, .memsi(.src0q, .@"8", .tmp1), ._, ._ },
64060 .{ ._, ._, .lea, .tmp2p, .memsi(.src0, .@"8", .tmp1), ._, ._ },
6271964061 .{ ._, ._, .mov, .tmp3q, .lea(.tmp2q), ._, ._ },
6272064062 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
6272164063 .{ ._, ._ld, .sh, .tmp4q, .tmp3q, .src1b, ._ },
......@@ -62763,7 +64105,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
6276364105 };
6276464106 try res[0].finish(inst, &.{ bin_op.lhs, bin_op.rhs }, &ops, cg);
6276564107 },
62766 .not => |air_tag| if (use_old) try cg.airUnOp(inst, air_tag) else {
64108 .not => |air_tag| {
6276764109 const ty_op = air_datas[@intFromEnum(inst)].ty_op;
6276864110 var ops = try cg.tempsFromOperands(inst, .{ty_op.operand});
6276964111 var res: [1]Temp = undefined;
......@@ -64003,7 +65345,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
6400365345 try cg.lowerBlock(inst, @ptrCast(cg.air.extra.items[block.end..][0..block.data.body_len]));
6400465346 if (!cg.mod.strip) try cg.asmPseudo(.pseudo_dbg_leave_block_none);
6400565347 },
64006 .loop => if (use_old) try cg.airLoop(inst) else {
65348 .loop => {
6400765349 const ty_pl = air_datas[@intFromEnum(inst)].ty_pl;
6400865350 const block = cg.air.extraData(Air.Block, ty_pl.payload);
6400965351 try cg.loops.putNoClobber(cg.gpa, inst, .{
......@@ -64027,14 +65369,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
6402765369 .br => try cg.airBr(inst),
6402865370 .trap => try cg.asmOpOnly(.{ ._2, .ud }),
6402965371 .breakpoint => try cg.asmOpOnly(.{ ._3, .int }),
64030 .ret_addr => if (use_old) try cg.airRetAddr(inst) else {
65372 .ret_addr => {
6403165373 var slot = try cg.tempInit(.usize, .{ .load_frame = .{
6403265374 .index = .ret_addr,
6403365375 } });
6403465376 while (try slot.toRegClass(true, .general_purpose, cg)) {}
6403565377 try slot.finish(inst, &.{}, &.{}, cg);
6403665378 },
64037 .frame_addr => if (use_old) try cg.airFrameAddress(inst) else {
65379 .frame_addr => {
6403865380 const slot = try cg.tempInit(.usize, .{ .lea_frame = .{
6403965381 .index = .base_ptr,
6404065382 } });
......@@ -64044,7 +65386,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
6404465386 .call_always_tail => try cg.airCall(inst, .always_tail, .{ .safety = true }),
6404565387 .call_never_tail => try cg.airCall(inst, .never_tail, .{ .safety = true }),
6404665388 .call_never_inline => try cg.airCall(inst, .never_inline, .{ .safety = true }),
64047 .clz => |air_tag| if (use_old) try cg.airClz(inst) else {
65389 .clz => |air_tag| {
6404865390 const ty_op = air_datas[@intFromEnum(inst)].ty_op;
6404965391 var ops = try cg.tempsFromOperands(inst, .{ty_op.operand});
6405065392 var res: [1]Temp = undefined;
......@@ -67149,9 +68491,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
6714968491 };
6715068492 try res[0].finish(inst, &.{ty_op.operand}, &ops, cg);
6715168493 },
67152 .ctz => |air_tag| if (use_old) try cg.airCtz(inst) else fallback: {
68494 .ctz => |air_tag| {
6715368495 const ty_op = air_datas[@intFromEnum(inst)].ty_op;
67154 if (ty_op.ty.toType().isVector(zcu)) break :fallback try cg.airCtz(inst);
6715568496 var ops = try cg.tempsFromOperands(inst, .{ty_op.operand});
6715668497 var res: [1]Temp = undefined;
6715768498 cg.select(&res, &.{ty_op.ty.toType()}, &ops, comptime &.{ .{
......@@ -67547,9 +68888,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
6754768888 };
6754868889 try res[0].finish(inst, &.{ty_op.operand}, &ops, cg);
6754968890 },
67550 .popcount => |air_tag| if (use_old) try cg.airPopCount(inst) else fallback: {
68891 .popcount => |air_tag| {
6755168892 const ty_op = air_datas[@intFromEnum(inst)].ty_op;
67552 if (ty_op.ty.toType().isVector(zcu)) break :fallback try cg.airPopCount(inst);
6755368893 var ops = try cg.tempsFromOperands(inst, .{ty_op.operand});
6755468894 var res: [1]Temp = undefined;
6755568895 cg.select(&res, &.{ty_op.ty.toType()}, &ops, comptime &.{ .{
......@@ -68436,9 +69776,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
6843669776 };
6843769777 try res[0].finish(inst, &.{ty_op.operand}, &ops, cg);
6843869778 },
68439 .byte_swap => |air_tag| if (use_old) try cg.airByteSwap(inst) else fallback: {
69779 .byte_swap => |air_tag| {
6844069780 const ty_op = air_datas[@intFromEnum(inst)].ty_op;
68441 if (ty_op.ty.toType().isVector(zcu)) break :fallback try cg.airByteSwap(inst);
6844269781 var ops = try cg.tempsFromOperands(inst, .{ty_op.operand});
6844369782 var res: [1]Temp = undefined;
6844469783 cg.select(&res, &.{ty_op.ty.toType()}, &ops, comptime &.{ .{
......@@ -69086,9 +70425,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
6908670425 };
6908770426 try res[0].finish(inst, &.{ty_op.operand}, &ops, cg);
6908870427 },
69089 .bit_reverse => |air_tag| if (use_old) try cg.airBitReverse(inst) else fallback: {
70428 .bit_reverse => |air_tag| {
6909070429 const ty_op = air_datas[@intFromEnum(inst)].ty_op;
69091 if (ty_op.ty.toType().isVector(zcu)) break :fallback try cg.airByteSwap(inst);
6909270430 var ops = try cg.tempsFromOperands(inst, .{ty_op.operand});
6909370431 var res: [1]Temp = undefined;
6909470432 cg.select(&res, &.{ty_op.ty.toType()}, &ops, comptime &.{ .{
......@@ -72189,7 +73527,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7218973527 };
7219073528 try res[0].finish(inst, &.{ty_op.operand}, &ops, cg);
7219173529 },
72192 .sqrt => |air_tag| if (use_old) try cg.airSqrt(inst) else {
73530 .sqrt => |air_tag| {
7219373531 const un_op = air_datas[@intFromEnum(inst)].un_op;
7219473532 var ops = try cg.tempsFromOperands(inst, .{un_op});
7219573533 var res: [1]Temp = undefined;
......@@ -72209,7 +73547,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7220973547 .required_features = .{ .sse, null, null, null },
7221073548 .src_constraints = .{ .{ .scalar_float = .{ .of = .word, .is = .word } }, .any, .any },
7221173549 .patterns = &.{
72212 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },
73550 .{ .src = .{ .{ .to_param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .none, .none } },
7221373551 },
7221473552 .call_frame = .{ .alignment = .@"16" },
7221573553 .extra_temps = .{
......@@ -72294,7 +73632,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7229473632 .call_frame = .{ .alignment = .@"16" },
7229573633 .extra_temps = .{
7229673634 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
72297 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
73635 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
7229873636 .{ .type = .usize, .kind = .{ .extern_func = "__sqrth" } },
7229973637 .unused,
7230073638 .unused,
......@@ -72325,7 +73663,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7232573663 .call_frame = .{ .alignment = .@"16" },
7232673664 .extra_temps = .{
7232773665 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
72328 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
73666 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
7232973667 .{ .type = .usize, .kind = .{ .extern_func = "__sqrth" } },
7233073668 .unused,
7233173669 .unused,
......@@ -72356,7 +73694,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7235673694 .call_frame = .{ .alignment = .@"16" },
7235773695 .extra_temps = .{
7235873696 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
72359 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
73697 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
7236073698 .{ .type = .usize, .kind = .{ .extern_func = "__sqrth" } },
7236173699 .{ .type = .f16, .kind = .{ .reg = .ax } },
7236273700 .unused,
......@@ -72390,7 +73728,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7239073728 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
7239173729 .{ .type = .f16, .kind = .{ .reg = .ax } },
7239273730 .{ .type = .f32, .kind = .mem },
72393 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
73731 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
7239473732 .{ .type = .usize, .kind = .{ .extern_func = "__sqrth" } },
7239573733 .unused,
7239673734 .unused,
......@@ -72459,7 +73797,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7245973797 .required_features = .{ .sse, null, null, null },
7246073798 .src_constraints = .{ .{ .scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any },
7246173799 .patterns = &.{
72462 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },
73800 .{ .src = .{ .{ .to_param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .none, .none } },
7246373801 },
7246473802 .call_frame = .{ .alignment = .@"16" },
7246573803 .extra_temps = .{
......@@ -72578,7 +73916,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7257873916 .call_frame = .{ .alignment = .@"16" },
7257973917 .extra_temps = .{
7258073918 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
72581 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
73919 .{ .type = .f32, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
7258273920 .{ .type = .usize, .kind = .{ .extern_func = "sqrtf" } },
7258373921 .unused,
7258473922 .unused,
......@@ -72608,7 +73946,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7260873946 .call_frame = .{ .alignment = .@"16" },
7260973947 .extra_temps = .{
7261073948 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
72611 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
73949 .{ .type = .f32, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
7261273950 .{ .type = .usize, .kind = .{ .extern_func = "sqrtf" } },
7261373951 .unused,
7261473952 .unused,
......@@ -72675,7 +74013,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7267574013 .required_features = .{ .sse, null, null, null },
7267674014 .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
7267774015 .patterns = &.{
72678 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },
74016 .{ .src = .{ .{ .to_param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .none, .none } },
7267974017 },
7268074018 .call_frame = .{ .alignment = .@"16" },
7268174019 .extra_temps = .{
......@@ -72794,7 +74132,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7279474132 .call_frame = .{ .alignment = .@"16" },
7279574133 .extra_temps = .{
7279674134 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
72797 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
74135 .{ .type = .f64, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
7279874136 .{ .type = .usize, .kind = .{ .extern_func = "sqrt" } },
7279974137 .unused,
7280074138 .unused,
......@@ -72824,7 +74162,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7282474162 .call_frame = .{ .alignment = .@"16" },
7282574163 .extra_temps = .{
7282674164 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
72827 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
74165 .{ .type = .f64, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
7282874166 .{ .type = .usize, .kind = .{ .extern_func = "sqrt" } },
7282974167 .unused,
7283074168 .unused,
......@@ -72854,7 +74192,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7285474192 .call_frame = .{ .alignment = .@"16" },
7285574193 .extra_temps = .{
7285674194 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
72857 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
74195 .{ .type = .f64, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
7285874196 .{ .type = .usize, .kind = .{ .extern_func = "sqrt" } },
7285974197 .unused,
7286074198 .unused,
......@@ -72877,6 +74215,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7287774215 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
7287874216 } },
7287974217 }, .{
74218 .required_abi = .gnu,
7288074219 .required_features = .{ .x87, null, null, null },
7288174220 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
7288274221 .patterns = &.{
......@@ -72903,6 +74242,40 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7290374242 .{ ._, .f_p, .st, .dst0t, ._, ._, ._ },
7290474243 } },
7290574244 }, .{
74245 .required_abi = .msvc,
74246 .required_features = .{ .x87, null, null, null },
74247 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
74248 .patterns = &.{
74249 .{ .src = .{ .mem, .none, .none } },
74250 .{ .src = .{ .to_x87, .none, .none } },
74251 },
74252 .extra_temps = .{
74253 .{ .type = .f80, .kind = .{ .reg = .st7 } },
74254 .{ .type = .u16, .kind = .mem },
74255 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
74256 .unused,
74257 .unused,
74258 .unused,
74259 .unused,
74260 .unused,
74261 .unused,
74262 .unused,
74263 .unused,
74264 },
74265 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .x87 } }, .unused },
74266 .each = .{ .once = &.{
74267 .{ ._, .f_, .ld, .src0t, ._, ._, ._ },
74268 .{ ._, .fn_cw, .st, .tmp1w, ._, ._, ._ },
74269 .{ ._, ._, .movzx, .tmp2d, .memd(.tmp1b, 1), ._, ._ },
74270 .{ ._, ._, .@"or", .memd(.tmp1b, 1), .ui(0b000_0_00_11), ._, ._ },
74271 .{ ._, .f_cw, .ld, .tmp1w, ._, ._, ._ },
74272 .{ ._, ._, .mov, .memd(.tmp1b, 1), .tmp2b, ._, ._ },
74273 .{ ._, .f_, .sqrt, ._, ._, ._, ._ },
74274 .{ ._, .f_cw, .ld, .tmp1w, ._, ._, ._ },
74275 .{ ._, .f_p, .st, .dst0t, ._, ._, ._ },
74276 } },
74277 }, .{
74278 .required_abi = .gnu,
7290674279 .required_features = .{ .x87, null, null, null },
7290774280 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
7290874281 .patterns = &.{
......@@ -72931,11 +74304,47 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7293174304 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
7293274305 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
7293374306 } },
74307 }, .{
74308 .required_abi = .msvc,
74309 .required_features = .{ .x87, null, null, null },
74310 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
74311 .patterns = &.{
74312 .{ .src = .{ .to_mem, .none, .none } },
74313 },
74314 .extra_temps = .{
74315 .{ .type = .u16, .kind = .mem },
74316 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
74317 .{ .type = .f80, .kind = .{ .reg = .st7 } },
74318 .unused,
74319 .unused,
74320 .unused,
74321 .unused,
74322 .unused,
74323 .unused,
74324 .unused,
74325 .unused,
74326 },
74327 .dst_temps = .{ .mem, .unused },
74328 .clobbers = .{ .eflags = true },
74329 .each = .{ .once = &.{
74330 .{ ._, .fn_cw, .st, .tmp0w, ._, ._, ._ },
74331 .{ ._, ._, .movzx, .tmp1d, .memd(.tmp0b, 1), ._, ._ },
74332 .{ ._, ._, .@"or", .memd(.tmp0b, 1), .ui(0b000_0_00_11), ._, ._ },
74333 .{ ._, .f_cw, .ld, .tmp0w, ._, ._, ._ },
74334 .{ ._, ._, .mov, .memd(.tmp0b, 1), .tmp1b, ._, ._ },
74335 .{ ._, ._, .mov, .tmp1p, .sa(.src0, .sub_unaligned_size), ._, ._ },
74336 .{ .@"0:", .f_, .ld, .memia(.src0t, .tmp1, .add_unaligned_size), ._, ._, ._ },
74337 .{ ._, .f_, .sqrt, ._, ._, ._, ._ },
74338 .{ ._, .f_p, .st, .memia(.dst0t, .tmp1, .add_unaligned_size), ._, ._, ._ },
74339 .{ ._, ._, .add, .tmp1p, .si(16), ._, ._ },
74340 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
74341 .{ ._, .f_cw, .ld, .tmp0w, ._, ._, ._ },
74342 } },
7293474343 }, .{
7293574344 .required_features = .{ .sse, null, null, null },
7293674345 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },
7293774346 .patterns = &.{
72938 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },
74347 .{ .src = .{ .{ .to_param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .none, .none } },
7293974348 },
7294074349 .call_frame = .{ .alignment = .@"16" },
7294174350 .extra_temps = .{
......@@ -72965,7 +74374,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7296574374 .call_frame = .{ .alignment = .@"16" },
7296674375 .extra_temps = .{
7296774376 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
72968 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
74377 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
7296974378 .{ .type = .usize, .kind = .{ .extern_func = "sqrtq" } },
7297074379 .unused,
7297174380 .unused,
......@@ -72995,7 +74404,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7299574404 .call_frame = .{ .alignment = .@"16" },
7299674405 .extra_temps = .{
7299774406 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
72998 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
74407 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
7299974408 .{ .type = .usize, .kind = .{ .extern_func = "sqrtq" } },
7300074409 .unused,
7300174410 .unused,
......@@ -73025,7 +74434,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7302574434 .call_frame = .{ .alignment = .@"16" },
7302674435 .extra_temps = .{
7302774436 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
73028 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
74437 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
7302974438 .{ .type = .usize, .kind = .{ .extern_func = "sqrtq" } },
7303074439 .unused,
7303174440 .unused,
......@@ -73056,7 +74465,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7305674465 };
7305774466 try res[0].finish(inst, &.{un_op}, &ops, cg);
7305874467 },
73059 .sin, .cos, .tan, .exp, .exp2, .log, .log2, .log10, .round => |air_tag| if (use_old) try cg.airUnaryMath(inst, air_tag) else {
74468 .sin, .cos, .tan, .exp, .exp2, .log, .log2, .log10, .round => |air_tag| {
7306074469 const un_op = air_datas[@intFromEnum(inst)].un_op;
7306174470 var ops = try cg.tempsFromOperands(inst, .{un_op});
7306274471 var res: [1]Temp = undefined;
......@@ -73066,7 +74475,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7306674475 .required_features = .{ .sse, null, null, null },
7306774476 .src_constraints = .{ .{ .scalar_float = .{ .of = .word, .is = .word } }, .any, .any },
7306874477 .patterns = &.{
73069 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },
74478 .{ .src = .{ .{ .to_param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .none, .none } },
7307074479 },
7307174480 .call_frame = .{ .alignment = .@"16" },
7307274481 .extra_temps = .{
......@@ -73095,8 +74504,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7309574504 },
7309674505 .call_frame = .{ .alignment = .@"16" },
7309774506 .extra_temps = .{
73098 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
73099 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
74507 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
74508 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
7310074509 .{ .type = .usize, .kind = .{ .extern_func = "__" ++ @tagName(name) ++ "h" } },
7310174510 .unused,
7310274511 .unused,
......@@ -73110,13 +74519,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7311074519 .dst_temps = .{ .mem, .unused },
7311174520 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
7311274521 .each = .{ .once = &.{
73113 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
74522 .{ ._, ._, .mov, .tmp0d, .sia(-2, .src0, .add_unaligned_size), ._, ._ },
7311474523 .{ .@"0:", .vp_, .xor, .tmp1x, .tmp1x, .tmp1x, ._ },
73115 .{ ._, .vp_w, .insr, .tmp1x, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0) },
74524 .{ ._, .vp_w, .insr, .tmp1x, .tmp1x, .memi(.src0w, .tmp0), .ui(0) },
7311674525 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
73117 .{ ._, .vp_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ },
73118 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
73119 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
74526 .{ ._, .vp_w, .extr, .memi(.dst0w, .tmp0), .tmp1x, .ui(0), ._ },
74527 .{ ._, ._, .sub, .tmp0p, .si(2), ._, ._ },
74528 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
7312074529 } },
7312174530 }, .{
7312274531 .required_features = .{ .sse4_1, null, null, null },
......@@ -73126,8 +74535,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7312674535 },
7312774536 .call_frame = .{ .alignment = .@"16" },
7312874537 .extra_temps = .{
73129 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
73130 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
74538 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
74539 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
7313174540 .{ .type = .usize, .kind = .{ .extern_func = "__" ++ @tagName(name) ++ "h" } },
7313274541 .unused,
7313374542 .unused,
......@@ -73141,13 +74550,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7314174550 .dst_temps = .{ .mem, .unused },
7314274551 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
7314374552 .each = .{ .once = &.{
73144 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
74553 .{ ._, ._, .mov, .tmp0d, .sia(-2, .src0, .add_unaligned_size), ._, ._ },
7314574554 .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ },
73146 .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0), ._ },
74555 .{ ._, .p_w, .insr, .tmp1x, .memi(.src0w, .tmp0), .ui(0), ._ },
7314774556 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
73148 .{ ._, .p_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ },
73149 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
73150 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
74557 .{ ._, .p_w, .extr, .memi(.dst0w, .tmp0), .tmp1x, .ui(0), ._ },
74558 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
74559 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
7315174560 } },
7315274561 }, .{
7315374562 .required_features = .{ .sse2, null, null, null },
......@@ -73157,8 +74566,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7315774566 },
7315874567 .call_frame = .{ .alignment = .@"16" },
7315974568 .extra_temps = .{
73160 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
73161 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
74569 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
74570 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
7316274571 .{ .type = .usize, .kind = .{ .extern_func = "__" ++ @tagName(name) ++ "h" } },
7316374572 .{ .type = .f16, .kind = .{ .reg = .ax } },
7316474573 .unused,
......@@ -73172,14 +74581,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7317274581 .dst_temps = .{ .mem, .unused },
7317374582 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
7317474583 .each = .{ .once = &.{
73175 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
74584 .{ ._, ._, .mov, .tmp0d, .sia(-2, .src0, .add_unaligned_size), ._, ._ },
7317674585 .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ },
73177 .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0), ._ },
74586 .{ ._, .p_w, .insr, .tmp1x, .memi(.src0w, .tmp0), .ui(0), ._ },
7317874587 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
7317974588 .{ ._, .p_w, .extr, .tmp3d, .tmp1x, .ui(0), ._ },
73180 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp3w, ._, ._ },
73181 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
73182 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
74589 .{ ._, ._, .mov, .memi(.dst0w, .tmp0), .tmp3w, ._, ._ },
74590 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
74591 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
7318374592 } },
7318474593 }, .{
7318574594 .required_features = .{ .sse, null, null, null },
......@@ -73189,10 +74598,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7318974598 },
7319074599 .call_frame = .{ .alignment = .@"16" },
7319174600 .extra_temps = .{
73192 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
74601 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
7319374602 .{ .type = .f16, .kind = .{ .reg = .ax } },
7319474603 .{ .type = .f32, .kind = .mem },
73195 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
74604 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
7319674605 .{ .type = .usize, .kind = .{ .extern_func = "__" ++ @tagName(name) ++ "h" } },
7319774606 .unused,
7319874607 .unused,
......@@ -73204,22 +74613,22 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7320474613 .dst_temps = .{ .mem, .unused },
7320574614 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
7320674615 .each = .{ .once = &.{
73207 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
73208 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
74616 .{ ._, ._, .mov, .tmp0d, .sia(-2, .src0, .add_unaligned_size), ._, ._ },
74617 .{ .@"0:", ._, .movzx, .tmp1d, .memi(.src0w, .tmp0), ._, ._ },
7320974618 .{ ._, ._, .mov, .mem(.tmp2d), .tmp1d, ._, ._ },
7321074619 .{ ._, ._ss, .mov, .tmp3x, .mem(.tmp2d), ._, ._ },
7321174620 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
7321274621 .{ ._, ._ss, .mov, .mem(.tmp2d), .tmp3x, ._, ._ },
7321374622 .{ ._, ._, .mov, .tmp1d, .mem(.tmp2d), ._, ._ },
73214 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
73215 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
73216 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
74623 .{ ._, ._, .mov, .memi(.dst0w, .tmp0), .tmp1w, ._, ._ },
74624 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
74625 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
7321774626 } },
7321874627 }, .{
7321974628 .required_features = .{ .sse, null, null, null },
7322074629 .src_constraints = .{ .{ .scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any },
7322174630 .patterns = &.{
73222 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },
74631 .{ .src = .{ .{ .to_param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .none, .none } },
7322374632 },
7322474633 .call_frame = .{ .alignment = .@"16" },
7322574634 .extra_temps = .{
......@@ -73248,8 +74657,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7324874657 },
7324974658 .call_frame = .{ .alignment = .@"16" },
7325074659 .extra_temps = .{
73251 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
73252 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
74660 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
74661 .{ .type = .f32, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
7325374662 .{ .type = .usize, .kind = .{ .extern_func = @tagName(name) ++ "f" } },
7325474663 .unused,
7325574664 .unused,
......@@ -73263,12 +74672,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7326374672 .dst_temps = .{ .mem, .unused },
7326474673 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
7326574674 .each = .{ .once = &.{
73266 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
73267 .{ .@"0:", .v_ss, .mov, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
74675 .{ ._, ._, .mov, .tmp0d, .sia(-4, .src0, .add_unaligned_size), ._, ._ },
74676 .{ .@"0:", .v_ss, .mov, .tmp1x, .memi(.src0d, .tmp0), ._, ._ },
7326874677 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
73269 .{ ._, .v_ss, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
73270 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
73271 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
74678 .{ ._, .v_ss, .mov, .memi(.dst0d, .tmp0), .tmp1x, ._, ._ },
74679 .{ ._, ._, .sub, .tmp0d, .si(4), ._, ._ },
74680 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
7327274681 } },
7327374682 }, .{
7327474683 .required_features = .{ .sse, null, null, null },
......@@ -73278,8 +74687,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7327874687 },
7327974688 .call_frame = .{ .alignment = .@"16" },
7328074689 .extra_temps = .{
73281 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
73282 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
74690 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
74691 .{ .type = .f32, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
7328374692 .{ .type = .usize, .kind = .{ .extern_func = @tagName(name) ++ "f" } },
7328474693 .unused,
7328574694 .unused,
......@@ -73293,18 +74702,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7329374702 .dst_temps = .{ .mem, .unused },
7329474703 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
7329574704 .each = .{ .once = &.{
73296 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
73297 .{ .@"0:", ._ss, .mov, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
74705 .{ ._, ._, .mov, .tmp0d, .sia(-4, .src0, .add_unaligned_size), ._, ._ },
74706 .{ .@"0:", ._ss, .mov, .tmp1x, .memi(.src0d, .tmp0), ._, ._ },
7329874707 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
73299 .{ ._, ._ss, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
73300 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
73301 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
74708 .{ ._, ._ss, .mov, .memi(.dst0d, .tmp0), .tmp1x, ._, ._ },
74709 .{ ._, ._, .sub, .tmp0d, .si(4), ._, ._ },
74710 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
7330274711 } },
7330374712 }, .{
7330474713 .required_features = .{ .sse, null, null, null },
7330574714 .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
7330674715 .patterns = &.{
73307 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },
74716 .{ .src = .{ .{ .to_param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .none, .none } },
7330874717 },
7330974718 .call_frame = .{ .alignment = .@"16" },
7331074719 .extra_temps = .{
......@@ -73333,8 +74742,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7333374742 },
7333474743 .call_frame = .{ .alignment = .@"16" },
7333574744 .extra_temps = .{
73336 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
73337 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
74745 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
74746 .{ .type = .f64, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
7333874747 .{ .type = .usize, .kind = .{ .extern_func = @tagName(name) } },
7333974748 .unused,
7334074749 .unused,
......@@ -73348,12 +74757,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7334874757 .dst_temps = .{ .mem, .unused },
7334974758 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
7335074759 .each = .{ .once = &.{
73351 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
73352 .{ .@"0:", .v_sd, .mov, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
74760 .{ ._, ._, .mov, .tmp0d, .sia(-8, .src0, .add_unaligned_size), ._, ._ },
74761 .{ .@"0:", .v_sd, .mov, .tmp1x, .memi(.src0q, .tmp0), ._, ._ },
7335374762 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
73354 .{ ._, .v_sd, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
73355 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
73356 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
74763 .{ ._, .v_sd, .mov, .memi(.dst0q, .tmp0), .tmp1x, ._, ._ },
74764 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
74765 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
7335774766 } },
7335874767 }, .{
7335974768 .required_features = .{ .sse2, null, null, null },
......@@ -73363,8 +74772,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7336374772 },
7336474773 .call_frame = .{ .alignment = .@"16" },
7336574774 .extra_temps = .{
73366 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
73367 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
74775 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
74776 .{ .type = .f64, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
7336874777 .{ .type = .usize, .kind = .{ .extern_func = @tagName(name) } },
7336974778 .unused,
7337074779 .unused,
......@@ -73378,12 +74787,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7337874787 .dst_temps = .{ .mem, .unused },
7337974788 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
7338074789 .each = .{ .once = &.{
73381 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
73382 .{ .@"0:", ._sd, .mov, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
74790 .{ ._, ._, .mov, .tmp0d, .sia(-8, .src0, .add_unaligned_size), ._, ._ },
74791 .{ .@"0:", ._sd, .mov, .tmp1x, .memi(.src0q, .tmp0), ._, ._ },
7338374792 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
73384 .{ ._, ._sd, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
73385 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
73386 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
74793 .{ ._, ._sd, .mov, .memi(.dst0q, .tmp0), .tmp1x, ._, ._ },
74794 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
74795 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
7338774796 } },
7338874797 }, .{
7338974798 .required_features = .{ .sse, null, null, null },
......@@ -73393,8 +74802,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7339374802 },
7339474803 .call_frame = .{ .alignment = .@"16" },
7339574804 .extra_temps = .{
73396 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
73397 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
74805 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
74806 .{ .type = .f64, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
7339874807 .{ .type = .usize, .kind = .{ .extern_func = @tagName(name) } },
7339974808 .unused,
7340074809 .unused,
......@@ -73408,15 +74817,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7340874817 .dst_temps = .{ .mem, .unused },
7340974818 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
7341074819 .each = .{ .once = &.{
73411 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
74820 .{ ._, ._, .mov, .tmp0d, .sia(-8, .src0, .add_unaligned_size), ._, ._ },
7341274821 .{ .@"0:", ._ps, .xor, .tmp1x, .tmp1x, ._, ._ },
73413 .{ ._, ._ps, .movl, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
74822 .{ ._, ._ps, .movl, .tmp1x, .memi(.src0q, .tmp0), ._, ._ },
7341474823 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
73415 .{ ._, ._ps, .movl, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
73416 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
73417 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
74824 .{ ._, ._ps, .movl, .memi(.dst0q, .tmp0), .tmp1x, ._, ._ },
74825 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
74826 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
7341874827 } },
7341974828 }, .{
74829 .required_cc_abi = .sysv64,
7342074830 .required_features = .{ .avx, .x87, null, null },
7342174831 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
7342274832 .patterns = &.{
......@@ -73424,7 +74834,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7342474834 },
7342574835 .call_frame = .{ .size = 16, .alignment = .@"16" },
7342674836 .extra_temps = .{
73427 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
74837 .{ .type = .f80, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
7342874838 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
7342974839 .{ .type = .usize, .kind = .{ .extern_func = "__" ++ @tagName(name) ++ "x" } },
7343074840 .unused,
......@@ -73444,6 +74854,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7344474854 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
7344574855 } },
7344674856 }, .{
74857 .required_cc_abi = .sysv64,
7344774858 .required_features = .{ .sse2, .x87, null, null },
7344874859 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
7344974860 .patterns = &.{
......@@ -73451,7 +74862,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7345174862 },
7345274863 .call_frame = .{ .size = 16, .alignment = .@"16" },
7345374864 .extra_temps = .{
73454 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
74865 .{ .type = .f80, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
7345574866 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
7345674867 .{ .type = .usize, .kind = .{ .extern_func = "__" ++ @tagName(name) ++ "x" } },
7345774868 .unused,
......@@ -73471,6 +74882,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7347174882 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
7347274883 } },
7347374884 }, .{
74885 .required_cc_abi = .sysv64,
7347474886 .required_features = .{ .sse, .x87, null, null },
7347574887 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
7347674888 .patterns = &.{
......@@ -73478,7 +74890,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7347874890 },
7347974891 .call_frame = .{ .size = 16, .alignment = .@"16" },
7348074892 .extra_temps = .{
73481 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
74893 .{ .type = .f80, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
7348274894 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
7348374895 .{ .type = .usize, .kind = .{ .extern_func = "__" ++ @tagName(name) ++ "x" } },
7348474896 .unused,
......@@ -73498,6 +74910,34 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7349874910 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
7349974911 } },
7350074912 }, .{
74913 .required_cc_abi = .win64,
74914 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
74915 .patterns = &.{
74916 .{ .src = .{ .to_mem, .none, .none } },
74917 },
74918 .call_frame = .{ .alignment = .@"16" },
74919 .extra_temps = .{
74920 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
74921 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
74922 .{ .type = .usize, .kind = .{ .extern_func = "__" ++ @tagName(name) ++ "x" } },
74923 .unused,
74924 .unused,
74925 .unused,
74926 .unused,
74927 .unused,
74928 .unused,
74929 .unused,
74930 .unused,
74931 },
74932 .dst_temps = .{ .mem, .unused },
74933 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
74934 .each = .{ .once = &.{
74935 .{ ._, ._, .lea, .tmp0p, .mem(.dst0), ._, ._ },
74936 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },
74937 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
74938 } },
74939 }, .{
74940 .required_cc_abi = .sysv64,
7350174941 .required_features = .{ .avx, .x87, null, null },
7350274942 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
7350374943 .patterns = &.{
......@@ -73505,8 +74945,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7350574945 },
7350674946 .call_frame = .{ .size = 16, .alignment = .@"16" },
7350774947 .extra_temps = .{
73508 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
73509 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
74948 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
74949 .{ .type = .f80, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
7351074950 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
7351174951 .{ .type = .usize, .kind = .{ .extern_func = "__" ++ @tagName(name) ++ "x" } },
7351274952 .unused,
......@@ -73520,16 +74960,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7352074960 .dst_temps = .{ .mem, .unused },
7352174961 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
7352274962 .each = .{ .once = &.{
73523 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
73524 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
74963 .{ ._, ._, .mov, .tmp0d, .sia(-16, .src0, .add_unaligned_size), ._, ._ },
74964 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memi(.src0x, .tmp0), ._, ._ },
7352574965 .{ ._, .v_dqa, .mov, .mem(.tmp2x), .tmp1x, ._, ._ },
7352674966 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
7352774967 .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ },
73528 .{ ._, .f_p, .st, .memia(.dst0t, .tmp0, .add_unaligned_size), ._, ._, ._ },
73529 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
73530 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
74968 .{ ._, .f_p, .st, .memi(.dst0t, .tmp0), ._, ._, ._ },
74969 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
74970 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
7353174971 } },
7353274972 }, .{
74973 .required_cc_abi = .sysv64,
7353374974 .required_features = .{ .sse2, .x87, null, null },
7353474975 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
7353574976 .patterns = &.{
......@@ -73537,8 +74978,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7353774978 },
7353874979 .call_frame = .{ .size = 16, .alignment = .@"16" },
7353974980 .extra_temps = .{
73540 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
73541 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
74981 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
74982 .{ .type = .f80, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
7354274983 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
7354374984 .{ .type = .usize, .kind = .{ .extern_func = "__" ++ @tagName(name) ++ "x" } },
7354474985 .unused,
......@@ -73552,16 +74993,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7355274993 .dst_temps = .{ .mem, .unused },
7355374994 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
7355474995 .each = .{ .once = &.{
73555 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
73556 .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
74996 .{ ._, ._, .mov, .tmp0d, .sia(-16, .src0, .add_unaligned_size), ._, ._ },
74997 .{ .@"0:", ._dqa, .mov, .tmp1x, .memi(.src0x, .tmp0), ._, ._ },
7355774998 .{ ._, ._dqa, .mov, .mem(.tmp2x), .tmp1x, ._, ._ },
7355874999 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
7355975000 .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ },
73560 .{ ._, .f_p, .st, .memia(.dst0t, .tmp0, .add_unaligned_size), ._, ._, ._ },
73561 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
73562 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
75001 .{ ._, .f_p, .st, .memi(.dst0t, .tmp0), ._, ._, ._ },
75002 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
75003 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
7356375004 } },
7356475005 }, .{
75006 .required_cc_abi = .sysv64,
7356575007 .required_features = .{ .sse, .x87, null, null },
7356675008 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
7356775009 .patterns = &.{
......@@ -73569,8 +75011,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7356975011 },
7357075012 .call_frame = .{ .size = 16, .alignment = .@"16" },
7357175013 .extra_temps = .{
73572 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
73573 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
75014 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
75015 .{ .type = .f80, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
7357475016 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
7357575017 .{ .type = .usize, .kind = .{ .extern_func = "__" ++ @tagName(name) ++ "x" } },
7357675018 .unused,
......@@ -73584,20 +75026,50 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7358475026 .dst_temps = .{ .mem, .unused },
7358575027 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
7358675028 .each = .{ .once = &.{
73587 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
73588 .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
75029 .{ ._, ._, .mov, .tmp0d, .sia(-16, .src0, .add_unaligned_size), ._, ._ },
75030 .{ .@"0:", ._ps, .mova, .tmp1x, .memi(.src0x, .tmp0), ._, ._ },
7358975031 .{ ._, ._ps, .mova, .mem(.tmp2x), .tmp1x, ._, ._ },
7359075032 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
7359175033 .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ },
73592 .{ ._, .f_p, .st, .memia(.dst0t, .tmp0, .add_unaligned_size), ._, ._, ._ },
73593 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
73594 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
75034 .{ ._, .f_p, .st, .memi(.dst0t, .tmp0), ._, ._, ._ },
75035 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
75036 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
75037 } },
75038 }, .{
75039 .required_cc_abi = .win64,
75040 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
75041 .patterns = &.{
75042 .{ .src = .{ .to_mem, .none, .none } },
75043 },
75044 .call_frame = .{ .alignment = .@"16" },
75045 .extra_temps = .{
75046 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
75047 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
75048 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
75049 .{ .type = .usize, .kind = .{ .extern_func = "__" ++ @tagName(name) ++ "x" } },
75050 .unused,
75051 .unused,
75052 .unused,
75053 .unused,
75054 .unused,
75055 .unused,
75056 .unused,
75057 },
75058 .dst_temps = .{ .mem, .unused },
75059 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
75060 .each = .{ .once = &.{
75061 .{ ._, ._, .mov, .tmp0d, .sia(-16, .src0, .add_unaligned_size), ._, ._ },
75062 .{ .@"0:", ._, .lea, .tmp1p, .memi(.dst0, .tmp0), ._, ._ },
75063 .{ ._, ._, .lea, .tmp2p, .memi(.src0, .tmp0), ._, ._ },
75064 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
75065 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
75066 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
7359575067 } },
7359675068 }, .{
7359775069 .required_features = .{ .sse, null, null, null },
7359875070 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },
7359975071 .patterns = &.{
73600 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },
75072 .{ .src = .{ .{ .to_param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .none, .none } },
7360175073 },
7360275074 .call_frame = .{ .alignment = .@"16" },
7360375075 .extra_temps = .{
......@@ -73626,8 +75098,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7362675098 },
7362775099 .call_frame = .{ .alignment = .@"16" },
7362875100 .extra_temps = .{
73629 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
73630 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
75101 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
75102 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
7363175103 .{ .type = .usize, .kind = .{ .extern_func = @tagName(name) ++ "q" } },
7363275104 .unused,
7363375105 .unused,
......@@ -73641,12 +75113,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7364175113 .dst_temps = .{ .mem, .unused },
7364275114 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
7364375115 .each = .{ .once = &.{
73644 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
73645 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
75116 .{ ._, ._, .mov, .tmp0d, .sia(-16, .src0, .add_unaligned_size), ._, ._ },
75117 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memi(.src0x, .tmp0), ._, ._ },
7364675118 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
73647 .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
73648 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
73649 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
75119 .{ ._, .v_dqa, .mov, .memi(.dst0x, .tmp0), .tmp1x, ._, ._ },
75120 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
75121 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
7365075122 } },
7365175123 }, .{
7365275124 .required_features = .{ .sse2, null, null, null },
......@@ -73656,8 +75128,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7365675128 },
7365775129 .call_frame = .{ .alignment = .@"16" },
7365875130 .extra_temps = .{
73659 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
73660 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
75131 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
75132 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
7366175133 .{ .type = .usize, .kind = .{ .extern_func = @tagName(name) ++ "q" } },
7366275134 .unused,
7366375135 .unused,
......@@ -73671,12 +75143,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7367175143 .dst_temps = .{ .mem, .unused },
7367275144 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
7367375145 .each = .{ .once = &.{
73674 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
73675 .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
75146 .{ ._, ._, .mov, .tmp0d, .sia(-16, .src0, .add_unaligned_size), ._, ._ },
75147 .{ .@"0:", ._dqa, .mov, .tmp1x, .memi(.src0x, .tmp0), ._, ._ },
7367675148 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
73677 .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
73678 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
73679 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
75149 .{ ._, ._dqa, .mov, .memi(.dst0x, .tmp0), .tmp1x, ._, ._ },
75150 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
75151 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
7368075152 } },
7368175153 }, .{
7368275154 .required_features = .{ .sse, null, null, null },
......@@ -73686,8 +75158,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7368675158 },
7368775159 .call_frame = .{ .alignment = .@"16" },
7368875160 .extra_temps = .{
73689 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
73690 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
75161 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
75162 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
7369175163 .{ .type = .usize, .kind = .{ .extern_func = @tagName(name) ++ "q" } },
7369275164 .unused,
7369375165 .unused,
......@@ -73701,12 +75173,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7370175173 .dst_temps = .{ .mem, .unused },
7370275174 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
7370375175 .each = .{ .once = &.{
73704 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
73705 .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
75176 .{ ._, ._, .mov, .tmp0d, .sia(-16, .src0, .add_unaligned_size), ._, ._ },
75177 .{ .@"0:", ._ps, .mova, .tmp1x, .memi(.src0x, .tmp0), ._, ._ },
7370675178 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
73707 .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
73708 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
73709 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
75179 .{ ._, ._ps, .mova, .memi(.dst0x, .tmp0), .tmp1x, ._, ._ },
75180 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
75181 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
7371075182 } },
7371175183 } },
7371275184 }) catch |err| switch (err) {
......@@ -73719,7 +75191,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7371975191 };
7372075192 try res[0].finish(inst, &.{un_op}, &ops, cg);
7372175193 },
73722 .abs => |air_tag| if (use_old) try cg.airAbs(inst) else {
75194 .abs => |air_tag| {
7372375195 const ty_op = air_datas[@intFromEnum(inst)].ty_op;
7372475196 var ops = try cg.tempsFromOperands(inst, .{ty_op.operand});
7372575197 var res: [1]Temp = undefined;
......@@ -75270,12 +76742,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7527076742 };
7527176743 try res[0].finish(inst, &.{ty_op.operand}, &ops, cg);
7527276744 },
75273 .floor, .ceil, .trunc_float => |air_tag| if (use_old) try cg.airRound(inst, .{ .direction = switch (air_tag) {
75274 else => unreachable,
75275 .floor => .down,
75276 .ceil => .up,
75277 .trunc_float => .zero,
75278 }, .precision = .inexact }) else {
76745 .floor, .ceil, .trunc_float => |air_tag| {
7527976746 const un_op = air_datas[@intFromEnum(inst)].un_op;
7528076747 var ops = try cg.tempsFromOperands(inst, .{un_op});
7528176748 var res: [1]Temp = undefined;
......@@ -75302,7 +76769,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7530276769 .required_features = .{ .sse, null, null, null },
7530376770 .src_constraints = .{ .{ .scalar_float = .{ .of = .word, .is = .word } }, .any, .any },
7530476771 .patterns = &.{
75305 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },
76772 .{ .src = .{ .{ .to_param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .none, .none } },
7530676773 },
7530776774 .call_frame = .{ .alignment = .@"16" },
7530876775 .extra_temps = .{
......@@ -75392,7 +76859,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7539276859 .call_frame = .{ .alignment = .@"16" },
7539376860 .extra_temps = .{
7539476861 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
75395 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
76862 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
7539676863 .{ .type = .usize, .kind = .{ .extern_func = switch (direction) {
7539776864 else => unreachable,
7539876865 .down => "__floorh",
......@@ -75428,7 +76895,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7542876895 .call_frame = .{ .alignment = .@"16" },
7542976896 .extra_temps = .{
7543076897 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
75431 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
76898 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
7543276899 .{ .type = .usize, .kind = .{ .extern_func = switch (direction) {
7543376900 else => unreachable,
7543476901 .down => "__floorh",
......@@ -75464,7 +76931,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7546476931 .call_frame = .{ .alignment = .@"16" },
7546576932 .extra_temps = .{
7546676933 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
75467 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
76934 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
7546876935 .{ .type = .usize, .kind = .{ .extern_func = switch (direction) {
7546976936 else => unreachable,
7547076937 .down => "__floorh",
......@@ -75503,7 +76970,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7550376970 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
7550476971 .{ .type = .f16, .kind = .{ .reg = .ax } },
7550576972 .{ .type = .f32, .kind = .mem },
75506 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
76973 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
7550776974 .{ .type = .usize, .kind = .{ .extern_func = switch (direction) {
7550876975 else => unreachable,
7550976976 .down => "__floorh",
......@@ -75577,7 +77044,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7557777044 .required_features = .{ .sse, null, null, null },
7557877045 .src_constraints = .{ .{ .scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any },
7557977046 .patterns = &.{
75580 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },
77047 .{ .src = .{ .{ .to_param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .none, .none } },
7558177048 },
7558277049 .call_frame = .{ .alignment = .@"16" },
7558377050 .extra_temps = .{
......@@ -75707,7 +77174,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7570777174 .call_frame = .{ .alignment = .@"16" },
7570877175 .extra_temps = .{
7570977176 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
75710 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
77177 .{ .type = .f32, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
7571177178 .{ .type = .usize, .kind = .{ .extern_func = switch (direction) {
7571277179 else => unreachable,
7571377180 .down => "floorf",
......@@ -75742,7 +77209,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7574277209 .call_frame = .{ .alignment = .@"16" },
7574377210 .extra_temps = .{
7574477211 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
75745 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
77212 .{ .type = .f32, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
7574677213 .{ .type = .usize, .kind = .{ .extern_func = switch (direction) {
7574777214 else => unreachable,
7574877215 .down => "floorf",
......@@ -75814,7 +77281,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7581477281 .required_features = .{ .sse, null, null, null },
7581577282 .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
7581677283 .patterns = &.{
75817 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },
77284 .{ .src = .{ .{ .to_param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .none, .none } },
7581877285 },
7581977286 .call_frame = .{ .alignment = .@"16" },
7582077287 .extra_temps = .{
......@@ -75944,7 +77411,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7594477411 .call_frame = .{ .alignment = .@"16" },
7594577412 .extra_temps = .{
7594677413 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
75947 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
77414 .{ .type = .f64, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
7594877415 .{ .type = .usize, .kind = .{ .extern_func = switch (direction) {
7594977416 else => unreachable,
7595077417 .down => "floor",
......@@ -75979,7 +77446,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7597977446 .call_frame = .{ .alignment = .@"16" },
7598077447 .extra_temps = .{
7598177448 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
75982 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
77449 .{ .type = .f64, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
7598377450 .{ .type = .usize, .kind = .{ .extern_func = switch (direction) {
7598477451 else => unreachable,
7598577452 .down => "floor",
......@@ -76014,7 +77481,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7601477481 .call_frame = .{ .alignment = .@"16" },
7601577482 .extra_temps = .{
7601677483 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
76017 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
77484 .{ .type = .f64, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
7601877485 .{ .type = .usize, .kind = .{ .extern_func = switch (direction) {
7601977486 else => unreachable,
7602077487 .down => "floor",
......@@ -76042,6 +77509,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7604277509 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
7604377510 } },
7604477511 }, .{
77512 .required_cc_abi = .sysv64,
7604577513 .required_features = .{ .avx, .x87, null, null },
7604677514 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
7604777515 .patterns = &.{
......@@ -76049,7 +77517,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7604977517 },
7605077518 .call_frame = .{ .size = 16, .alignment = .@"16" },
7605177519 .extra_temps = .{
76052 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
77520 .{ .type = .f80, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
7605377521 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
7605477522 .{ .type = .usize, .kind = .{ .extern_func = switch (direction) {
7605577523 else => unreachable,
......@@ -76074,6 +77542,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7607477542 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
7607577543 } },
7607677544 }, .{
77545 .required_cc_abi = .sysv64,
7607777546 .required_features = .{ .sse2, .x87, null, null },
7607877547 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
7607977548 .patterns = &.{
......@@ -76081,7 +77550,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7608177550 },
7608277551 .call_frame = .{ .size = 16, .alignment = .@"16" },
7608377552 .extra_temps = .{
76084 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
77553 .{ .type = .f80, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
7608577554 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
7608677555 .{ .type = .usize, .kind = .{ .extern_func = switch (direction) {
7608777556 else => unreachable,
......@@ -76106,6 +77575,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7610677575 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
7610777576 } },
7610877577 }, .{
77578 .required_cc_abi = .sysv64,
7610977579 .required_features = .{ .sse, .x87, null, null },
7611077580 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
7611177581 .patterns = &.{
......@@ -76113,7 +77583,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7611377583 },
7611477584 .call_frame = .{ .size = 16, .alignment = .@"16" },
7611577585 .extra_temps = .{
76116 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
77586 .{ .type = .f80, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
7611777587 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
7611877588 .{ .type = .usize, .kind = .{ .extern_func = switch (direction) {
7611977589 else => unreachable,
......@@ -76138,6 +77608,39 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7613877608 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
7613977609 } },
7614077610 }, .{
77611 .required_cc_abi = .win64,
77612 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
77613 .patterns = &.{
77614 .{ .src = .{ .to_mem, .none, .none } },
77615 },
77616 .call_frame = .{ .alignment = .@"16" },
77617 .extra_temps = .{
77618 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
77619 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
77620 .{ .type = .usize, .kind = .{ .extern_func = switch (direction) {
77621 else => unreachable,
77622 .down => "__floorx",
77623 .up => "__ceilx",
77624 .zero => "__truncx",
77625 } } },
77626 .unused,
77627 .unused,
77628 .unused,
77629 .unused,
77630 .unused,
77631 .unused,
77632 .unused,
77633 .unused,
77634 },
77635 .dst_temps = .{ .mem, .unused },
77636 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
77637 .each = .{ .once = &.{
77638 .{ ._, ._, .lea, .tmp0p, .mem(.dst0), ._, ._ },
77639 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },
77640 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
77641 } },
77642 }, .{
77643 .required_cc_abi = .sysv64,
7614177644 .required_features = .{ .avx, .x87, null, null },
7614277645 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
7614377646 .patterns = &.{
......@@ -76146,7 +77649,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7614677649 .call_frame = .{ .size = 16, .alignment = .@"16" },
7614777650 .extra_temps = .{
7614877651 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
76149 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
77652 .{ .type = .f80, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
7615077653 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
7615177654 .{ .type = .usize, .kind = .{ .extern_func = switch (direction) {
7615277655 else => unreachable,
......@@ -76175,6 +77678,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7617577678 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
7617677679 } },
7617777680 }, .{
77681 .required_cc_abi = .sysv64,
7617877682 .required_features = .{ .sse2, .x87, null, null },
7617977683 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
7618077684 .patterns = &.{
......@@ -76183,7 +77687,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7618377687 .call_frame = .{ .size = 16, .alignment = .@"16" },
7618477688 .extra_temps = .{
7618577689 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
76186 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
77690 .{ .type = .f80, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
7618777691 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
7618877692 .{ .type = .usize, .kind = .{ .extern_func = switch (direction) {
7618977693 else => unreachable,
......@@ -76212,6 +77716,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7621277716 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
7621377717 } },
7621477718 }, .{
77719 .required_cc_abi = .sysv64,
7621577720 .required_features = .{ .sse, .x87, null, null },
7621677721 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
7621777722 .patterns = &.{
......@@ -76220,7 +77725,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7622077725 .call_frame = .{ .size = 16, .alignment = .@"16" },
7622177726 .extra_temps = .{
7622277727 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
76223 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
77728 .{ .type = .f80, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
7622477729 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
7622577730 .{ .type = .usize, .kind = .{ .extern_func = switch (direction) {
7622677731 else => unreachable,
......@@ -76248,11 +77753,46 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7624877753 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
7624977754 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
7625077755 } },
77756 }, .{
77757 .required_cc_abi = .win64,
77758 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
77759 .patterns = &.{
77760 .{ .src = .{ .to_mem, .none, .none } },
77761 },
77762 .call_frame = .{ .alignment = .@"16" },
77763 .extra_temps = .{
77764 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
77765 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
77766 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
77767 .{ .type = .usize, .kind = .{ .extern_func = switch (direction) {
77768 else => unreachable,
77769 .down => "__floorx",
77770 .up => "__ceilx",
77771 .zero => "__truncx",
77772 } } },
77773 .unused,
77774 .unused,
77775 .unused,
77776 .unused,
77777 .unused,
77778 .unused,
77779 .unused,
77780 },
77781 .dst_temps = .{ .mem, .unused },
77782 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
77783 .each = .{ .once = &.{
77784 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
77785 .{ .@"0:", ._, .lea, .tmp1p, .memia(.dst0, .tmp0, .add_unaligned_size), ._, ._ },
77786 .{ ._, ._, .lea, .tmp2p, .memia(.src0, .tmp0, .add_unaligned_size), ._, ._ },
77787 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
77788 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
77789 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
77790 } },
7625177791 }, .{
7625277792 .required_features = .{ .sse, null, null, null },
7625377793 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },
7625477794 .patterns = &.{
76255 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },
77795 .{ .src = .{ .{ .to_param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .none, .none } },
7625677796 },
7625777797 .call_frame = .{ .alignment = .@"16" },
7625877798 .extra_temps = .{
......@@ -76287,7 +77827,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7628777827 .call_frame = .{ .alignment = .@"16" },
7628877828 .extra_temps = .{
7628977829 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
76290 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
77830 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
7629177831 .{ .type = .usize, .kind = .{ .extern_func = switch (direction) {
7629277832 else => unreachable,
7629377833 .down => "floorq",
......@@ -76322,7 +77862,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7632277862 .call_frame = .{ .alignment = .@"16" },
7632377863 .extra_temps = .{
7632477864 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
76325 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
77865 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
7632677866 .{ .type = .usize, .kind = .{ .extern_func = switch (direction) {
7632777867 else => unreachable,
7632877868 .down => "floorq",
......@@ -76357,7 +77897,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7635777897 .call_frame = .{ .alignment = .@"16" },
7635877898 .extra_temps = .{
7635977899 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
76360 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
77900 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
7636177901 .{ .type = .usize, .kind = .{ .extern_func = switch (direction) {
7636277902 else => unreachable,
7636377903 .down => "floorq",
......@@ -76394,7 +77934,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7639477934 };
7639577935 try res[0].finish(inst, &.{un_op}, &ops, cg);
7639677936 },
76397 .neg, .neg_optimized => |air_tag| if (use_old) try cg.airFloatSign(inst, .neg) else {
77937 .neg, .neg_optimized => |air_tag| {
7639877938 const un_op = air_datas[@intFromEnum(inst)].un_op;
7639977939 var ops = try cg.tempsFromOperands(inst, .{un_op});
7640077940 var res: [1]Temp = undefined;
......@@ -76942,7 +78482,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7694278482 .cmp_gte_optimized,
7694378483 .cmp_gt,
7694478484 .cmp_gt_optimized,
76945 => |air_tag| if (use_old) try cg.airCmp(inst, air_tag.toCmpOp().?) else {
78485 => |air_tag| {
7694678486 const bin_op = air_datas[@intFromEnum(inst)].bin_op;
7694778487 const cmp_op = air_tag.toCmpOp().?;
7694878488 var ops = try cg.tempsFromOperands(inst, .{ bin_op.lhs, bin_op.rhs });
......@@ -76991,7 +78531,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7699178531 .required_features = .{ .sse, null, null, null },
7699278532 .src_constraints = .{ .{ .float = .word }, .{ .float = .word }, .any },
7699378533 .patterns = &.{
76994 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } },
78534 .{ .src = .{
78535 .{ .to_param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } },
78536 .{ .to_param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } },
78537 .none,
78538 } },
7699578539 },
7699678540 .call_frame = .{ .alignment = .@"16" },
7699778541 .extra_temps = .{
......@@ -77334,7 +78878,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7733478878 .required_features = .{ .sse, null, null, null },
7733578879 .src_constraints = .{ .{ .float = .xword }, .{ .float = .xword }, .any },
7733678880 .patterns = &.{
77337 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } },
78881 .{ .src = .{
78882 .{ .to_param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } },
78883 .{ .to_param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } },
78884 .none,
78885 } },
7733878886 },
7733978887 .call_frame = .{ .alignment = .@"16" },
7734078888 .extra_temps = .{
......@@ -77378,7 +78926,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7737878926 .cmp_eq_optimized,
7737978927 .cmp_neq,
7738078928 .cmp_neq_optimized,
77381 => |air_tag| if (use_old) try cg.airCmp(inst, air_tag.toCmpOp().?) else {
78929 => |air_tag| {
7738278930 const bin_op = air_datas[@intFromEnum(inst)].bin_op;
7738378931 const cmp_op = air_tag.toCmpOp().?;
7738478932 var ops = try cg.tempsFromOperands(inst, .{ bin_op.lhs, bin_op.rhs });
......@@ -77495,7 +79043,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7749579043 .required_features = .{ .sse, null, null, null },
7749679044 .src_constraints = .{ .{ .float = .word }, .{ .float = .word }, .any },
7749779045 .patterns = &.{
77498 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } },
79046 .{ .src = .{
79047 .{ .to_param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } },
79048 .{ .to_param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } },
79049 .none,
79050 } },
7749979051 },
7750079052 .call_frame = .{ .alignment = .@"16" },
7750179053 .extra_temps = .{
......@@ -77862,7 +79414,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7786279414 .required_features = .{ .sse, null, null, null },
7786379415 .src_constraints = .{ .{ .float = .xword }, .{ .float = .xword }, .any },
7786479416 .patterns = &.{
77865 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } },
79417 .{ .src = .{
79418 .{ .to_param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } },
79419 .{ .to_param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } },
79420 .none,
79421 } },
7786679422 },
7786779423 .call_frame = .{ .alignment = .@"16" },
7786879424 .extra_temps = .{
......@@ -77939,7 +79495,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7793979495 }
7794079496 try res[0].finish(inst, &.{ bin_op.lhs, bin_op.rhs }, &ops, cg);
7794179497 },
77942 .cmp_vector, .cmp_vector_optimized => |air_tag| if (use_old) try cg.airCmpVector(inst) else fallback: {
79498 .cmp_vector, .cmp_vector_optimized => |air_tag| fallback: {
7794379499 const ty_pl = air_datas[@intFromEnum(inst)].ty_pl;
7794479500 const vector_cmp = cg.air.extraData(Air.VectorCmp, ty_pl.payload).data;
7794579501 switch (vector_cmp.compareOperator()) {
......@@ -78533,8 +80089,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7853380089 .call_frame = .{ .alignment = .@"16" },
7853480090 .extra_temps = .{
7853580091 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
78536 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
78537 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
80092 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
80093 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
7853880094 .{ .type = .usize, .kind = .{ .extern_func = "__cmphf2" } },
7853980095 .{ .type = .i32, .kind = .{ .reg = .eax } },
7854080096 .{ .type = .u8, .kind = .{ .reg = .cl } },
......@@ -78577,8 +80133,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7857780133 .call_frame = .{ .alignment = .@"16" },
7857880134 .extra_temps = .{
7857980135 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
78580 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
78581 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
80136 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
80137 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
7858280138 .{ .type = .usize, .kind = .{ .extern_func = "__cmphf2" } },
7858380139 .{ .type = .i32, .kind = .{ .reg = .eax } },
7858480140 .{ .type = .u8, .kind = .{ .reg = .cl } },
......@@ -78621,8 +80177,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7862180177 .call_frame = .{ .alignment = .@"16" },
7862280178 .extra_temps = .{
7862380179 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
78624 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
78625 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
80180 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
80181 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
7862680182 .{ .type = .usize, .kind = .{ .extern_func = "__cmphf2" } },
7862780183 .{ .type = .i32, .kind = .{ .reg = .eax } },
7862880184 .{ .type = .u8, .kind = .{ .reg = .cl } },
......@@ -78666,8 +80222,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7866680222 .call_frame = .{ .alignment = .@"16" },
7866780223 .extra_temps = .{
7866880224 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
78669 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
78670 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
80225 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
80226 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
7867180227 .{ .type = .usize, .kind = .{ .extern_func = "__cmphf2" } },
7867280228 .{ .type = .i32, .kind = .{ .reg = .eax } },
7867380229 .{ .type = .u8, .kind = .{ .reg = .cl } },
......@@ -78711,8 +80267,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7871180267 .call_frame = .{ .alignment = .@"16" },
7871280268 .extra_temps = .{
7871380269 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
78714 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
78715 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
80270 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
80271 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
7871680272 .{ .type = .usize, .kind = .{ .extern_func = "__cmphf2" } },
7871780273 .{ .type = .i32, .kind = .{ .reg = .eax } },
7871880274 .{ .type = .u8, .kind = .{ .reg = .cl } },
......@@ -78758,8 +80314,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7875880314 .call_frame = .{ .alignment = .@"16" },
7875980315 .extra_temps = .{
7876080316 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
78761 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
78762 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
80317 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
80318 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
7876380319 .{ .type = .usize, .kind = .{ .extern_func = "__cmphf2" } },
7876480320 .{ .type = .i32, .kind = .{ .reg = .eax } },
7876580321 .{ .type = .u8, .kind = .{ .reg = .cl } },
......@@ -78805,8 +80361,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7880580361 .extra_temps = .{
7880680362 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
7880780363 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
78808 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
78809 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
80364 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
80365 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
7881080366 .{ .type = .usize, .kind = .{ .extern_func = "__cmphf2" } },
7881180367 .{ .type = .i32, .kind = .{ .reg = .eax } },
7881280368 .{ .type = .u8, .kind = .{ .reg = .cl } },
......@@ -78858,8 +80414,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7885880414 .extra_temps = .{
7885980415 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
7886080416 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
78861 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
78862 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
80417 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
80418 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
7886380419 .{ .type = .usize, .kind = .{ .extern_func = "__cmphf2" } },
7886480420 .{ .type = .i32, .kind = .{ .reg = .eax } },
7886580421 .{ .type = .u8, .kind = .{ .reg = .cl } },
......@@ -78911,8 +80467,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7891180467 .extra_temps = .{
7891280468 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
7891380469 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
78914 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
78915 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
80470 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
80471 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
7891680472 .{ .type = .usize, .kind = .{ .extern_func = "__cmphf2" } },
7891780473 .{ .type = .i32, .kind = .{ .reg = .eax } },
7891880474 .{ .type = .u8, .kind = .{ .reg = .cl } },
......@@ -78965,8 +80521,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7896580521 .extra_temps = .{
7896680522 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
7896780523 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
78968 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
78969 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
80524 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
80525 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
7897080526 .{ .type = .usize, .kind = .{ .extern_func = "__cmphf2" } },
7897180527 .{ .type = .i32, .kind = .{ .reg = .eax } },
7897280528 .{ .type = .u8, .kind = .{ .reg = .cl } },
......@@ -79019,8 +80575,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7901980575 .extra_temps = .{
7902080576 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
7902180577 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
79022 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
79023 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
80578 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
80579 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
7902480580 .{ .type = .usize, .kind = .{ .extern_func = "__cmphf2" } },
7902580581 .{ .type = .i32, .kind = .{ .reg = .eax } },
7902680582 .{ .type = .u8, .kind = .{ .reg = .cl } },
......@@ -79075,8 +80631,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7907580631 .extra_temps = .{
7907680632 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
7907780633 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
79078 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
79079 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
80634 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
80635 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
7908080636 .{ .type = .usize, .kind = .{ .extern_func = "__cmphf2" } },
7908180637 .{ .type = .i32, .kind = .{ .reg = .eax } },
7908280638 .{ .type = .u8, .kind = .{ .reg = .cl } },
......@@ -79902,8 +81458,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7990281458 .extra_temps = .{
7990381459 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
7990481460 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
79905 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
79906 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
81461 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
81462 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
7990781463 .{ .type = .usize, .kind = .{ .extern_func = "__cmptf2" } },
7990881464 .{ .type = .i32, .kind = .{ .reg = .eax } },
7990981465 .{ .type = .u8, .kind = .{ .reg = .cl } },
......@@ -79946,8 +81502,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7994681502 .extra_temps = .{
7994781503 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
7994881504 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
79949 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
79950 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
81505 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
81506 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
7995181507 .{ .type = .usize, .kind = .{ .extern_func = "__cmptf2" } },
7995281508 .{ .type = .i32, .kind = .{ .reg = .eax } },
7995381509 .{ .type = .u8, .kind = .{ .reg = .cl } },
......@@ -79990,8 +81546,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7999081546 .extra_temps = .{
7999181547 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
7999281548 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
79993 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
79994 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
81549 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
81550 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
7999581551 .{ .type = .usize, .kind = .{ .extern_func = "__cmptf2" } },
7999681552 .{ .type = .i32, .kind = .{ .reg = .eax } },
7999781553 .{ .type = .u8, .kind = .{ .reg = .cl } },
......@@ -80034,8 +81590,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8003481590 .extra_temps = .{
8003581591 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
8003681592 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
80037 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
80038 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
81593 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
81594 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
8003981595 .{ .type = .usize, .kind = .{ .extern_func = "__cmptf2" } },
8004081596 .{ .type = .i32, .kind = .{ .reg = .eax } },
8004181597 .{ .type = .u8, .kind = .{ .reg = .cl } },
......@@ -80078,8 +81634,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8007881634 .extra_temps = .{
8007981635 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
8008081636 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
80081 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
80082 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
81637 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
81638 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
8008381639 .{ .type = .usize, .kind = .{ .extern_func = "__cmptf2" } },
8008481640 .{ .type = .i32, .kind = .{ .reg = .eax } },
8008581641 .{ .type = .u8, .kind = .{ .reg = .cl } },
......@@ -80122,8 +81678,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8012281678 .extra_temps = .{
8012381679 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
8012481680 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
80125 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
80126 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
81681 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
81682 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
8012781683 .{ .type = .usize, .kind = .{ .extern_func = "__cmptf2" } },
8012881684 .{ .type = .i32, .kind = .{ .reg = .eax } },
8012981685 .{ .type = .u8, .kind = .{ .reg = .cl } },
......@@ -80166,8 +81722,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8016681722 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
8016781723 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
8016881724 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
80169 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
80170 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
81725 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
81726 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
8017181727 .{ .type = .usize, .kind = .{ .extern_func = "__cmptf2" } },
8017281728 .{ .type = .i32, .kind = .{ .reg = .eax } },
8017381729 .{ .type = .u8, .kind = .{ .reg = .cl } },
......@@ -80219,8 +81775,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8021981775 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
8022081776 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
8022181777 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
80222 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
80223 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
81778 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
81779 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
8022481780 .{ .type = .usize, .kind = .{ .extern_func = "__cmptf2" } },
8022581781 .{ .type = .i32, .kind = .{ .reg = .eax } },
8022681782 .{ .type = .u8, .kind = .{ .reg = .cl } },
......@@ -80272,8 +81828,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8027281828 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
8027381829 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
8027481830 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
80275 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
80276 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
81831 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
81832 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
8027781833 .{ .type = .usize, .kind = .{ .extern_func = "__cmptf2" } },
8027881834 .{ .type = .i32, .kind = .{ .reg = .eax } },
8027981835 .{ .type = .u8, .kind = .{ .reg = .cl } },
......@@ -80325,8 +81881,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8032581881 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
8032681882 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
8032781883 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
80328 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
80329 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
81884 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
81885 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
8033081886 .{ .type = .usize, .kind = .{ .extern_func = "__cmptf2" } },
8033181887 .{ .type = .i32, .kind = .{ .reg = .eax } },
8033281888 .{ .type = .u8, .kind = .{ .reg = .cl } },
......@@ -80378,8 +81934,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8037881934 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
8037981935 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
8038081936 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
80381 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
80382 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
81937 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
81938 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
8038381939 .{ .type = .usize, .kind = .{ .extern_func = "__cmptf2" } },
8038481940 .{ .type = .i32, .kind = .{ .reg = .eax } },
8038581941 .{ .type = .u8, .kind = .{ .reg = .cl } },
......@@ -80431,8 +81987,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8043181987 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
8043281988 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
8043381989 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
80434 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
80435 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
81990 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
81991 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
8043681992 .{ .type = .usize, .kind = .{ .extern_func = "__cmptf2" } },
8043781993 .{ .type = .i32, .kind = .{ .reg = .eax } },
8043881994 .{ .type = .u8, .kind = .{ .reg = .cl } },
......@@ -83041,8 +84597,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8304184597 .call_frame = .{ .alignment = .@"16" },
8304284598 .extra_temps = .{
8304384599 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
83044 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
83045 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
84600 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
84601 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
8304684602 .{ .type = .usize, .kind = .{ .extern_func = "__cmphf2" } },
8304784603 .{ .type = .i32, .kind = .{ .reg = .eax } },
8304884604 .{ .type = .u8, .kind = .{ .reg = .cl } },
......@@ -83085,8 +84641,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8308584641 .call_frame = .{ .alignment = .@"16" },
8308684642 .extra_temps = .{
8308784643 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
83088 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
83089 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
84644 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
84645 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
8309084646 .{ .type = .usize, .kind = .{ .extern_func = "__cmphf2" } },
8309184647 .{ .type = .i32, .kind = .{ .reg = .eax } },
8309284648 .{ .type = .u8, .kind = .{ .reg = .cl } },
......@@ -83129,8 +84685,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8312984685 .call_frame = .{ .alignment = .@"16" },
8313084686 .extra_temps = .{
8313184687 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
83132 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
83133 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
84688 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
84689 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
8313484690 .{ .type = .usize, .kind = .{ .extern_func = "__cmphf2" } },
8313584691 .{ .type = .i32, .kind = .{ .reg = .eax } },
8313684692 .{ .type = .u8, .kind = .{ .reg = .cl } },
......@@ -83174,8 +84730,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8317484730 .call_frame = .{ .alignment = .@"16" },
8317584731 .extra_temps = .{
8317684732 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
83177 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
83178 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
84733 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
84734 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
8317984735 .{ .type = .usize, .kind = .{ .extern_func = "__cmphf2" } },
8318084736 .{ .type = .i32, .kind = .{ .reg = .eax } },
8318184737 .{ .type = .u8, .kind = .{ .reg = .cl } },
......@@ -83219,8 +84775,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8321984775 .call_frame = .{ .alignment = .@"16" },
8322084776 .extra_temps = .{
8322184777 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
83222 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
83223 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
84778 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
84779 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
8322484780 .{ .type = .usize, .kind = .{ .extern_func = "__cmphf2" } },
8322584781 .{ .type = .i32, .kind = .{ .reg = .eax } },
8322684782 .{ .type = .u8, .kind = .{ .reg = .cl } },
......@@ -83266,8 +84822,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8326684822 .call_frame = .{ .alignment = .@"16" },
8326784823 .extra_temps = .{
8326884824 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
83269 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
83270 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
84825 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
84826 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
8327184827 .{ .type = .usize, .kind = .{ .extern_func = "__cmphf2" } },
8327284828 .{ .type = .i32, .kind = .{ .reg = .eax } },
8327384829 .{ .type = .u8, .kind = .{ .reg = .cl } },
......@@ -83313,8 +84869,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8331384869 .extra_temps = .{
8331484870 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
8331584871 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
83316 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
83317 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
84872 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
84873 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
8331884874 .{ .type = .usize, .kind = .{ .extern_func = "__cmphf2" } },
8331984875 .{ .type = .i32, .kind = .{ .reg = .eax } },
8332084876 .{ .type = .u8, .kind = .{ .reg = .cl } },
......@@ -83366,8 +84922,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8336684922 .extra_temps = .{
8336784923 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
8336884924 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
83369 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
83370 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
84925 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
84926 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
8337184927 .{ .type = .usize, .kind = .{ .extern_func = "__cmphf2" } },
8337284928 .{ .type = .i32, .kind = .{ .reg = .eax } },
8337384929 .{ .type = .u8, .kind = .{ .reg = .cl } },
......@@ -83419,8 +84975,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8341984975 .extra_temps = .{
8342084976 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
8342184977 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
83422 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
83423 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
84978 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
84979 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
8342484980 .{ .type = .usize, .kind = .{ .extern_func = "__cmphf2" } },
8342584981 .{ .type = .i32, .kind = .{ .reg = .eax } },
8342684982 .{ .type = .u8, .kind = .{ .reg = .cl } },
......@@ -83473,8 +85029,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8347385029 .extra_temps = .{
8347485030 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
8347585031 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
83476 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
83477 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
85032 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
85033 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
8347885034 .{ .type = .usize, .kind = .{ .extern_func = "__cmphf2" } },
8347985035 .{ .type = .i32, .kind = .{ .reg = .eax } },
8348085036 .{ .type = .u8, .kind = .{ .reg = .cl } },
......@@ -83527,8 +85083,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8352785083 .extra_temps = .{
8352885084 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
8352985085 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
83530 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
83531 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
85086 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
85087 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
8353285088 .{ .type = .usize, .kind = .{ .extern_func = "__cmphf2" } },
8353385089 .{ .type = .i32, .kind = .{ .reg = .eax } },
8353485090 .{ .type = .u8, .kind = .{ .reg = .cl } },
......@@ -83583,8 +85139,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8358385139 .extra_temps = .{
8358485140 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
8358585141 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
83586 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
83587 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
85142 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
85143 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
8358885144 .{ .type = .usize, .kind = .{ .extern_func = "__cmphf2" } },
8358985145 .{ .type = .i32, .kind = .{ .reg = .eax } },
8359085146 .{ .type = .u8, .kind = .{ .reg = .cl } },
......@@ -84424,8 +85980,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8442485980 .extra_temps = .{
8442585981 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
8442685982 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
84427 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
84428 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
85983 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
85984 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
8442985985 .{ .type = .usize, .kind = .{ .extern_func = "__cmptf2" } },
8443085986 .{ .type = .i32, .kind = .{ .reg = .eax } },
8443185987 .{ .type = .u8, .kind = .{ .reg = .cl } },
......@@ -84468,8 +86024,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8446886024 .extra_temps = .{
8446986025 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
8447086026 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
84471 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
84472 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
86027 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
86028 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
8447386029 .{ .type = .usize, .kind = .{ .extern_func = "__cmptf2" } },
8447486030 .{ .type = .i32, .kind = .{ .reg = .eax } },
8447586031 .{ .type = .u8, .kind = .{ .reg = .cl } },
......@@ -84512,8 +86068,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8451286068 .extra_temps = .{
8451386069 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
8451486070 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
84515 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
84516 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
86071 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
86072 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
8451786073 .{ .type = .usize, .kind = .{ .extern_func = "__cmptf2" } },
8451886074 .{ .type = .i32, .kind = .{ .reg = .eax } },
8451986075 .{ .type = .u8, .kind = .{ .reg = .cl } },
......@@ -84556,8 +86112,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8455686112 .extra_temps = .{
8455786113 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
8455886114 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
84559 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
84560 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
86115 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
86116 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
8456186117 .{ .type = .usize, .kind = .{ .extern_func = "__cmptf2" } },
8456286118 .{ .type = .i32, .kind = .{ .reg = .eax } },
8456386119 .{ .type = .u8, .kind = .{ .reg = .cl } },
......@@ -84600,8 +86156,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8460086156 .extra_temps = .{
8460186157 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
8460286158 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
84603 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
84604 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
86159 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
86160 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
8460586161 .{ .type = .usize, .kind = .{ .extern_func = "__cmptf2" } },
8460686162 .{ .type = .i32, .kind = .{ .reg = .eax } },
8460786163 .{ .type = .u8, .kind = .{ .reg = .cl } },
......@@ -84644,8 +86200,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8464486200 .extra_temps = .{
8464586201 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
8464686202 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
84647 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
84648 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
86203 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
86204 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
8464986205 .{ .type = .usize, .kind = .{ .extern_func = "__cmptf2" } },
8465086206 .{ .type = .i32, .kind = .{ .reg = .eax } },
8465186207 .{ .type = .u8, .kind = .{ .reg = .cl } },
......@@ -84688,8 +86244,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8468886244 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
8468986245 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
8469086246 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
84691 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
84692 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
86247 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
86248 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
8469386249 .{ .type = .usize, .kind = .{ .extern_func = "__cmptf2" } },
8469486250 .{ .type = .i32, .kind = .{ .reg = .eax } },
8469586251 .{ .type = .u8, .kind = .{ .reg = .cl } },
......@@ -84741,8 +86297,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8474186297 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
8474286298 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
8474386299 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
84744 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
84745 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
86300 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
86301 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
8474686302 .{ .type = .usize, .kind = .{ .extern_func = "__cmptf2" } },
8474786303 .{ .type = .i32, .kind = .{ .reg = .eax } },
8474886304 .{ .type = .u8, .kind = .{ .reg = .cl } },
......@@ -84794,8 +86350,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8479486350 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
8479586351 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
8479686352 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
84797 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
84798 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
86353 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
86354 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
8479986355 .{ .type = .usize, .kind = .{ .extern_func = "__cmptf2" } },
8480086356 .{ .type = .i32, .kind = .{ .reg = .eax } },
8480186357 .{ .type = .u8, .kind = .{ .reg = .cl } },
......@@ -84847,8 +86403,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8484786403 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
8484886404 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
8484986405 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
84850 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
84851 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
86406 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
86407 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
8485286408 .{ .type = .usize, .kind = .{ .extern_func = "__cmptf2" } },
8485386409 .{ .type = .i32, .kind = .{ .reg = .eax } },
8485486410 .{ .type = .u8, .kind = .{ .reg = .cl } },
......@@ -84900,8 +86456,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8490086456 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
8490186457 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
8490286458 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
84903 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
84904 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
86459 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
86460 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
8490586461 .{ .type = .usize, .kind = .{ .extern_func = "__cmptf2" } },
8490686462 .{ .type = .i32, .kind = .{ .reg = .eax } },
8490786463 .{ .type = .u8, .kind = .{ .reg = .cl } },
......@@ -84953,8 +86509,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8495386509 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
8495486510 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
8495586511 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
84956 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
84957 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
86512 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
86513 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
8495886514 .{ .type = .usize, .kind = .{ .extern_func = "__cmptf2" } },
8495986515 .{ .type = .i32, .kind = .{ .reg = .eax } },
8496086516 .{ .type = .u8, .kind = .{ .reg = .cl } },
......@@ -85048,7 +86604,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8504886604 .data = .{ .ip_index = old_inline_func },
8504986605 });
8505086606 },
85051 .dbg_var_ptr, .dbg_var_val, .dbg_arg_inline => |air_tag| if (use_old) try cg.airDbgVar(inst) else if (!cg.mod.strip) {
86607 .dbg_var_ptr, .dbg_var_val, .dbg_arg_inline => |air_tag| if (!cg.mod.strip) {
8505286608 const pl_op = air_datas[@intFromEnum(inst)].pl_op;
8505386609 const air_name: Air.NullTerminatedString = @enumFromInt(pl_op.payload);
8505486610 const op_ty = cg.typeOf(pl_op.operand);
......@@ -85086,7 +86642,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8508686642 try cg.genLocalDebugInfo(air_tag, local_ty, ops[0].tracking(cg).short);
8508786643 try ops[0].die(cg);
8508886644 },
85089 .is_null => if (use_old) try cg.airIsNull(inst) else {
86645 .is_null => {
8509086646 const un_op = air_datas[@intFromEnum(inst)].un_op;
8509186647 const opt_ty = cg.typeOf(un_op);
8509286648 const opt_repr_is_pl = opt_ty.optionalReprIsPayload(zcu);
......@@ -85111,7 +86667,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8511186667 const is_null = try cg.tempInit(.bool, .{ .eflags = .e });
8511286668 try is_null.finish(inst, &.{un_op}, &ops, cg);
8511386669 },
85114 .is_non_null => if (use_old) try cg.airIsNonNull(inst) else {
86670 .is_non_null => {
8511586671 const un_op = air_datas[@intFromEnum(inst)].un_op;
8511686672 const opt_ty = cg.typeOf(un_op);
8511786673 const opt_repr_is_pl = opt_ty.optionalReprIsPayload(zcu);
......@@ -85136,7 +86692,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8513686692 const is_non_null = try cg.tempInit(.bool, .{ .eflags = .ne });
8513786693 try is_non_null.finish(inst, &.{un_op}, &ops, cg);
8513886694 },
85139 .is_null_ptr => if (use_old) try cg.airIsNullPtr(inst) else {
86695 .is_null_ptr => {
8514086696 const un_op = air_datas[@intFromEnum(inst)].un_op;
8514186697 const opt_ty = cg.typeOf(un_op).childType(zcu);
8514286698 const opt_repr_is_pl = opt_ty.optionalReprIsPayload(zcu);
......@@ -85159,7 +86715,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8515986715 const is_null = try cg.tempInit(.bool, .{ .eflags = .e });
8516086716 try is_null.finish(inst, &.{un_op}, &ops, cg);
8516186717 },
85162 .is_non_null_ptr => if (use_old) try cg.airIsNonNullPtr(inst) else {
86718 .is_non_null_ptr => {
8516386719 const un_op = air_datas[@intFromEnum(inst)].un_op;
8516486720 const opt_ty = cg.typeOf(un_op).childType(zcu);
8516586721 const opt_repr_is_pl = opt_ty.optionalReprIsPayload(zcu);
......@@ -85182,7 +86738,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8518286738 const is_non_null = try cg.tempInit(.bool, .{ .eflags = .ne });
8518386739 try is_non_null.finish(inst, &.{un_op}, &ops, cg);
8518486740 },
85185 .is_err => if (use_old) try cg.airIsErr(inst) else {
86741 .is_err => {
8518686742 const un_op = air_datas[@intFromEnum(inst)].un_op;
8518786743 const eu_ty = cg.typeOf(un_op);
8518886744 const eu_err_ty = eu_ty.errorUnionSet(zcu);
......@@ -85198,7 +86754,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8519886754 const is_err = try cg.tempInit(.bool, .{ .eflags = .ne });
8519986755 try is_err.finish(inst, &.{un_op}, &ops, cg);
8520086756 },
85201 .is_non_err => if (use_old) try cg.airIsNonErr(inst) else {
86757 .is_non_err => {
8520286758 const un_op = air_datas[@intFromEnum(inst)].un_op;
8520386759 const eu_ty = cg.typeOf(un_op);
8520486760 const eu_err_ty = eu_ty.errorUnionSet(zcu);
......@@ -85214,7 +86770,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8521486770 const is_non_err = try cg.tempInit(.bool, .{ .eflags = .e });
8521586771 try is_non_err.finish(inst, &.{un_op}, &ops, cg);
8521686772 },
85217 .is_err_ptr => if (use_old) try cg.airIsErrPtr(inst) else {
86773 .is_err_ptr => {
8521886774 const un_op = air_datas[@intFromEnum(inst)].un_op;
8521986775 const eu_ty = cg.typeOf(un_op).childType(zcu);
8522086776 const eu_err_ty = eu_ty.errorUnionSet(zcu);
......@@ -85232,7 +86788,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8523286788 const is_err = try cg.tempInit(.bool, .{ .eflags = .ne });
8523386789 try is_err.finish(inst, &.{un_op}, &ops, cg);
8523486790 },
85235 .is_non_err_ptr => if (use_old) try cg.airIsNonErrPtr(inst) else {
86791 .is_non_err_ptr => {
8523686792 const un_op = air_datas[@intFromEnum(inst)].un_op;
8523786793 const eu_ty = cg.typeOf(un_op).childType(zcu);
8523886794 const eu_err_ty = eu_ty.errorUnionSet(zcu);
......@@ -85250,7 +86806,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8525086806 const is_non_err = try cg.tempInit(.bool, .{ .eflags = .e });
8525186807 try is_non_err.finish(inst, &.{un_op}, &ops, cg);
8525286808 },
85253 .load => if (use_old) try cg.airLoad(inst) else fallback: {
86809 .load => fallback: {
8525486810 const ty_op = air_datas[@intFromEnum(inst)].ty_op;
8525586811 const val_ty = ty_op.ty.toType();
8525686812 const ptr_ty = cg.typeOf(ty_op.operand);
......@@ -85299,7 +86855,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8529986855 for (ops) |op| try op.die(cg);
8530086856 },
8530186857 .unreach => {},
85302 .fptrunc => |air_tag| if (use_old) try cg.airFptrunc(inst) else {
86858 .fptrunc => |air_tag| {
8530386859 const ty_op = air_datas[@intFromEnum(inst)].ty_op;
8530486860 var ops = try cg.tempsFromOperands(inst, .{ty_op.operand});
8530586861 var res: [1]Temp = undefined;
......@@ -85341,7 +86897,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8534186897 .src_constraints = .{ .{ .scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any },
8534286898 .dst_constraints = .{ .{ .scalar_float = .{ .of = .word, .is = .word } }, .any },
8534386899 .patterns = &.{
85344 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },
86900 .{ .src = .{ .{ .to_param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .none, .none } },
8534586901 },
8534686902 .call_frame = .{ .alignment = .@"16" },
8534786903 .extra_temps = .{
......@@ -85370,7 +86926,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8537086926 .{ .src = .{ .to_mem, .none, .none } },
8537186927 },
8537286928 .extra_temps = .{
85373 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
86929 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
8537486930 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
8537586931 .unused,
8537686932 .unused,
......@@ -85385,11 +86941,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8538586941 .dst_temps = .{ .mem, .unused },
8538686942 .clobbers = .{ .eflags = true },
8538786943 .each = .{ .once = &.{
85388 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
85389 .{ .@"0:", .v_ps, .mova, .tmp1y, .memsia(.src0y, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
85390 .{ ._, .v_, .cvtps2ph, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1y, .rm(.{}), ._ },
85391 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
85392 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
86944 .{ ._, ._, .mov, .tmp0d, .sia(-16, .dst0, .add_size), ._, ._ },
86945 .{ .@"0:", .v_ps, .mova, .tmp1y, .memsi(.src0y, .@"2", .tmp0), ._, ._ },
86946 .{ ._, .v_, .cvtps2ph, .memi(.dst0x, .tmp0), .tmp1y, .rm(.{}), ._ },
86947 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
86948 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
8539386949 } },
8539486950 }, .{
8539586951 .required_features = .{ .avx, null, null, null },
......@@ -85400,8 +86956,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8540086956 },
8540186957 .call_frame = .{ .alignment = .@"16" },
8540286958 .extra_temps = .{
85403 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
85404 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
86959 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
86960 .{ .type = .f32, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
8540586961 .{ .type = .usize, .kind = .{ .extern_func = "__truncsfhf2" } },
8540686962 .unused,
8540786963 .unused,
......@@ -85415,12 +86971,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8541586971 .dst_temps = .{ .mem, .unused },
8541686972 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
8541786973 .each = .{ .once = &.{
85418 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
85419 .{ .@"0:", .v_ss, .mov, .tmp1x, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
86974 .{ ._, ._, .mov, .tmp0d, .sia(-2, .dst0, .add_unaligned_size), ._, ._ },
86975 .{ .@"0:", .v_ss, .mov, .tmp1x, .memsi(.src0d, .@"2", .tmp0), ._, ._ },
8542086976 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
85421 .{ ._, .vp_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ },
85422 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
85423 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
86977 .{ ._, .vp_w, .extr, .memi(.dst0w, .tmp0), .tmp1x, .ui(0), ._ },
86978 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
86979 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
8542486980 } },
8542586981 }, .{
8542686982 .required_features = .{ .sse4_1, null, null, null },
......@@ -85431,8 +86987,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8543186987 },
8543286988 .call_frame = .{ .alignment = .@"16" },
8543386989 .extra_temps = .{
85434 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
85435 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
86990 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
86991 .{ .type = .f32, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
8543686992 .{ .type = .usize, .kind = .{ .extern_func = "__truncsfhf2" } },
8543786993 .unused,
8543886994 .unused,
......@@ -85446,12 +87002,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8544687002 .dst_temps = .{ .mem, .unused },
8544787003 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
8544887004 .each = .{ .once = &.{
85449 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
85450 .{ .@"0:", ._ss, .mov, .tmp1x, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
87005 .{ ._, ._, .mov, .tmp0d, .sia(-2, .dst0, .add_unaligned_size), ._, ._ },
87006 .{ .@"0:", ._ss, .mov, .tmp1x, .memsi(.src0d, .@"2", .tmp0), ._, ._ },
8545187007 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
85452 .{ ._, .p_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ },
85453 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
85454 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
87008 .{ ._, .p_w, .extr, .memi(.dst0w, .tmp0), .tmp1x, .ui(0), ._ },
87009 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
87010 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
8545587011 } },
8545687012 }, .{
8545787013 .required_features = .{ .sse2, null, null, null },
......@@ -85462,8 +87018,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8546287018 },
8546387019 .call_frame = .{ .alignment = .@"16" },
8546487020 .extra_temps = .{
85465 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
85466 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
87021 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
87022 .{ .type = .f32, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
8546787023 .{ .type = .usize, .kind = .{ .extern_func = "__truncsfhf2" } },
8546887024 .{ .type = .f16, .kind = .{ .reg = .ax } },
8546987025 .unused,
......@@ -85477,13 +87033,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8547787033 .dst_temps = .{ .mem, .unused },
8547887034 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
8547987035 .each = .{ .once = &.{
85480 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
85481 .{ .@"0:", ._ss, .mov, .tmp1x, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
87036 .{ ._, ._, .mov, .tmp0d, .sia(-2, .dst0, .add_unaligned_size), ._, ._ },
87037 .{ .@"0:", ._ss, .mov, .tmp1x, .memsi(.src0d, .@"2", .tmp0), ._, ._ },
8548287038 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
8548387039 .{ ._, .p_w, .extr, .tmp3d, .tmp1x, .ui(0), ._ },
85484 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp3w, ._, ._ },
85485 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
85486 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
87040 .{ ._, ._, .mov, .memi(.dst0w, .tmp0), .tmp3w, ._, ._ },
87041 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
87042 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
8548787043 } },
8548887044 }, .{
8548987045 .required_features = .{ .sse, null, null, null },
......@@ -85494,8 +87050,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8549487050 },
8549587051 .call_frame = .{ .alignment = .@"16" },
8549687052 .extra_temps = .{
85497 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
85498 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
87053 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
87054 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
8549987055 .{ .type = .usize, .kind = .{ .extern_func = "__truncsfhf2" } },
8550087056 .{ .type = .f32, .kind = .mem },
8550187057 .{ .type = .f16, .kind = .{ .reg = .ax } },
......@@ -85509,21 +87065,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8550987065 .dst_temps = .{ .mem, .unused },
8551087066 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
8551187067 .each = .{ .once = &.{
85512 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
85513 .{ .@"0:", ._ss, .mov, .tmp1x, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
87068 .{ ._, ._, .mov, .tmp0d, .sia(-2, .dst0, .add_unaligned_size), ._, ._ },
87069 .{ .@"0:", ._ss, .mov, .tmp1x, .memsi(.src0d, .@"2", .tmp0), ._, ._ },
8551487070 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
8551587071 .{ ._, ._ss, .mov, .mem(.tmp3d), .tmp1x, ._, ._ },
8551687072 .{ ._, ._, .mov, .tmp4d, .mem(.tmp3d), ._, ._ },
85517 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp4w, ._, ._ },
85518 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
85519 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
87073 .{ ._, ._, .mov, .memi(.dst0w, .tmp0), .tmp4w, ._, ._ },
87074 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
87075 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
8552087076 } },
8552187077 }, .{
8552287078 .required_features = .{ .sse, null, null, null },
8552387079 .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
8552487080 .dst_constraints = .{ .{ .scalar_float = .{ .of = .word, .is = .word } }, .any },
8552587081 .patterns = &.{
85526 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },
87082 .{ .src = .{ .{ .to_param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .none, .none } },
8552787083 },
8552887084 .call_frame = .{ .alignment = .@"16" },
8552987085 .extra_temps = .{
......@@ -85553,8 +87109,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8555387109 },
8555487110 .call_frame = .{ .alignment = .@"16" },
8555587111 .extra_temps = .{
85556 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
85557 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
87112 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
87113 .{ .type = .f64, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
8555887114 .{ .type = .usize, .kind = .{ .extern_func = "__truncdfhf2" } },
8555987115 .unused,
8556087116 .unused,
......@@ -85568,12 +87124,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8556887124 .dst_temps = .{ .mem, .unused },
8556987125 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
8557087126 .each = .{ .once = &.{
85571 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
85572 .{ .@"0:", .v_sd, .mov, .tmp1x, .memsia(.src0q, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
87127 .{ ._, ._, .mov, .tmp0d, .sia(-2, .dst0, .add_unaligned_size), ._, ._ },
87128 .{ .@"0:", .v_sd, .mov, .tmp1x, .memsi(.src0q, .@"4", .tmp0), ._, ._ },
8557387129 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
85574 .{ ._, .vp_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ },
85575 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
85576 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
87130 .{ ._, .vp_w, .extr, .memi(.dst0w, .tmp0), .tmp1x, .ui(0), ._ },
87131 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
87132 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
8557787133 } },
8557887134 }, .{
8557987135 .required_features = .{ .sse4_1, null, null, null },
......@@ -85584,8 +87140,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8558487140 },
8558587141 .call_frame = .{ .alignment = .@"16" },
8558687142 .extra_temps = .{
85587 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
85588 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
87143 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
87144 .{ .type = .f64, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
8558987145 .{ .type = .usize, .kind = .{ .extern_func = "__truncdfhf2" } },
8559087146 .unused,
8559187147 .unused,
......@@ -85599,12 +87155,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8559987155 .dst_temps = .{ .mem, .unused },
8560087156 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
8560187157 .each = .{ .once = &.{
85602 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
85603 .{ .@"0:", ._sd, .mov, .tmp1x, .memsia(.src0q, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
87158 .{ ._, ._, .mov, .tmp0d, .sia(-2, .dst0, .add_unaligned_size), ._, ._ },
87159 .{ .@"0:", ._sd, .mov, .tmp1x, .memsi(.src0q, .@"4", .tmp0), ._, ._ },
8560487160 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
85605 .{ ._, .p_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ },
85606 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
85607 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
87161 .{ ._, .p_w, .extr, .memi(.dst0w, .tmp0), .tmp1x, .ui(0), ._ },
87162 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
87163 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
8560887164 } },
8560987165 }, .{
8561087166 .required_features = .{ .sse2, null, null, null },
......@@ -85615,8 +87171,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8561587171 },
8561687172 .call_frame = .{ .alignment = .@"16" },
8561787173 .extra_temps = .{
85618 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
85619 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
87174 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
87175 .{ .type = .f64, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
8562087176 .{ .type = .usize, .kind = .{ .extern_func = "__truncdfhf2" } },
8562187177 .{ .type = .f16, .kind = .{ .reg = .ax } },
8562287178 .unused,
......@@ -85630,13 +87186,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8563087186 .dst_temps = .{ .mem, .unused },
8563187187 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
8563287188 .each = .{ .once = &.{
85633 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
85634 .{ .@"0:", ._sd, .mov, .tmp1x, .memsia(.src0q, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
87189 .{ ._, ._, .mov, .tmp0d, .sia(-2, .dst0, .add_unaligned_size), ._, ._ },
87190 .{ .@"0:", ._sd, .mov, .tmp1x, .memsi(.src0q, .@"4", .tmp0), ._, ._ },
8563587191 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
8563687192 .{ ._, .p_w, .extr, .tmp3d, .tmp1x, .ui(0), ._ },
85637 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp3w, ._, ._ },
85638 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
85639 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
87193 .{ ._, ._, .mov, .memi(.dst0w, .tmp0), .tmp3w, ._, ._ },
87194 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
87195 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
8564087196 } },
8564187197 }, .{
8564287198 .required_features = .{ .sse, null, null, null },
......@@ -85647,8 +87203,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8564787203 },
8564887204 .call_frame = .{ .alignment = .@"16" },
8564987205 .extra_temps = .{
85650 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
85651 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
87206 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
87207 .{ .type = .f64, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
8565287208 .{ .type = .usize, .kind = .{ .extern_func = "__truncdfhf2" } },
8565387209 .{ .type = .f32, .kind = .mem },
8565487210 .{ .type = .f16, .kind = .{ .reg = .ax } },
......@@ -85662,15 +87218,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8566287218 .dst_temps = .{ .mem, .unused },
8566387219 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
8566487220 .each = .{ .once = &.{
85665 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
87221 .{ ._, ._, .mov, .tmp0d, .sia(-2, .dst0, .add_unaligned_size), ._, ._ },
8566687222 .{ .@"0:", ._ps, .xor, .tmp1x, .tmp1x, ._, ._ },
85667 .{ ._, ._ps, .movl, .tmp1x, .memsia(.src0q, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
87223 .{ ._, ._ps, .movl, .tmp1x, .memsi(.src0q, .@"4", .tmp0), ._, ._ },
8566887224 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
8566987225 .{ ._, ._ss, .mov, .mem(.tmp3d), .tmp1x, ._, ._ },
8567087226 .{ ._, ._, .mov, .tmp4d, .mem(.tmp3d), ._, ._ },
85671 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp4w, ._, ._ },
85672 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
85673 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
87227 .{ ._, ._, .mov, .memi(.dst0w, .tmp0), .tmp4w, ._, ._ },
87228 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
87229 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
8567487230 } },
8567587231 }, .{
8567687232 .required_features = .{ .avx, null, null, null },
......@@ -85777,7 +87333,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8577787333 .{ .src = .{ .to_mem, .none, .none } },
8577887334 },
8577987335 .extra_temps = .{
85780 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
87336 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
8578187337 .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } },
8578287338 .unused,
8578387339 .unused,
......@@ -85792,11 +87348,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8579287348 .dst_temps = .{ .mem, .unused },
8579387349 .clobbers = .{ .eflags = true },
8579487350 .each = .{ .once = &.{
85795 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
85796 .{ .@"0:", .v_ps, .cvtpd2, .tmp1x, .memsia(.src0y, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
85797 .{ ._, .v_ps, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
85798 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
85799 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
87351 .{ ._, ._, .mov, .tmp0d, .sia(-16, .dst0, .add_size), ._, ._ },
87352 .{ .@"0:", .v_ps, .cvtpd2, .tmp1x, .memsi(.src0y, .@"2", .tmp0), ._, ._ },
87353 .{ ._, .v_ps, .mova, .memi(.dst0x, .tmp0), .tmp1x, ._, ._ },
87354 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
87355 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
8580087356 } },
8580187357 }, .{
8580287358 .required_features = .{ .sse2, null, null, null },
......@@ -85806,7 +87362,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8580687362 .{ .src = .{ .to_mem, .none, .none } },
8580787363 },
8580887364 .extra_temps = .{
85809 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
87365 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
8581087366 .{ .type = .vector_2_f32, .kind = .{ .rc = .sse } },
8581187367 .unused,
8581287368 .unused,
......@@ -85821,11 +87377,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8582187377 .dst_temps = .{ .mem, .unused },
8582287378 .clobbers = .{ .eflags = true },
8582387379 .each = .{ .once = &.{
85824 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
85825 .{ .@"0:", ._ps, .cvtpd2, .tmp1x, .memsia(.src0x, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
85826 .{ ._, ._ps, .movl, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
85827 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
85828 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
87380 .{ ._, ._, .mov, .tmp0d, .sia(-8, .dst0, .add_unaligned_size), ._, ._ },
87381 .{ .@"0:", ._ps, .cvtpd2, .tmp1x, .memsi(.src0x, .@"2", .tmp0), ._, ._ },
87382 .{ ._, ._ps, .movl, .memi(.dst0q, .tmp0), .tmp1x, ._, ._ },
87383 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
87384 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
8582987385 } },
8583087386 }, .{
8583187387 .required_features = .{ .x87, null, null, null },
......@@ -85835,7 +87391,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8583587391 .{ .src = .{ .to_mem, .none, .none } },
8583687392 },
8583787393 .extra_temps = .{
85838 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
87394 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
8583987395 .{ .type = .f64, .kind = .{ .reg = .st7 } },
8584087396 .unused,
8584187397 .unused,
......@@ -85850,13 +87406,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8585087406 .dst_temps = .{ .mem, .unused },
8585187407 .clobbers = .{ .eflags = true },
8585287408 .each = .{ .once = &.{
85853 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
85854 .{ .@"0:", .f_, .ld, .memsia(.src0q, .@"2", .tmp0, .add_unaligned_size), ._, ._, ._ },
85855 .{ ._, .f_p, .st, .memia(.dst0d, .tmp0, .add_unaligned_size), ._, ._, ._ },
85856 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
85857 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
87409 .{ ._, ._, .mov, .tmp0d, .sia(-4, .dst0, .add_unaligned_size), ._, ._ },
87410 .{ .@"0:", .f_, .ld, .memsi(.src0q, .@"2", .tmp0), ._, ._, ._ },
87411 .{ ._, .f_p, .st, .memi(.dst0d, .tmp0), ._, ._, ._ },
87412 .{ ._, ._, .sub, .tmp0d, .si(4), ._, ._ },
87413 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
8585887414 } },
8585987415 }, .{
87416 .required_cc_abi = .sysv64,
8586087417 .required_features = .{ .avx, null, null, null },
8586187418 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
8586287419 .dst_constraints = .{ .{ .scalar_float = .{ .of = .word, .is = .word } }, .any },
......@@ -85877,7 +87434,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8587787434 .unused,
8587887435 .unused,
8587987436 },
85880 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },
87437 .dst_temps = .{ .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
8588187438 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
8588287439 .each = .{ .once = &.{
8588387440 .{ ._, .v_dqa, .mov, .dst0x, .mem(.src0x), ._, ._ },
......@@ -85885,6 +87442,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8588587442 .{ ._, ._, .call, .tmp1d, ._, ._, ._ },
8588687443 } },
8588787444 }, .{
87445 .required_cc_abi = .sysv64,
8588887446 .required_features = .{ .sse2, null, null, null },
8588987447 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
8589087448 .dst_constraints = .{ .{ .scalar_float = .{ .of = .word, .is = .word } }, .any },
......@@ -85905,7 +87463,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8590587463 .unused,
8590687464 .unused,
8590787465 },
85908 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },
87466 .dst_temps = .{ .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
8590987467 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
8591087468 .each = .{ .once = &.{
8591187469 .{ ._, ._dqa, .mov, .dst0x, .mem(.src0x), ._, ._ },
......@@ -85913,6 +87471,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8591387471 .{ ._, ._, .call, .tmp1d, ._, ._, ._ },
8591487472 } },
8591587473 }, .{
87474 .required_cc_abi = .sysv64,
8591687475 .required_features = .{ .sse, null, null, null },
8591787476 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
8591887477 .dst_constraints = .{ .{ .scalar_float = .{ .of = .word, .is = .word } }, .any },
......@@ -85933,7 +87492,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8593387492 .unused,
8593487493 .unused,
8593587494 },
85936 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },
87495 .dst_temps = .{ .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
8593787496 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
8593887497 .each = .{ .once = &.{
8593987498 .{ ._, ._ps, .mova, .dst0x, .mem(.src0x), ._, ._ },
......@@ -85941,6 +87500,35 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8594187500 .{ ._, ._, .call, .tmp1d, ._, ._, ._ },
8594287501 } },
8594387502 }, .{
87503 .required_cc_abi = .win64,
87504 .required_features = .{ .sse, null, null, null },
87505 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
87506 .dst_constraints = .{ .{ .scalar_float = .{ .of = .word, .is = .word } }, .any },
87507 .patterns = &.{
87508 .{ .src = .{ .to_mem, .none, .none } },
87509 },
87510 .call_frame = .{ .alignment = .@"16" },
87511 .extra_temps = .{
87512 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
87513 .{ .type = .usize, .kind = .{ .extern_func = "__truncxfhf2" } },
87514 .unused,
87515 .unused,
87516 .unused,
87517 .unused,
87518 .unused,
87519 .unused,
87520 .unused,
87521 .unused,
87522 .unused,
87523 },
87524 .dst_temps = .{ .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
87525 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
87526 .each = .{ .once = &.{
87527 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
87528 .{ ._, ._, .call, .tmp1d, ._, ._, ._ },
87529 } },
87530 }, .{
87531 .required_cc_abi = .sysv64,
8594487532 .required_features = .{ .avx, null, null, null },
8594587533 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
8594687534 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
......@@ -85949,8 +87537,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8594987537 },
8595087538 .call_frame = .{ .size = 16, .alignment = .@"16" },
8595187539 .extra_temps = .{
85952 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
85953 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
87540 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
87541 .{ .type = .f80, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
8595487542 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
8595587543 .{ .type = .usize, .kind = .{ .extern_func = "__truncxfhf2" } },
8595687544 .unused,
......@@ -85964,15 +87552,48 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8596487552 .dst_temps = .{ .mem, .unused },
8596587553 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
8596687554 .each = .{ .once = &.{
85967 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
85968 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memsia(.src0x, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
87555 .{ ._, ._, .mov, .tmp0d, .sia(-2, .dst0, .add_unaligned_size), ._, ._ },
87556 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memsi(.src0x, .@"8", .tmp0), ._, ._ },
8596987557 .{ ._, .v_dqa, .mov, .mem(.tmp2x), .tmp1x, ._, ._ },
8597087558 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
85971 .{ ._, .vp_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ },
85972 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
85973 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
87559 .{ ._, .vp_w, .extr, .memi(.dst0w, .tmp0), .tmp1x, .ui(0), ._ },
87560 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
87561 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
87562 } },
87563 }, .{
87564 .required_cc_abi = .win64,
87565 .required_features = .{ .avx, null, null, null },
87566 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
87567 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
87568 .patterns = &.{
87569 .{ .src = .{ .to_mem, .none, .none } },
87570 },
87571 .call_frame = .{ .alignment = .@"16" },
87572 .extra_temps = .{
87573 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
87574 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
87575 .{ .type = .usize, .kind = .{ .extern_func = "__truncxfhf2" } },
87576 .{ .type = .f80, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
87577 .unused,
87578 .unused,
87579 .unused,
87580 .unused,
87581 .unused,
87582 .unused,
87583 .unused,
87584 },
87585 .dst_temps = .{ .mem, .unused },
87586 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
87587 .each = .{ .once = &.{
87588 .{ ._, ._, .mov, .tmp0d, .sia(-2, .dst0, .add_unaligned_size), ._, ._ },
87589 .{ .@"0:", ._, .lea, .tmp1p, .memsi(.src0, .@"8", .tmp0), ._, ._ },
87590 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
87591 .{ ._, .vp_w, .extr, .memi(.dst0w, .tmp0), .tmp3x, .ui(0), ._ },
87592 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
87593 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
8597487594 } },
8597587595 }, .{
87596 .required_cc_abi = .sysv64,
8597687597 .required_features = .{ .sse4_1, null, null, null },
8597787598 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
8597887599 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
......@@ -85981,8 +87602,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8598187602 },
8598287603 .call_frame = .{ .size = 16, .alignment = .@"16" },
8598387604 .extra_temps = .{
85984 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
85985 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
87605 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
87606 .{ .type = .f80, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
8598687607 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
8598787608 .{ .type = .usize, .kind = .{ .extern_func = "__truncxfhf2" } },
8598887609 .unused,
......@@ -85996,15 +87617,48 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8599687617 .dst_temps = .{ .mem, .unused },
8599787618 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
8599887619 .each = .{ .once = &.{
85999 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
86000 .{ .@"0:", ._dqa, .mov, .tmp1x, .memsia(.src0x, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
87620 .{ ._, ._, .mov, .tmp0d, .sia(-2, .dst0, .add_unaligned_size), ._, ._ },
87621 .{ .@"0:", ._dqa, .mov, .tmp1x, .memsi(.src0x, .@"8", .tmp0), ._, ._ },
8600187622 .{ ._, ._dqa, .mov, .mem(.tmp2x), .tmp1x, ._, ._ },
8600287623 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
86003 .{ ._, .p_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ },
86004 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
86005 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
87624 .{ ._, .p_w, .extr, .memi(.dst0w, .tmp0), .tmp1x, .ui(0), ._ },
87625 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
87626 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
87627 } },
87628 }, .{
87629 .required_cc_abi = .win64,
87630 .required_features = .{ .sse4_1, null, null, null },
87631 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
87632 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
87633 .patterns = &.{
87634 .{ .src = .{ .to_mem, .none, .none } },
87635 },
87636 .call_frame = .{ .alignment = .@"16" },
87637 .extra_temps = .{
87638 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
87639 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
87640 .{ .type = .usize, .kind = .{ .extern_func = "__truncxfhf2" } },
87641 .{ .type = .f80, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
87642 .unused,
87643 .unused,
87644 .unused,
87645 .unused,
87646 .unused,
87647 .unused,
87648 .unused,
87649 },
87650 .dst_temps = .{ .mem, .unused },
87651 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
87652 .each = .{ .once = &.{
87653 .{ ._, ._, .mov, .tmp0d, .sia(-2, .dst0, .add_unaligned_size), ._, ._ },
87654 .{ .@"0:", ._, .lea, .tmp1p, .memsi(.src0, .@"8", .tmp0), ._, ._ },
87655 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
87656 .{ ._, .p_w, .extr, .memi(.dst0w, .tmp0), .tmp3x, .ui(0), ._ },
87657 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
87658 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
8600687659 } },
8600787660 }, .{
87661 .required_cc_abi = .sysv64,
8600887662 .required_features = .{ .sse2, null, null, null },
8600987663 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
8601087664 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
......@@ -86013,8 +87667,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8601387667 },
8601487668 .call_frame = .{ .size = 16, .alignment = .@"16" },
8601587669 .extra_temps = .{
86016 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
86017 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
87670 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
87671 .{ .type = .f80, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
8601887672 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
8601987673 .{ .type = .usize, .kind = .{ .extern_func = "__truncxfhf2" } },
8602087674 .{ .type = .f16, .kind = .{ .reg = .ax } },
......@@ -86028,16 +87682,50 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8602887682 .dst_temps = .{ .mem, .unused },
8602987683 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
8603087684 .each = .{ .once = &.{
86031 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
86032 .{ .@"0:", ._dqa, .mov, .tmp1x, .memsia(.src0x, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
87685 .{ ._, ._, .mov, .tmp0d, .sia(-2, .dst0, .add_unaligned_size), ._, ._ },
87686 .{ .@"0:", ._dqa, .mov, .tmp1x, .memsi(.src0x, .@"8", .tmp0), ._, ._ },
8603387687 .{ ._, ._dqa, .mov, .mem(.tmp2x), .tmp1x, ._, ._ },
8603487688 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
8603587689 .{ ._, .p_w, .extr, .tmp4d, .tmp1x, .ui(0), ._ },
86036 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp4w, ._, ._ },
86037 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
86038 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
87690 .{ ._, ._, .mov, .memi(.dst0w, .tmp0), .tmp4w, ._, ._ },
87691 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
87692 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
87693 } },
87694 }, .{
87695 .required_cc_abi = .win64,
87696 .required_features = .{ .sse2, null, null, null },
87697 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
87698 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
87699 .patterns = &.{
87700 .{ .src = .{ .to_mem, .none, .none } },
87701 },
87702 .call_frame = .{ .alignment = .@"16" },
87703 .extra_temps = .{
87704 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
87705 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
87706 .{ .type = .usize, .kind = .{ .extern_func = "__truncxfhf2" } },
87707 .{ .type = .f80, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
87708 .{ .type = .f16, .kind = .{ .reg = .ax } },
87709 .unused,
87710 .unused,
87711 .unused,
87712 .unused,
87713 .unused,
87714 .unused,
87715 },
87716 .dst_temps = .{ .mem, .unused },
87717 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
87718 .each = .{ .once = &.{
87719 .{ ._, ._, .mov, .tmp0d, .sia(-2, .dst0, .add_unaligned_size), ._, ._ },
87720 .{ .@"0:", ._, .lea, .tmp1p, .memsi(.src0, .@"8", .tmp0), ._, ._ },
87721 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
87722 .{ ._, .p_w, .extr, .tmp4d, .tmp3x, .ui(0), ._ },
87723 .{ ._, ._, .mov, .memi(.dst0w, .tmp0), .tmp4w, ._, ._ },
87724 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
87725 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
8603987726 } },
8604087727 }, .{
87728 .required_cc_abi = .sysv64,
8604187729 .required_features = .{ .sse, null, null, null },
8604287730 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
8604387731 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
......@@ -86046,8 +87734,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8604687734 },
8604787735 .call_frame = .{ .size = 16, .alignment = .@"16" },
8604887736 .extra_temps = .{
86049 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
86050 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
87737 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
87738 .{ .type = .f80, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
8605187739 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
8605287740 .{ .type = .usize, .kind = .{ .extern_func = "__truncxfhf2" } },
8605387741 .{ .type = .f16, .kind = .{ .reg = .ax } },
......@@ -86061,15 +87749,49 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8606187749 .dst_temps = .{ .mem, .unused },
8606287750 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
8606387751 .each = .{ .once = &.{
86064 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
86065 .{ .@"0:", ._ps, .mova, .tmp1x, .memsia(.src0x, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
87752 .{ ._, ._, .mov, .tmp0d, .sia(-2, .dst0, .add_unaligned_size), ._, ._ },
87753 .{ .@"0:", ._ps, .mova, .tmp1x, .memsi(.src0x, .@"8", .tmp0), ._, ._ },
8606687754 .{ ._, ._ps, .mova, .mem(.tmp2x), .tmp1x, ._, ._ },
8606787755 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
8606887756 .{ ._, ._ss, .mov, .mem(.tmp2d), .tmp1x, ._, ._ },
8606987757 .{ ._, ._, .mov, .tmp4d, .mem(.tmp2d), ._, ._ },
86070 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp4w, ._, ._ },
86071 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
86072 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
87758 .{ ._, ._, .mov, .memi(.dst0w, .tmp0), .tmp4w, ._, ._ },
87759 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
87760 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
87761 } },
87762 }, .{
87763 .required_cc_abi = .win64,
87764 .required_features = .{ .sse, null, null, null },
87765 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
87766 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
87767 .patterns = &.{
87768 .{ .src = .{ .to_mem, .none, .none } },
87769 },
87770 .call_frame = .{ .alignment = .@"16" },
87771 .extra_temps = .{
87772 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
87773 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
87774 .{ .type = .usize, .kind = .{ .extern_func = "__truncxfhf2" } },
87775 .{ .type = .f80, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
87776 .{ .type = .f32, .kind = .mem },
87777 .{ .type = .f16, .kind = .{ .reg = .ax } },
87778 .unused,
87779 .unused,
87780 .unused,
87781 .unused,
87782 .unused,
87783 },
87784 .dst_temps = .{ .mem, .unused },
87785 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
87786 .each = .{ .once = &.{
87787 .{ ._, ._, .mov, .tmp0d, .sia(-2, .dst0, .add_unaligned_size), ._, ._ },
87788 .{ .@"0:", ._, .lea, .tmp1p, .memsi(.src0, .@"8", .tmp0), ._, ._ },
87789 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
87790 .{ ._, ._ss, .mov, .mem(.tmp4d), .tmp3x, ._, ._ },
87791 .{ ._, ._, .mov, .tmp5d, .mem(.tmp4d), ._, ._ },
87792 .{ ._, ._, .mov, .memi(.dst0w, .tmp0), .tmp5w, ._, ._ },
87793 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
87794 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
8607387795 } },
8607487796 }, .{
8607587797 .required_features = .{ .x87, null, null, null },
......@@ -86105,7 +87827,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8610587827 .{ .src = .{ .to_mem, .none, .none } },
8610687828 },
8610787829 .extra_temps = .{
86108 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
87830 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
8610987831 .{ .type = .f80, .kind = .{ .reg = .st7 } },
8611087832 .unused,
8611187833 .unused,
......@@ -86120,11 +87842,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8612087842 .dst_temps = .{ .mem, .unused },
8612187843 .clobbers = .{ .eflags = true },
8612287844 .each = .{ .once = &.{
86123 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
86124 .{ .@"0:", .f_, .ld, .memsia(.src0t, .@"4", .tmp0, .add_unaligned_size), ._, ._, ._ },
86125 .{ ._, .f_p, .st, .memia(.dst0d, .tmp0, .add_unaligned_size), ._, ._, ._ },
86126 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
86127 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
87845 .{ ._, ._, .mov, .tmp0d, .sia(-4, .dst0, .add_unaligned_size), ._, ._ },
87846 .{ .@"0:", .f_, .ld, .memsi(.src0t, .@"4", .tmp0), ._, ._, ._ },
87847 .{ ._, .f_p, .st, .memi(.dst0d, .tmp0), ._, ._, ._ },
87848 .{ ._, ._, .sub, .tmp0d, .si(4), ._, ._ },
87849 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
8612887850 } },
8612987851 }, .{
8613087852 .required_features = .{ .x87, null, null, null },
......@@ -86160,7 +87882,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8616087882 .{ .src = .{ .to_mem, .none, .none } },
8616187883 },
8616287884 .extra_temps = .{
86163 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
87885 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
8616487886 .{ .type = .f80, .kind = .{ .reg = .st7 } },
8616587887 .unused,
8616687888 .unused,
......@@ -86175,18 +87897,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8617587897 .dst_temps = .{ .mem, .unused },
8617687898 .clobbers = .{ .eflags = true },
8617787899 .each = .{ .once = &.{
86178 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
86179 .{ .@"0:", .f_, .ld, .memsia(.src0t, .@"2", .tmp0, .add_unaligned_size), ._, ._, ._ },
86180 .{ ._, .f_p, .st, .memia(.dst0q, .tmp0, .add_unaligned_size), ._, ._, ._ },
86181 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
86182 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
87900 .{ ._, ._, .mov, .tmp0d, .sia(-8, .dst0, .add_unaligned_size), ._, ._ },
87901 .{ .@"0:", .f_, .ld, .memsi(.src0t, .@"2", .tmp0), ._, ._, ._ },
87902 .{ ._, .f_p, .st, .memi(.dst0q, .tmp0), ._, ._, ._ },
87903 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
87904 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
8618387905 } },
8618487906 }, .{
8618587907 .required_features = .{ .sse, null, null, null },
8618687908 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },
8618787909 .dst_constraints = .{ .{ .scalar_float = .{ .of = .word, .is = .word } }, .any },
8618887910 .patterns = &.{
86189 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },
87911 .{ .src = .{ .{ .to_param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .none, .none } },
8619087912 },
8619187913 .call_frame = .{ .alignment = .@"16" },
8619287914 .extra_temps = .{
......@@ -86216,8 +87938,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8621687938 },
8621787939 .call_frame = .{ .alignment = .@"16" },
8621887940 .extra_temps = .{
86219 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
86220 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
87941 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
87942 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
8622187943 .{ .type = .usize, .kind = .{ .extern_func = "__trunctfhf2" } },
8622287944 .unused,
8622387945 .unused,
......@@ -86231,12 +87953,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8623187953 .dst_temps = .{ .mem, .unused },
8623287954 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
8623387955 .each = .{ .once = &.{
86234 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
86235 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memsia(.src0x, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
87956 .{ ._, ._, .mov, .tmp0d, .sia(-2, .dst0, .add_unaligned_size), ._, ._ },
87957 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memsi(.src0x, .@"8", .tmp0), ._, ._ },
8623687958 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
86237 .{ ._, .vp_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ },
86238 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
86239 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
87959 .{ ._, .vp_w, .extr, .memi(.dst0w, .tmp0), .tmp1x, .ui(0), ._ },
87960 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
87961 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
8624087962 } },
8624187963 }, .{
8624287964 .required_features = .{ .sse4_1, null, null, null },
......@@ -86247,8 +87969,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8624787969 },
8624887970 .call_frame = .{ .alignment = .@"16" },
8624987971 .extra_temps = .{
86250 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
86251 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
87972 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
87973 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
8625287974 .{ .type = .usize, .kind = .{ .extern_func = "__trunctfhf2" } },
8625387975 .unused,
8625487976 .unused,
......@@ -86262,12 +87984,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8626287984 .dst_temps = .{ .mem, .unused },
8626387985 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
8626487986 .each = .{ .once = &.{
86265 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
86266 .{ .@"0:", ._dqa, .mov, .tmp1x, .memsia(.src0x, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
87987 .{ ._, ._, .mov, .tmp0d, .sia(-2, .dst0, .add_unaligned_size), ._, ._ },
87988 .{ .@"0:", ._dqa, .mov, .tmp1x, .memsi(.src0x, .@"8", .tmp0), ._, ._ },
8626787989 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
86268 .{ ._, .p_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ },
86269 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
86270 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
87990 .{ ._, .p_w, .extr, .memi(.dst0w, .tmp0), .tmp1x, .ui(0), ._ },
87991 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
87992 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
8627187993 } },
8627287994 }, .{
8627387995 .required_features = .{ .sse2, null, null, null },
......@@ -86278,8 +88000,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8627888000 },
8627988001 .call_frame = .{ .alignment = .@"16" },
8628088002 .extra_temps = .{
86281 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
86282 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
88003 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
88004 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
8628388005 .{ .type = .usize, .kind = .{ .extern_func = "__trunctfhf2" } },
8628488006 .{ .type = .f16, .kind = .{ .reg = .ax } },
8628588007 .unused,
......@@ -86293,13 +88015,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8629388015 .dst_temps = .{ .mem, .unused },
8629488016 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
8629588017 .each = .{ .once = &.{
86296 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
86297 .{ .@"0:", ._dqa, .mov, .tmp1x, .memsia(.src0x, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
88018 .{ ._, ._, .mov, .tmp0d, .sia(-2, .dst0, .add_unaligned_size), ._, ._ },
88019 .{ .@"0:", ._dqa, .mov, .tmp1x, .memsi(.src0x, .@"8", .tmp0), ._, ._ },
8629888020 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
8629988021 .{ ._, .p_w, .extr, .tmp3d, .tmp1x, .ui(0), ._ },
86300 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp3w, ._, ._ },
86301 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
86302 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
88022 .{ ._, ._, .mov, .memi(.dst0w, .tmp0), .tmp3w, ._, ._ },
88023 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
88024 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
8630388025 } },
8630488026 }, .{
8630588027 .required_features = .{ .sse, null, null, null },
......@@ -86310,8 +88032,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8631088032 },
8631188033 .call_frame = .{ .alignment = .@"16" },
8631288034 .extra_temps = .{
86313 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
86314 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
88035 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
88036 .{ .type = .f64, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
8631588037 .{ .type = .usize, .kind = .{ .extern_func = "__trunctfhf2" } },
8631688038 .{ .type = .f32, .kind = .mem },
8631788039 .{ .type = .f16, .kind = .{ .reg = .ax } },
......@@ -86325,21 +88047,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8632588047 .dst_temps = .{ .mem, .unused },
8632688048 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
8632788049 .each = .{ .once = &.{
86328 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
86329 .{ .@"0:", ._ps, .mova, .tmp1x, .memsia(.src0x, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
88050 .{ ._, ._, .mov, .tmp0d, .sia(-2, .dst0, .add_unaligned_size), ._, ._ },
88051 .{ .@"0:", ._ps, .mova, .tmp1x, .memsi(.src0x, .@"8", .tmp0), ._, ._ },
8633088052 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
8633188053 .{ ._, ._ss, .mov, .mem(.tmp3d), .tmp1x, ._, ._ },
8633288054 .{ ._, ._, .mov, .tmp4d, .mem(.tmp3d), ._, ._ },
86333 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp4w, ._, ._ },
86334 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
86335 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
88055 .{ ._, ._, .mov, .memi(.dst0w, .tmp0), .tmp4w, ._, ._ },
88056 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
88057 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
8633688058 } },
8633788059 }, .{
8633888060 .required_features = .{ .sse, null, null, null },
8633988061 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },
8634088062 .dst_constraints = .{ .{ .scalar_float = .{ .of = .dword, .is = .dword } }, .any },
8634188063 .patterns = &.{
86342 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },
88064 .{ .src = .{ .{ .to_param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .none, .none } },
8634388065 },
8634488066 .call_frame = .{ .alignment = .@"16" },
8634588067 .extra_temps = .{
......@@ -86369,8 +88091,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8636988091 },
8637088092 .call_frame = .{ .alignment = .@"16" },
8637188093 .extra_temps = .{
86372 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
86373 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
88094 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
88095 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
8637488096 .{ .type = .usize, .kind = .{ .extern_func = "__trunctfsf2" } },
8637588097 .unused,
8637688098 .unused,
......@@ -86384,12 +88106,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8638488106 .dst_temps = .{ .mem, .unused },
8638588107 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
8638688108 .each = .{ .once = &.{
86387 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
86388 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memsia(.src0x, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
88109 .{ ._, ._, .mov, .tmp0d, .sia(-4, .dst0, .add_unaligned_size), ._, ._ },
88110 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memsi(.src0x, .@"4", .tmp0), ._, ._ },
8638988111 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
86390 .{ ._, .v_ss, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
86391 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
86392 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
88112 .{ ._, .v_ss, .mov, .memi(.dst0d, .tmp0), .tmp1x, ._, ._ },
88113 .{ ._, ._, .sub, .tmp0d, .si(4), ._, ._ },
88114 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
8639388115 } },
8639488116 }, .{
8639588117 .required_features = .{ .sse2, null, null, null },
......@@ -86400,8 +88122,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8640088122 },
8640188123 .call_frame = .{ .alignment = .@"16" },
8640288124 .extra_temps = .{
86403 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
86404 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
88125 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
88126 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
8640588127 .{ .type = .usize, .kind = .{ .extern_func = "__trunctfsf2" } },
8640688128 .unused,
8640788129 .unused,
......@@ -86415,12 +88137,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8641588137 .dst_temps = .{ .mem, .unused },
8641688138 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
8641788139 .each = .{ .once = &.{
86418 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
86419 .{ .@"0:", ._dqa, .mov, .tmp1x, .memsia(.src0x, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
88140 .{ ._, ._, .mov, .tmp0d, .sia(-4, .dst0, .add_unaligned_size), ._, ._ },
88141 .{ .@"0:", ._dqa, .mov, .tmp1x, .memsi(.src0x, .@"4", .tmp0), ._, ._ },
8642088142 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
86421 .{ ._, ._ss, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
86422 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
86423 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
88143 .{ ._, ._ss, .mov, .memi(.dst0d, .tmp0), .tmp1x, ._, ._ },
88144 .{ ._, ._, .sub, .tmp0d, .si(4), ._, ._ },
88145 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
8642488146 } },
8642588147 }, .{
8642688148 .required_features = .{ .sse, null, null, null },
......@@ -86431,8 +88153,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8643188153 },
8643288154 .call_frame = .{ .alignment = .@"16" },
8643388155 .extra_temps = .{
86434 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
86435 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
88156 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
88157 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
8643688158 .{ .type = .usize, .kind = .{ .extern_func = "__trunctfsf2" } },
8643788159 .unused,
8643888160 .unused,
......@@ -86446,19 +88168,19 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8644688168 .dst_temps = .{ .mem, .unused },
8644788169 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
8644888170 .each = .{ .once = &.{
86449 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
86450 .{ .@"0:", ._ps, .mova, .tmp1x, .memsia(.src0x, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
88171 .{ ._, ._, .mov, .tmp0d, .sia(-4, .dst0, .add_unaligned_size), ._, ._ },
88172 .{ .@"0:", ._ps, .mova, .tmp1x, .memsi(.src0x, .@"4", .tmp0), ._, ._ },
8645188173 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
86452 .{ ._, ._ss, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
86453 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
86454 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
88174 .{ ._, ._ss, .mov, .memi(.dst0d, .tmp0), .tmp1x, ._, ._ },
88175 .{ ._, ._, .sub, .tmp0d, .si(4), ._, ._ },
88176 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
8645588177 } },
8645688178 }, .{
8645788179 .required_features = .{ .sse, null, null, null },
8645888180 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },
8645988181 .dst_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .qword } }, .any },
8646088182 .patterns = &.{
86461 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },
88183 .{ .src = .{ .{ .to_param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .none, .none } },
8646288184 },
8646388185 .call_frame = .{ .alignment = .@"16" },
8646488186 .extra_temps = .{
......@@ -86488,8 +88210,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8648888210 },
8648988211 .call_frame = .{ .alignment = .@"16" },
8649088212 .extra_temps = .{
86491 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
86492 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
88213 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
88214 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
8649388215 .{ .type = .usize, .kind = .{ .extern_func = "__trunctfdf2" } },
8649488216 .unused,
8649588217 .unused,
......@@ -86503,12 +88225,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8650388225 .dst_temps = .{ .mem, .unused },
8650488226 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
8650588227 .each = .{ .once = &.{
86506 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
86507 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memsia(.src0x, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
88228 .{ ._, ._, .mov, .tmp0d, .sia(-8, .dst0, .add_unaligned_size), ._, ._ },
88229 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memsi(.src0x, .@"2", .tmp0), ._, ._ },
8650888230 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
86509 .{ ._, .v_sd, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
86510 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
86511 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
88231 .{ ._, .v_sd, .mov, .memi(.dst0q, .tmp0), .tmp1x, ._, ._ },
88232 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
88233 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
8651288234 } },
8651388235 }, .{
8651488236 .required_features = .{ .sse2, null, null, null },
......@@ -86519,8 +88241,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8651988241 },
8652088242 .call_frame = .{ .alignment = .@"16" },
8652188243 .extra_temps = .{
86522 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
86523 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
88244 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
88245 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
8652488246 .{ .type = .usize, .kind = .{ .extern_func = "__trunctfdf2" } },
8652588247 .unused,
8652688248 .unused,
......@@ -86534,12 +88256,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8653488256 .dst_temps = .{ .mem, .unused },
8653588257 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
8653688258 .each = .{ .once = &.{
86537 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
86538 .{ .@"0:", ._dqa, .mov, .tmp1x, .memsia(.src0x, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
88259 .{ ._, ._, .mov, .tmp0d, .sia(-8, .dst0, .add_unaligned_size), ._, ._ },
88260 .{ .@"0:", ._dqa, .mov, .tmp1x, .memsi(.src0x, .@"2", .tmp0), ._, ._ },
8653988261 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
86540 .{ ._, ._sd, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
86541 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
86542 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
88262 .{ ._, ._sd, .mov, .memi(.dst0q, .tmp0), .tmp1x, ._, ._ },
88263 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
88264 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
8654388265 } },
8654488266 }, .{
8654588267 .required_features = .{ .sse, null, null, null },
......@@ -86550,8 +88272,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8655088272 },
8655188273 .call_frame = .{ .alignment = .@"16" },
8655288274 .extra_temps = .{
86553 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
86554 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
88275 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
88276 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
8655588277 .{ .type = .usize, .kind = .{ .extern_func = "__trunctfdf2" } },
8655688278 .unused,
8655788279 .unused,
......@@ -86565,19 +88287,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8656588287 .dst_temps = .{ .mem, .unused },
8656688288 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
8656788289 .each = .{ .once = &.{
86568 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
86569 .{ .@"0:", ._ps, .mova, .tmp1x, .memsia(.src0x, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
88290 .{ ._, ._, .mov, .tmp0d, .sia(-8, .dst0, .add_unaligned_size), ._, ._ },
88291 .{ .@"0:", ._ps, .mova, .tmp1x, .memsi(.src0x, .@"2", .tmp0), ._, ._ },
8657088292 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
86571 .{ ._, ._ps, .movl, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
86572 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
86573 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
88293 .{ ._, ._ps, .movl, .memi(.dst0q, .tmp0), .tmp1x, ._, ._ },
88294 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
88295 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
8657488296 } },
8657588297 }, .{
88298 .required_cc_abi = .sysv64,
8657688299 .required_features = .{ .sse, .x87, null, null },
8657788300 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },
8657888301 .dst_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },
8657988302 .patterns = &.{
86580 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },
88303 .{ .src = .{ .{ .to_param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .none, .none } },
8658188304 },
8658288305 .call_frame = .{ .alignment = .@"16" },
8658388306 .extra_temps = .{
......@@ -86599,6 +88322,35 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8659988322 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
8660088323 } },
8660188324 }, .{
88325 .required_cc_abi = .win64,
88326 .required_features = .{ .sse, null, null, null },
88327 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },
88328 .dst_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },
88329 .patterns = &.{
88330 .{ .src = .{ .{ .to_reg = .xmm1 }, .none, .none } },
88331 },
88332 .call_frame = .{ .alignment = .@"16" },
88333 .extra_temps = .{
88334 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
88335 .{ .type = .usize, .kind = .{ .extern_func = "__trunctfxf2" } },
88336 .unused,
88337 .unused,
88338 .unused,
88339 .unused,
88340 .unused,
88341 .unused,
88342 .unused,
88343 .unused,
88344 .unused,
88345 },
88346 .dst_temps = .{ .mem, .unused },
88347 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
88348 .each = .{ .once = &.{
88349 .{ ._, ._, .lea, .tmp0p, .mem(.dst0), ._, ._ },
88350 .{ ._, ._, .call, .tmp1d, ._, ._, ._ },
88351 } },
88352 }, .{
88353 .required_cc_abi = .sysv64,
8660288354 .required_features = .{ .avx, null, null, null },
8660388355 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },
8660488356 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },
......@@ -86607,8 +88359,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8660788359 },
8660888360 .call_frame = .{ .alignment = .@"16" },
8660988361 .extra_temps = .{
86610 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
86611 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
88362 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
88363 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
8661288364 .{ .type = .usize, .kind = .{ .extern_func = "__trunctfxf2" } },
8661388365 .unused,
8661488366 .unused,
......@@ -86622,15 +88374,48 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8662288374 .dst_temps = .{ .mem, .unused },
8662388375 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
8662488376 .each = .{ .once = &.{
86625 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
86626 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
88377 .{ ._, ._, .mov, .tmp0d, .sia(-16, .dst0, .add_unaligned_size), ._, ._ },
88378 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memi(.src0x, .tmp0), ._, ._ },
8662788379 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
8662888380 .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ },
86629 .{ ._, .f_p, .st, .memia(.dst0t, .tmp0, .add_unaligned_size), ._, ._, ._ },
86630 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
86631 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
88381 .{ ._, .f_p, .st, .memi(.dst0t, .tmp0), ._, ._, ._ },
88382 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
88383 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
8663288384 } },
8663388385 }, .{
88386 .required_cc_abi = .win64,
88387 .required_features = .{ .avx, null, null, null },
88388 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },
88389 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },
88390 .patterns = &.{
88391 .{ .src = .{ .to_mem, .none, .none } },
88392 },
88393 .call_frame = .{ .alignment = .@"16" },
88394 .extra_temps = .{
88395 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
88396 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
88397 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
88398 .{ .type = .usize, .kind = .{ .extern_func = "__trunctfxf2" } },
88399 .unused,
88400 .unused,
88401 .unused,
88402 .unused,
88403 .unused,
88404 .unused,
88405 .unused,
88406 },
88407 .dst_temps = .{ .mem, .unused },
88408 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
88409 .each = .{ .once = &.{
88410 .{ ._, ._, .mov, .tmp0d, .sia(-16, .dst0, .add_unaligned_size), ._, ._ },
88411 .{ .@"0:", ._, .lea, .tmp1p, .memi(.dst0, .tmp0), ._, ._ },
88412 .{ ._, .v_dqa, .mov, .tmp2x, .memi(.src0x, .tmp0), ._, ._ },
88413 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
88414 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
88415 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
88416 } },
88417 }, .{
88418 .required_cc_abi = .sysv64,
8663488419 .required_features = .{ .sse2, null, null, null },
8663588420 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },
8663688421 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },
......@@ -86639,8 +88424,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8663988424 },
8664088425 .call_frame = .{ .alignment = .@"16" },
8664188426 .extra_temps = .{
86642 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
86643 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
88427 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
88428 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
8664488429 .{ .type = .usize, .kind = .{ .extern_func = "__trunctfxf2" } },
8664588430 .unused,
8664688431 .unused,
......@@ -86654,15 +88439,48 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8665488439 .dst_temps = .{ .mem, .unused },
8665588440 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
8665688441 .each = .{ .once = &.{
86657 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
86658 .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
88442 .{ ._, ._, .mov, .tmp0d, .sia(-16, .dst0, .add_unaligned_size), ._, ._ },
88443 .{ .@"0:", ._dqa, .mov, .tmp1x, .memi(.src0x, .tmp0), ._, ._ },
8665988444 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
8666088445 .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ },
86661 .{ ._, .f_p, .st, .memia(.dst0t, .tmp0, .add_unaligned_size), ._, ._, ._ },
86662 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
86663 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
88446 .{ ._, .f_p, .st, .memi(.dst0t, .tmp0), ._, ._, ._ },
88447 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
88448 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
88449 } },
88450 }, .{
88451 .required_cc_abi = .win64,
88452 .required_features = .{ .sse2, null, null, null },
88453 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },
88454 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },
88455 .patterns = &.{
88456 .{ .src = .{ .to_mem, .none, .none } },
88457 },
88458 .call_frame = .{ .alignment = .@"16" },
88459 .extra_temps = .{
88460 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
88461 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
88462 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
88463 .{ .type = .usize, .kind = .{ .extern_func = "__trunctfxf2" } },
88464 .unused,
88465 .unused,
88466 .unused,
88467 .unused,
88468 .unused,
88469 .unused,
88470 .unused,
88471 },
88472 .dst_temps = .{ .mem, .unused },
88473 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
88474 .each = .{ .once = &.{
88475 .{ ._, ._, .mov, .tmp0d, .sia(-16, .dst0, .add_unaligned_size), ._, ._ },
88476 .{ .@"0:", ._, .lea, .tmp1p, .memi(.dst0, .tmp0), ._, ._ },
88477 .{ ._, ._dqa, .mov, .tmp2x, .memi(.src0x, .tmp0), ._, ._ },
88478 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
88479 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
88480 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
8666488481 } },
8666588482 }, .{
88483 .required_cc_abi = .sysv64,
8666688484 .required_features = .{ .sse, null, null, null },
8666788485 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },
8666888486 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },
......@@ -86671,8 +88489,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8667188489 },
8667288490 .call_frame = .{ .alignment = .@"16" },
8667388491 .extra_temps = .{
86674 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
86675 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
88492 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
88493 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
8667688494 .{ .type = .usize, .kind = .{ .extern_func = "__trunctfxf2" } },
8667788495 .unused,
8667888496 .unused,
......@@ -86686,13 +88504,45 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8668688504 .dst_temps = .{ .mem, .unused },
8668788505 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
8668888506 .each = .{ .once = &.{
86689 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
86690 .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
88507 .{ ._, ._, .mov, .tmp0d, .sa(.dst0, .add_unaligned_size), ._, ._ },
88508 .{ .@"0:", ._ps, .mova, .tmp1x, .memi(.src0x, .tmp0), ._, ._ },
8669188509 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
8669288510 .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ },
86693 .{ ._, .f_p, .st, .memia(.dst0t, .tmp0, .add_unaligned_size), ._, ._, ._ },
86694 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
86695 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
88511 .{ ._, .f_p, .st, .memi(.dst0t, .tmp0), ._, ._, ._ },
88512 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
88513 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
88514 } },
88515 }, .{
88516 .required_cc_abi = .win64,
88517 .required_features = .{ .sse, null, null, null },
88518 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },
88519 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },
88520 .patterns = &.{
88521 .{ .src = .{ .to_mem, .none, .none } },
88522 },
88523 .call_frame = .{ .alignment = .@"16" },
88524 .extra_temps = .{
88525 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
88526 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
88527 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
88528 .{ .type = .usize, .kind = .{ .extern_func = "__trunctfxf2" } },
88529 .unused,
88530 .unused,
88531 .unused,
88532 .unused,
88533 .unused,
88534 .unused,
88535 .unused,
88536 },
88537 .dst_temps = .{ .mem, .unused },
88538 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
88539 .each = .{ .once = &.{
88540 .{ ._, ._, .mov, .tmp0d, .sa(.dst0, .add_unaligned_size), ._, ._ },
88541 .{ .@"0:", ._, .lea, .tmp1p, .memi(.dst0, .tmp0), ._, ._ },
88542 .{ ._, ._ps, .mova, .tmp2x, .memi(.src0x, .tmp0), ._, ._ },
88543 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
88544 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
88545 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
8669688546 } },
8669788547 } }) catch |err| switch (err) {
8669888548 error.SelectFailed => return cg.fail("failed to select {s} {} {} {}", .{
......@@ -86705,7 +88555,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8670588555 };
8670688556 try res[0].finish(inst, &.{ty_op.operand}, &ops, cg);
8670788557 },
86708 .fpext => |air_tag| if (use_old) try cg.airFpext(inst) else {
88558 .fpext => |air_tag| {
8670988559 const ty_op = air_datas[@intFromEnum(inst)].ty_op;
8671088560 var ops = try cg.tempsFromOperands(inst, .{ty_op.operand});
8671188561 var res: [1]Temp = undefined;
......@@ -86749,7 +88599,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8674988599 .src_constraints = .{ .{ .scalar_float = .{ .of = .word, .is = .word } }, .any, .any },
8675088600 .dst_constraints = .{ .{ .scalar_float = .{ .of = .dword, .is = .dword } }, .any },
8675188601 .patterns = &.{
86752 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },
88602 .{ .src = .{ .{ .to_param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .none, .none } },
8675388603 },
8675488604 .call_frame = .{ .alignment = .@"16" },
8675588605 .extra_temps = .{
......@@ -86778,7 +88628,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8677888628 .{ .src = .{ .to_mem, .none, .none } },
8677988629 },
8678088630 .extra_temps = .{
86781 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
88631 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
8678288632 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
8678388633 .unused,
8678488634 .unused,
......@@ -86793,11 +88643,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8679388643 .dst_temps = .{ .mem, .unused },
8679488644 .clobbers = .{ .eflags = true },
8679588645 .each = .{ .once = &.{
86796 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
86797 .{ .@"0:", .v_ps, .cvtph2, .tmp1y, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
86798 .{ ._, .v_ps, .mova, .memsia(.dst0y, .@"2", .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },
86799 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
86800 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
88646 .{ ._, ._, .mov, .tmp0d, .sia(-16, .src0, .add_size), ._, ._ },
88647 .{ .@"0:", .v_ps, .cvtph2, .tmp1y, .memi(.src0x, .tmp0), ._, ._ },
88648 .{ ._, .v_ps, .mova, .memsi(.dst0y, .@"2", .tmp0), .tmp1y, ._, ._ },
88649 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
88650 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
8680188651 } },
8680288652 }, .{
8680388653 .required_features = .{ .avx, null, null, null },
......@@ -86808,8 +88658,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8680888658 },
8680988659 .call_frame = .{ .alignment = .@"16" },
8681088660 .extra_temps = .{
86811 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
86812 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
88661 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
88662 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
8681388663 .{ .type = .usize, .kind = .{ .extern_func = "__extendhfsf2" } },
8681488664 .unused,
8681588665 .unused,
......@@ -86823,13 +88673,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8682388673 .dst_temps = .{ .mem, .unused },
8682488674 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
8682588675 .each = .{ .once = &.{
86826 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
88676 .{ ._, ._, .mov, .tmp0d, .sia(-2, .src0, .add_unaligned_size), ._, ._ },
8682788677 .{ .@"0:", .vp_, .xor, .tmp1x, .tmp1x, .tmp1x, ._ },
86828 .{ ._, .vp_w, .insr, .tmp1x, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0) },
88678 .{ ._, .vp_w, .insr, .tmp1x, .tmp1x, .memi(.src0w, .tmp0), .ui(0) },
8682988679 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
86830 .{ ._, .v_ss, .mov, .memsia(.dst0d, .@"2", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
86831 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
86832 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
88680 .{ ._, .v_ss, .mov, .memsi(.dst0d, .@"2", .tmp0), .tmp1x, ._, ._ },
88681 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
88682 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
8683388683 } },
8683488684 }, .{
8683588685 .required_features = .{ .sse2, null, null, null },
......@@ -86840,8 +88690,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8684088690 },
8684188691 .call_frame = .{ .alignment = .@"16" },
8684288692 .extra_temps = .{
86843 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
86844 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
88693 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
88694 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
8684588695 .{ .type = .usize, .kind = .{ .extern_func = "__extendhfsf2" } },
8684688696 .unused,
8684788697 .unused,
......@@ -86855,13 +88705,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8685588705 .dst_temps = .{ .mem, .unused },
8685688706 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
8685788707 .each = .{ .once = &.{
86858 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
88708 .{ ._, ._, .mov, .tmp0d, .sia(-2, .src0, .add_unaligned_size), ._, ._ },
8685988709 .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ },
86860 .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0), ._ },
88710 .{ ._, .p_w, .insr, .tmp1x, .memi(.src0w, .tmp0), .ui(0), ._ },
8686188711 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
86862 .{ ._, ._ss, .mov, .memsia(.dst0d, .@"2", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
86863 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
86864 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
88712 .{ ._, ._ss, .mov, .memsi(.dst0d, .@"2", .tmp0), .tmp1x, ._, ._ },
88713 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
88714 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
8686588715 } },
8686688716 }, .{
8686788717 .required_features = .{ .sse, null, null, null },
......@@ -86872,10 +88722,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8687288722 },
8687388723 .call_frame = .{ .alignment = .@"16" },
8687488724 .extra_temps = .{
86875 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
88725 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
8687688726 .{ .type = .f16, .kind = .{ .reg = .ax } },
8687788727 .{ .type = .f32, .kind = .mem },
86878 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
88728 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
8687988729 .{ .type = .usize, .kind = .{ .extern_func = "__extendhfsf2" } },
8688088730 .unused,
8688188731 .unused,
......@@ -86887,14 +88737,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8688788737 .dst_temps = .{ .mem, .unused },
8688888738 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
8688988739 .each = .{ .once = &.{
86890 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
86891 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
88740 .{ ._, ._, .mov, .tmp0d, .sia(-2, .src0, .add_unaligned_size), ._, ._ },
88741 .{ .@"0:", ._, .movzx, .tmp1d, .memi(.src0w, .tmp0), ._, ._ },
8689288742 .{ ._, ._, .mov, .mem(.tmp2d), .tmp1d, ._, ._ },
8689388743 .{ ._, ._ss, .mov, .tmp3x, .mem(.tmp2d), ._, ._ },
8689488744 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
86895 .{ ._, ._ss, .mov, .memsia(.dst0d, .@"2", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
86896 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
86897 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
88745 .{ ._, ._ss, .mov, .memsi(.dst0d, .@"2", .tmp0), .tmp3x, ._, ._ },
88746 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
88747 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
8689888748 } },
8689988749 }, .{
8690088750 .required_features = .{ .f16c, null, null, null },
......@@ -86969,7 +88819,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8696988819 .src_constraints = .{ .{ .scalar_float = .{ .of = .word, .is = .word } }, .any, .any },
8697088820 .dst_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .qword } }, .any },
8697188821 .patterns = &.{
86972 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },
88822 .{ .src = .{ .{ .to_param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .none, .none } },
8697388823 },
8697488824 .call_frame = .{ .alignment = .@"16" },
8697588825 .extra_temps = .{
......@@ -86998,7 +88848,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8699888848 .{ .src = .{ .to_mem, .none, .none } },
8699988849 },
8700088850 .extra_temps = .{
87001 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
88851 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
8700288852 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
8700388853 .{ .type = .vector_4_f64, .kind = .{ .rc = .sse } },
8700488854 .unused,
......@@ -87013,15 +88863,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8701388863 .dst_temps = .{ .mem, .unused },
8701488864 .clobbers = .{ .eflags = true },
8701588865 .each = .{ .once = &.{
87016 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
87017 .{ .@"0:", .v_ps, .cvtph2, .tmp1y, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
88866 .{ ._, ._, .mov, .tmp0d, .sia(-16, .src0, .add_size), ._, ._ },
88867 .{ .@"0:", .v_ps, .cvtph2, .tmp1y, .memi(.src0x, .tmp0), ._, ._ },
8701888868 .{ ._, .v_pd, .cvtps2, .tmp2y, .tmp1x, ._, ._ },
8701988869 .{ ._, .v_f128, .extract, .tmp1x, .tmp1y, .ui(1), ._ },
87020 .{ ._, .v_pd, .mova, .memsia(.dst0y, .@"4", .tmp0, .add_unaligned_size), .tmp2y, ._, ._ },
88870 .{ ._, .v_pd, .mova, .memsi(.dst0y, .@"4", .tmp0), .tmp2y, ._, ._ },
8702188871 .{ ._, .v_pd, .cvtps2, .tmp2y, .tmp1x, ._, ._ },
87022 .{ ._, .v_pd, .mova, .memsiad(.dst0y, .@"4", .tmp0, .add_unaligned_size, 32), .tmp2y, ._, ._ },
87023 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
87024 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
88872 .{ ._, .v_pd, .mova, .memsid(.dst0y, .@"4", .tmp0, 32), .tmp2y, ._, ._ },
88873 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
88874 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
8702588875 } },
8702688876 }, .{
8702788877 .required_features = .{ .avx, null, null, null },
......@@ -87032,8 +88882,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8703288882 },
8703388883 .call_frame = .{ .alignment = .@"16" },
8703488884 .extra_temps = .{
87035 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
87036 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
88885 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
88886 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
8703788887 .{ .type = .usize, .kind = .{ .extern_func = "__extendhfdf2" } },
8703888888 .unused,
8703988889 .unused,
......@@ -87047,13 +88897,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8704788897 .dst_temps = .{ .mem, .unused },
8704888898 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
8704988899 .each = .{ .once = &.{
87050 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
88900 .{ ._, ._, .mov, .tmp0d, .sia(-2, .src0, .add_unaligned_size), ._, ._ },
8705188901 .{ .@"0:", .vp_, .xor, .tmp1x, .tmp1x, .tmp1x, ._ },
87052 .{ ._, .vp_w, .insr, .tmp1x, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0) },
88902 .{ ._, .vp_w, .insr, .tmp1x, .tmp1x, .memi(.src0w, .tmp0), .ui(0) },
8705388903 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
87054 .{ ._, .v_sd, .mov, .memsia(.dst0q, .@"4", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
87055 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
87056 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
88904 .{ ._, .v_sd, .mov, .memsi(.dst0q, .@"4", .tmp0), .tmp1x, ._, ._ },
88905 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
88906 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
8705788907 } },
8705888908 }, .{
8705988909 .required_features = .{ .sse2, null, null, null },
......@@ -87064,8 +88914,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8706488914 },
8706588915 .call_frame = .{ .alignment = .@"16" },
8706688916 .extra_temps = .{
87067 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
87068 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
88917 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
88918 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
8706988919 .{ .type = .usize, .kind = .{ .extern_func = "__extendhfdf2" } },
8707088920 .unused,
8707188921 .unused,
......@@ -87079,13 +88929,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8707988929 .dst_temps = .{ .mem, .unused },
8708088930 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
8708188931 .each = .{ .once = &.{
87082 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
88932 .{ ._, ._, .mov, .tmp0d, .sia(-2, .src0, .add_unaligned_size), ._, ._ },
8708388933 .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ },
87084 .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0), ._ },
88934 .{ ._, .p_w, .insr, .tmp1x, .memi(.src0w, .tmp0), .ui(0), ._ },
8708588935 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
87086 .{ ._, ._sd, .mov, .memsia(.dst0q, .@"4", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
87087 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
87088 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
88936 .{ ._, ._sd, .mov, .memsi(.dst0q, .@"4", .tmp0), .tmp1x, ._, ._ },
88937 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
88938 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
8708988939 } },
8709088940 }, .{
8709188941 .required_features = .{ .sse, null, null, null },
......@@ -87096,10 +88946,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8709688946 },
8709788947 .call_frame = .{ .alignment = .@"16" },
8709888948 .extra_temps = .{
87099 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
88949 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
8710088950 .{ .type = .f16, .kind = .{ .reg = .ax } },
8710188951 .{ .type = .f32, .kind = .mem },
87102 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
88952 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
8710388953 .{ .type = .usize, .kind = .{ .extern_func = "__extendhfdf2" } },
8710488954 .unused,
8710588955 .unused,
......@@ -87111,14 +88961,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8711188961 .dst_temps = .{ .mem, .unused },
8711288962 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
8711388963 .each = .{ .once = &.{
87114 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
87115 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
88964 .{ ._, ._, .mov, .tmp0d, .sia(-2, .src0, .add_unaligned_size), ._, ._ },
88965 .{ .@"0:", ._, .movzx, .tmp1d, .memi(.src0w, .tmp0), ._, ._ },
8711688966 .{ ._, ._, .mov, .mem(.tmp2d), .tmp1d, ._, ._ },
8711788967 .{ ._, ._ss, .mov, .tmp3x, .mem(.tmp2d), ._, ._ },
8711888968 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
87119 .{ ._, ._ps, .movl, .memsia(.dst0q, .@"4", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
87120 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
87121 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
88969 .{ ._, ._ps, .movl, .memsi(.dst0q, .@"4", .tmp0), .tmp3x, ._, ._ },
88970 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
88971 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
8712288972 } },
8712388973 }, .{
8712488974 .required_features = .{ .f16c, .x87, null, null },
......@@ -87148,11 +88998,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8714888998 .{ ._, .f_p, .st, .dst0t, ._, ._, ._ },
8714988999 } },
8715089000 }, .{
89001 .required_cc_abi = .sysv64,
8715189002 .required_features = .{ .sse, .x87, null, null },
8715289003 .src_constraints = .{ .{ .scalar_float = .{ .of = .word, .is = .word } }, .any, .any },
8715389004 .dst_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },
8715489005 .patterns = &.{
87155 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },
89006 .{ .src = .{ .{ .to_param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .none, .none } },
8715689007 },
8715789008 .call_frame = .{ .alignment = .@"16" },
8715889009 .extra_temps = .{
......@@ -87174,6 +89025,35 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8717489025 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
8717589026 } },
8717689027 }, .{
89028 .required_cc_abi = .win64,
89029 .required_features = .{ .sse, null, null, null },
89030 .src_constraints = .{ .{ .scalar_float = .{ .of = .word, .is = .word } }, .any, .any },
89031 .dst_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },
89032 .patterns = &.{
89033 .{ .src = .{ .{ .to_reg = .xmm1 }, .none, .none } },
89034 },
89035 .call_frame = .{ .alignment = .@"16" },
89036 .extra_temps = .{
89037 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
89038 .{ .type = .usize, .kind = .{ .extern_func = "__extendhfxf2" } },
89039 .unused,
89040 .unused,
89041 .unused,
89042 .unused,
89043 .unused,
89044 .unused,
89045 .unused,
89046 .unused,
89047 .unused,
89048 },
89049 .dst_temps = .{ .mem, .unused },
89050 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
89051 .each = .{ .once = &.{
89052 .{ ._, ._, .lea, .tmp0p, .mem(.dst0), ._, ._ },
89053 .{ ._, ._, .call, .tmp1d, ._, ._, ._ },
89054 } },
89055 }, .{
89056 .required_cc_abi = .sysv64,
8717789057 .required_features = .{ .avx, null, null, null },
8717889058 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any },
8717989059 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },
......@@ -87182,8 +89062,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8718289062 },
8718389063 .call_frame = .{ .alignment = .@"16" },
8718489064 .extra_temps = .{
87185 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
87186 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
89065 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
89066 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
8718789067 .{ .type = .usize, .kind = .{ .extern_func = "__extendhfxf2" } },
8718889068 .unused,
8718989069 .unused,
......@@ -87197,16 +89077,50 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8719789077 .dst_temps = .{ .mem, .unused },
8719889078 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
8719989079 .each = .{ .once = &.{
87200 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
89080 .{ ._, ._, .mov, .tmp0d, .sia(-2, .src0, .add_unaligned_size), ._, ._ },
8720189081 .{ .@"0:", .vp_, .xor, .tmp1x, .tmp1x, .tmp1x, ._ },
87202 .{ ._, .vp_w, .insr, .tmp1x, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0) },
89082 .{ ._, .vp_w, .insr, .tmp1x, .tmp1x, .memi(.src0w, .tmp0), .ui(0) },
8720389083 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
8720489084 .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ },
87205 .{ ._, .f_p, .st, .memsia(.dst0t, .@"8", .tmp0, .add_unaligned_size), ._, ._, ._ },
87206 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
87207 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
89085 .{ ._, .f_p, .st, .memsi(.dst0t, .@"8", .tmp0), ._, ._, ._ },
89086 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
89087 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
8720889088 } },
8720989089 }, .{
89090 .required_cc_abi = .win64,
89091 .required_features = .{ .avx, null, null, null },
89092 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any },
89093 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },
89094 .patterns = &.{
89095 .{ .src = .{ .to_mem, .none, .none } },
89096 },
89097 .call_frame = .{ .alignment = .@"16" },
89098 .extra_temps = .{
89099 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
89100 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
89101 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
89102 .{ .type = .usize, .kind = .{ .extern_func = "__extendhfxf2" } },
89103 .unused,
89104 .unused,
89105 .unused,
89106 .unused,
89107 .unused,
89108 .unused,
89109 .unused,
89110 },
89111 .dst_temps = .{ .mem, .unused },
89112 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
89113 .each = .{ .once = &.{
89114 .{ ._, ._, .mov, .tmp0d, .sia(-2, .src0, .add_unaligned_size), ._, ._ },
89115 .{ .@"0:", ._, .lea, .tmp1p, .memsi(.dst0, .@"8", .tmp0), ._, ._ },
89116 .{ ._, .vp_, .xor, .tmp2x, .tmp2x, .tmp2x, ._ },
89117 .{ ._, .vp_w, .insr, .tmp2x, .tmp2x, .memi(.src0w, .tmp0), .ui(0) },
89118 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
89119 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
89120 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
89121 } },
89122 }, .{
89123 .required_cc_abi = .sysv64,
8721089124 .required_features = .{ .sse2, null, null, null },
8721189125 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any },
8721289126 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },
......@@ -87215,8 +89129,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8721589129 },
8721689130 .call_frame = .{ .alignment = .@"16" },
8721789131 .extra_temps = .{
87218 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
87219 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
89132 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
89133 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
8722089134 .{ .type = .usize, .kind = .{ .extern_func = "__extendhfxf2" } },
8722189135 .unused,
8722289136 .unused,
......@@ -87230,16 +89144,50 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8723089144 .dst_temps = .{ .mem, .unused },
8723189145 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
8723289146 .each = .{ .once = &.{
87233 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
89147 .{ ._, ._, .mov, .tmp0d, .sia(-2, .src0, .add_unaligned_size), ._, ._ },
8723489148 .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ },
87235 .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0), ._ },
89149 .{ ._, .p_w, .insr, .tmp1x, .memi(.src0w, .tmp0), .ui(0), ._ },
8723689150 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
8723789151 .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ },
87238 .{ ._, .f_p, .st, .memsia(.dst0t, .@"8", .tmp0, .add_unaligned_size), ._, ._, ._ },
87239 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
87240 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
89152 .{ ._, .f_p, .st, .memsi(.dst0t, .@"8", .tmp0), ._, ._, ._ },
89153 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
89154 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
8724189155 } },
8724289156 }, .{
89157 .required_cc_abi = .win64,
89158 .required_features = .{ .sse2, null, null, null },
89159 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any },
89160 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },
89161 .patterns = &.{
89162 .{ .src = .{ .to_mem, .none, .none } },
89163 },
89164 .call_frame = .{ .alignment = .@"16" },
89165 .extra_temps = .{
89166 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
89167 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
89168 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
89169 .{ .type = .usize, .kind = .{ .extern_func = "__extendhfxf2" } },
89170 .unused,
89171 .unused,
89172 .unused,
89173 .unused,
89174 .unused,
89175 .unused,
89176 .unused,
89177 },
89178 .dst_temps = .{ .mem, .unused },
89179 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
89180 .each = .{ .once = &.{
89181 .{ ._, ._, .mov, .tmp0d, .sia(-2, .src0, .add_unaligned_size), ._, ._ },
89182 .{ .@"0:", ._, .lea, .tmp1p, .memsi(.dst0, .@"8", .tmp0), ._, ._ },
89183 .{ ._, .p_, .xor, .tmp2x, .tmp2x, ._, ._ },
89184 .{ ._, .p_w, .insr, .tmp2x, .memi(.src0w, .tmp0), .ui(0), ._ },
89185 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
89186 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
89187 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
89188 } },
89189 }, .{
89190 .required_cc_abi = .sysv64,
8724389191 .required_features = .{ .sse, null, null, null },
8724489192 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any },
8724589193 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },
......@@ -87248,10 +89196,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8724889196 },
8724989197 .call_frame = .{ .alignment = .@"16" },
8725089198 .extra_temps = .{
87251 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
89199 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
8725289200 .{ .type = .f16, .kind = .{ .reg = .ax } },
8725389201 .{ .type = .f32, .kind = .mem },
87254 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
89202 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
8725589203 .{ .type = .usize, .kind = .{ .extern_func = "__extendhfxf2" } },
8725689204 .unused,
8725789205 .unused,
......@@ -87263,22 +89211,56 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8726389211 .dst_temps = .{ .mem, .unused },
8726489212 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
8726589213 .each = .{ .once = &.{
87266 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
87267 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
89214 .{ ._, ._, .mov, .tmp0d, .sia(-2, .src0, .add_unaligned_size), ._, ._ },
89215 .{ .@"0:", ._, .movzx, .tmp1d, .memi(.src0w, .tmp0), ._, ._ },
8726889216 .{ ._, ._, .mov, .mem(.tmp2d), .tmp1d, ._, ._ },
8726989217 .{ ._, ._ss, .mov, .tmp3x, .mem(.tmp2d), ._, ._ },
8727089218 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
8727189219 .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ },
87272 .{ ._, .f_p, .st, .memsia(.dst0t, .@"8", .tmp0, .add_unaligned_size), ._, ._, ._ },
87273 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
87274 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
89220 .{ ._, .f_p, .st, .memsi(.dst0t, .@"8", .tmp0), ._, ._, ._ },
89221 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
89222 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
89223 } },
89224 }, .{
89225 .required_cc_abi = .win64,
89226 .required_features = .{ .sse, null, null, null },
89227 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any },
89228 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },
89229 .patterns = &.{
89230 .{ .src = .{ .to_mem, .none, .none } },
89231 },
89232 .call_frame = .{ .alignment = .@"16" },
89233 .extra_temps = .{
89234 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
89235 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
89236 .{ .type = .f16, .kind = .{ .reg = .ax } },
89237 .{ .type = .f32, .kind = .mem },
89238 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
89239 .{ .type = .usize, .kind = .{ .extern_func = "__extendhfxf2" } },
89240 .unused,
89241 .unused,
89242 .unused,
89243 .unused,
89244 .unused,
89245 },
89246 .dst_temps = .{ .mem, .unused },
89247 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
89248 .each = .{ .once = &.{
89249 .{ ._, ._, .mov, .tmp0d, .sia(-2, .src0, .add_unaligned_size), ._, ._ },
89250 .{ .@"0:", ._, .lea, .tmp1p, .memsi(.dst0, .@"8", .tmp0), ._, ._ },
89251 .{ ._, ._, .movzx, .tmp2d, .memi(.src0w, .tmp0), ._, ._ },
89252 .{ ._, ._, .mov, .mem(.tmp3d), .tmp2d, ._, ._ },
89253 .{ ._, ._ss, .mov, .tmp4x, .mem(.tmp3d), ._, ._ },
89254 .{ ._, ._, .call, .tmp5d, ._, ._, ._ },
89255 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
89256 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
8727589257 } },
8727689258 }, .{
8727789259 .required_features = .{ .sse, null, null, null },
8727889260 .src_constraints = .{ .{ .scalar_float = .{ .of = .word, .is = .word } }, .any, .any },
8727989261 .dst_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .xword } }, .any },
8728089262 .patterns = &.{
87281 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },
89263 .{ .src = .{ .{ .to_param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .none, .none } },
8728289264 },
8728389265 .call_frame = .{ .alignment = .@"16" },
8728489266 .extra_temps = .{
......@@ -87308,8 +89290,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8730889290 },
8730989291 .call_frame = .{ .alignment = .@"16" },
8731089292 .extra_temps = .{
87311 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
87312 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
89293 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
89294 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
8731389295 .{ .type = .usize, .kind = .{ .extern_func = "__extendhftf2" } },
8731489296 .unused,
8731589297 .unused,
......@@ -87323,13 +89305,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8732389305 .dst_temps = .{ .mem, .unused },
8732489306 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
8732589307 .each = .{ .once = &.{
87326 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
89308 .{ ._, ._, .mov, .tmp0d, .sia(-2, .src0, .add_unaligned_size), ._, ._ },
8732789309 .{ .@"0:", .vp_, .xor, .tmp1x, .tmp1x, .tmp1x, ._ },
87328 .{ ._, .vp_w, .insr, .tmp1x, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0) },
89310 .{ ._, .vp_w, .insr, .tmp1x, .tmp1x, .memi(.src0w, .tmp0), .ui(0) },
8732989311 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
87330 .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"8", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
87331 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
87332 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
89312 .{ ._, .v_dqa, .mov, .memsi(.dst0x, .@"8", .tmp0), .tmp1x, ._, ._ },
89313 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
89314 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
8733389315 } },
8733489316 }, .{
8733589317 .required_features = .{ .sse2, null, null, null },
......@@ -87340,8 +89322,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8734089322 },
8734189323 .call_frame = .{ .alignment = .@"16" },
8734289324 .extra_temps = .{
87343 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
87344 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
89325 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
89326 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
8734589327 .{ .type = .usize, .kind = .{ .extern_func = "__extendhftf2" } },
8734689328 .unused,
8734789329 .unused,
......@@ -87355,13 +89337,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8735589337 .dst_temps = .{ .mem, .unused },
8735689338 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
8735789339 .each = .{ .once = &.{
87358 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
89340 .{ ._, ._, .mov, .tmp0d, .sia(-2, .src0, .add_unaligned_size), ._, ._ },
8735989341 .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ },
87360 .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0), ._ },
89342 .{ ._, .p_w, .insr, .tmp1x, .memi(.src0w, .tmp0), .ui(0), ._ },
8736189343 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
87362 .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"8", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
87363 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
87364 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
89344 .{ ._, ._dqa, .mov, .memsi(.dst0x, .@"8", .tmp0), .tmp1x, ._, ._ },
89345 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
89346 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
8736589347 } },
8736689348 }, .{
8736789349 .required_features = .{ .sse, null, null, null },
......@@ -87372,10 +89354,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8737289354 },
8737389355 .call_frame = .{ .alignment = .@"16" },
8737489356 .extra_temps = .{
87375 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
89357 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
8737689358 .{ .type = .f16, .kind = .{ .reg = .ax } },
8737789359 .{ .type = .f32, .kind = .mem },
87378 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
89360 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
8737989361 .{ .type = .usize, .kind = .{ .extern_func = "__extendhftf2" } },
8738089362 .unused,
8738189363 .unused,
......@@ -87387,14 +89369,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8738789369 .dst_temps = .{ .mem, .unused },
8738889370 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
8738989371 .each = .{ .once = &.{
87390 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
87391 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
89372 .{ ._, ._, .mov, .tmp0d, .sia(-2, .src0, .add_unaligned_size), ._, ._ },
89373 .{ .@"0:", ._, .movzx, .tmp1d, .memi(.src0w, .tmp0), ._, ._ },
8739289374 .{ ._, ._, .mov, .mem(.tmp2d), .tmp1d, ._, ._ },
8739389375 .{ ._, ._ss, .mov, .tmp3x, .mem(.tmp2d), ._, ._ },
8739489376 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
87395 .{ ._, ._ps, .mova, .memsia(.dst0x, .@"8", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
87396 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
87397 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
89377 .{ ._, ._ps, .mova, .memsi(.dst0x, .@"8", .tmp0), .tmp3x, ._, ._ },
89378 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
89379 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
8739889380 } },
8739989381 }, .{
8740089382 .required_features = .{ .avx, null, null, null },
......@@ -87501,7 +89483,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8750189483 .{ .src = .{ .to_mem, .none, .none } },
8750289484 },
8750389485 .extra_temps = .{
87504 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
89486 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
8750589487 .{ .type = .vector_4_f64, .kind = .{ .rc = .sse } },
8750689488 .unused,
8750789489 .unused,
......@@ -87516,11 +89498,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8751689498 .dst_temps = .{ .mem, .unused },
8751789499 .clobbers = .{ .eflags = true },
8751889500 .each = .{ .once = &.{
87519 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
87520 .{ .@"0:", .v_pd, .cvtps2, .tmp1y, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
87521 .{ ._, .v_pd, .mova, .memsia(.dst0y, .@"2", .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },
87522 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
87523 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
89501 .{ ._, ._, .mov, .tmp0d, .sia(-16, .src0, .add_size), ._, ._ },
89502 .{ .@"0:", .v_pd, .cvtps2, .tmp1y, .memi(.src0x, .tmp0), ._, ._ },
89503 .{ ._, .v_pd, .mova, .memsi(.dst0y, .@"2", .tmp0), .tmp1y, ._, ._ },
89504 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
89505 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
8752489506 } },
8752589507 }, .{
8752689508 .required_features = .{ .sse2, null, null, null },
......@@ -87530,7 +89512,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8753089512 .{ .src = .{ .to_mem, .none, .none } },
8753189513 },
8753289514 .extra_temps = .{
87533 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
89515 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
8753489516 .{ .type = .vector_2_f64, .kind = .{ .rc = .sse } },
8753589517 .unused,
8753689518 .unused,
......@@ -87545,11 +89527,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8754589527 .dst_temps = .{ .mem, .unused },
8754689528 .clobbers = .{ .eflags = true },
8754789529 .each = .{ .once = &.{
87548 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
87549 .{ .@"0:", ._pd, .cvtps2, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
87550 .{ ._, ._pd, .mova, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
87551 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
87552 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
89530 .{ ._, ._, .mov, .tmp0d, .sia(-8, .src0, .add_size), ._, ._ },
89531 .{ .@"0:", ._pd, .cvtps2, .tmp1x, .memi(.src0q, .tmp0), ._, ._ },
89532 .{ ._, ._pd, .mova, .memsi(.dst0x, .@"2", .tmp0), .tmp1x, ._, ._ },
89533 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
89534 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
8755389535 } },
8755489536 }, .{
8755589537 .required_features = .{ .x87, null, null, null },
......@@ -87559,7 +89541,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8755989541 .{ .src = .{ .to_mem, .none, .none } },
8756089542 },
8756189543 .extra_temps = .{
87562 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
89544 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
8756389545 .{ .type = .f32, .kind = .{ .reg = .st7 } },
8756489546 .unused,
8756589547 .unused,
......@@ -87574,11 +89556,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8757489556 .dst_temps = .{ .mem, .unused },
8757589557 .clobbers = .{ .eflags = true },
8757689558 .each = .{ .once = &.{
87577 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
87578 .{ .@"0:", .f_, .ld, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._, ._ },
87579 .{ ._, .f_p, .st, .memsia(.dst0q, .@"2", .tmp0, .add_unaligned_size), ._, ._, ._ },
87580 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
87581 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
89559 .{ ._, ._, .mov, .tmp0d, .sia(-4, .src0, .add_unaligned_size), ._, ._ },
89560 .{ .@"0:", .f_, .ld, .memi(.src0d, .tmp0), ._, ._, ._ },
89561 .{ ._, .f_p, .st, .memsi(.dst0q, .@"2", .tmp0), ._, ._, ._ },
89562 .{ ._, ._, .sub, .tmp0d, .si(4), ._, ._ },
89563 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
8758289564 } },
8758389565 }, .{
8758489566 .required_features = .{ .x87, null, null, null },
......@@ -87613,7 +89595,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8761389595 .{ .src = .{ .to_mem, .none, .none } },
8761489596 },
8761589597 .extra_temps = .{
87616 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
89598 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
8761789599 .{ .type = .f32, .kind = .{ .reg = .st7 } },
8761889600 .unused,
8761989601 .unused,
......@@ -87628,18 +89610,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8762889610 .dst_temps = .{ .mem, .unused },
8762989611 .clobbers = .{ .eflags = true },
8763089612 .each = .{ .once = &.{
87631 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
87632 .{ .@"0:", .f_, .ld, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._, ._ },
87633 .{ ._, .f_p, .st, .memsia(.dst0t, .@"4", .tmp0, .add_unaligned_size), ._, ._, ._ },
87634 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
87635 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
89613 .{ ._, ._, .mov, .tmp0d, .sia(-4, .src0, .add_unaligned_size), ._, ._ },
89614 .{ .@"0:", .f_, .ld, .memi(.src0d, .tmp0), ._, ._, ._ },
89615 .{ ._, .f_p, .st, .memsi(.dst0t, .@"4", .tmp0), ._, ._, ._ },
89616 .{ ._, ._, .sub, .tmp0d, .si(4), ._, ._ },
89617 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
8763689618 } },
8763789619 }, .{
8763889620 .required_features = .{ .sse, null, null, null },
8763989621 .src_constraints = .{ .{ .scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any },
8764089622 .dst_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .xword } }, .any },
8764189623 .patterns = &.{
87642 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },
89624 .{ .src = .{ .{ .to_param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .none, .none } },
8764389625 },
8764489626 .call_frame = .{ .alignment = .@"16" },
8764589627 .extra_temps = .{
......@@ -87669,8 +89651,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8766989651 },
8767089652 .call_frame = .{ .alignment = .@"16" },
8767189653 .extra_temps = .{
87672 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
87673 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
89654 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
89655 .{ .type = .f32, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
8767489656 .{ .type = .usize, .kind = .{ .extern_func = "__extendsftf2" } },
8767589657 .unused,
8767689658 .unused,
......@@ -87684,12 +89666,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8768489666 .dst_temps = .{ .mem, .unused },
8768589667 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
8768689668 .each = .{ .once = &.{
87687 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
87688 .{ .@"0:", .v_ss, .mov, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
89669 .{ ._, ._, .mov, .tmp0d, .sia(-4, .src0, .add_unaligned_size), ._, ._ },
89670 .{ .@"0:", .v_ss, .mov, .tmp1x, .memi(.src0d, .tmp0), ._, ._ },
8768989671 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
87690 .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"4", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
87691 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
87692 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
89672 .{ ._, .v_dqa, .mov, .memsi(.dst0x, .@"4", .tmp0), .tmp1x, ._, ._ },
89673 .{ ._, ._, .sub, .tmp0d, .si(4), ._, ._ },
89674 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
8769389675 } },
8769489676 }, .{
8769589677 .required_features = .{ .sse2, null, null, null },
......@@ -87700,8 +89682,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8770089682 },
8770189683 .call_frame = .{ .alignment = .@"16" },
8770289684 .extra_temps = .{
87703 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
87704 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
89685 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
89686 .{ .type = .f32, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
8770589687 .{ .type = .usize, .kind = .{ .extern_func = "__extendsftf2" } },
8770689688 .unused,
8770789689 .unused,
......@@ -87715,12 +89697,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8771589697 .dst_temps = .{ .mem, .unused },
8771689698 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
8771789699 .each = .{ .once = &.{
87718 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
87719 .{ .@"0:", ._ss, .mov, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
89700 .{ ._, ._, .mov, .tmp0d, .sia(-4, .src0, .add_unaligned_size), ._, ._ },
89701 .{ .@"0:", ._ss, .mov, .tmp1x, .memi(.src0d, .tmp0), ._, ._ },
8772089702 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
87721 .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"4", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
87722 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
87723 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
89703 .{ ._, ._dqa, .mov, .memsi(.dst0x, .@"4", .tmp0), .tmp1x, ._, ._ },
89704 .{ ._, ._, .sub, .tmp0d, .si(4), ._, ._ },
89705 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
8772489706 } },
8772589707 }, .{
8772689708 .required_features = .{ .sse, null, null, null },
......@@ -87731,8 +89713,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8773189713 },
8773289714 .call_frame = .{ .alignment = .@"16" },
8773389715 .extra_temps = .{
87734 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
87735 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
89716 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
89717 .{ .type = .f32, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
8773689718 .{ .type = .usize, .kind = .{ .extern_func = "__extendsftf2" } },
8773789719 .unused,
8773889720 .unused,
......@@ -87746,12 +89728,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8774689728 .dst_temps = .{ .mem, .unused },
8774789729 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
8774889730 .each = .{ .once = &.{
87749 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
87750 .{ .@"0:", ._ss, .mov, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
89731 .{ ._, ._, .mov, .tmp0d, .sia(-4, .src0, .add_unaligned_size), ._, ._ },
89732 .{ .@"0:", ._ss, .mov, .tmp1x, .memi(.src0d, .tmp0), ._, ._ },
8775189733 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
87752 .{ ._, ._ps, .mova, .memsia(.dst0x, .@"4", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
87753 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
87754 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
89734 .{ ._, ._ps, .mova, .memsi(.dst0x, .@"4", .tmp0), .tmp1x, ._, ._ },
89735 .{ ._, ._, .sub, .tmp0d, .si(4), ._, ._ },
89736 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
8775589737 } },
8775689738 }, .{
8775789739 .required_features = .{ .x87, null, null, null },
......@@ -87786,7 +89768,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8778689768 .{ .src = .{ .to_mem, .none, .none } },
8778789769 },
8778889770 .extra_temps = .{
87789 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
89771 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
8779089772 .{ .type = .f64, .kind = .{ .reg = .st7 } },
8779189773 .unused,
8779289774 .unused,
......@@ -87801,18 +89783,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8780189783 .dst_temps = .{ .mem, .unused },
8780289784 .clobbers = .{ .eflags = true },
8780389785 .each = .{ .once = &.{
87804 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
87805 .{ .@"0:", .f_, .ld, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._, ._ },
87806 .{ ._, .f_p, .st, .memsia(.dst0t, .@"2", .tmp0, .add_unaligned_size), ._, ._, ._ },
87807 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
87808 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
89786 .{ ._, ._, .mov, .tmp0d, .sia(-8, .src0, .add_unaligned_size), ._, ._ },
89787 .{ .@"0:", .f_, .ld, .memi(.src0q, .tmp0), ._, ._, ._ },
89788 .{ ._, .f_p, .st, .memsi(.dst0t, .@"2", .tmp0), ._, ._, ._ },
89789 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
89790 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
8780989791 } },
8781089792 }, .{
8781189793 .required_features = .{ .sse, null, null, null },
8781289794 .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
8781389795 .dst_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .xword } }, .any },
8781489796 .patterns = &.{
87815 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },
89797 .{ .src = .{ .{ .to_param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .none, .none } },
8781689798 },
8781789799 .call_frame = .{ .alignment = .@"16" },
8781889800 .extra_temps = .{
......@@ -87842,8 +89824,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8784289824 },
8784389825 .call_frame = .{ .alignment = .@"16" },
8784489826 .extra_temps = .{
87845 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
87846 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
89827 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
89828 .{ .type = .f64, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
8784789829 .{ .type = .usize, .kind = .{ .extern_func = "__extenddftf2" } },
8784889830 .unused,
8784989831 .unused,
......@@ -87857,12 +89839,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8785789839 .dst_temps = .{ .mem, .unused },
8785889840 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
8785989841 .each = .{ .once = &.{
87860 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
87861 .{ .@"0:", .v_sd, .mov, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
89842 .{ ._, ._, .mov, .tmp0d, .sia(-8, .src0, .add_unaligned_size), ._, ._ },
89843 .{ .@"0:", .v_sd, .mov, .tmp1x, .memi(.src0q, .tmp0), ._, ._ },
8786289844 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
87863 .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
87864 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
87865 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
89845 .{ ._, .v_dqa, .mov, .memsi(.dst0x, .@"2", .tmp0), .tmp1x, ._, ._ },
89846 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
89847 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
8786689848 } },
8786789849 }, .{
8786889850 .required_features = .{ .sse2, null, null, null },
......@@ -87873,8 +89855,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8787389855 },
8787489856 .call_frame = .{ .alignment = .@"16" },
8787589857 .extra_temps = .{
87876 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
87877 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
89858 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
89859 .{ .type = .f64, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
8787889860 .{ .type = .usize, .kind = .{ .extern_func = "__extenddftf2" } },
8787989861 .unused,
8788089862 .unused,
......@@ -87888,12 +89870,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8788889870 .dst_temps = .{ .mem, .unused },
8788989871 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
8789089872 .each = .{ .once = &.{
87891 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
87892 .{ .@"0:", ._sd, .mov, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
89873 .{ ._, ._, .mov, .tmp0d, .sia(-8, .src0, .add_unaligned_size), ._, ._ },
89874 .{ .@"0:", ._sd, .mov, .tmp1x, .memi(.src0q, .tmp0), ._, ._ },
8789389875 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
87894 .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
87895 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
87896 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
89876 .{ ._, ._dqa, .mov, .memsi(.dst0x, .@"2", .tmp0), .tmp1x, ._, ._ },
89877 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
89878 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
8789789879 } },
8789889880 }, .{
8789989881 .required_features = .{ .sse, null, null, null },
......@@ -87904,8 +89886,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8790489886 },
8790589887 .call_frame = .{ .alignment = .@"16" },
8790689888 .extra_temps = .{
87907 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
87908 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
89889 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
89890 .{ .type = .f64, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
8790989891 .{ .type = .usize, .kind = .{ .extern_func = "__extenddftf2" } },
8791089892 .unused,
8791189893 .unused,
......@@ -87919,15 +89901,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8791989901 .dst_temps = .{ .mem, .unused },
8792089902 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
8792189903 .each = .{ .once = &.{
87922 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
89904 .{ ._, ._, .mov, .tmp0d, .sia(-8, .src0, .add_unaligned_size), ._, ._ },
8792389905 .{ .@"0:", ._ps, .xor, .tmp1x, .tmp1x, ._, ._ },
87924 .{ ._, ._ps, .movl, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
89906 .{ ._, ._ps, .movl, .tmp1x, .memi(.src0q, .tmp0), ._, ._ },
8792589907 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
87926 .{ ._, ._ps, .mova, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
87927 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
87928 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
89908 .{ ._, ._ps, .mova, .memsi(.dst0x, .@"2", .tmp0), .tmp1x, ._, ._ },
89909 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
89910 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
8792989911 } },
8793089912 }, .{
89913 .required_cc_abi = .sysv64,
8793189914 .required_features = .{ .avx, null, null, null },
8793289915 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
8793389916 .dst_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .xword } }, .any },
......@@ -87948,7 +89931,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8794889931 .unused,
8794989932 .unused,
8795089933 },
87951 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },
89934 .dst_temps = .{ .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
8795289935 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
8795389936 .each = .{ .once = &.{
8795489937 .{ ._, .v_dqa, .mov, .dst0x, .mem(.src0x), ._, ._ },
......@@ -87956,6 +89939,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8795689939 .{ ._, ._, .call, .tmp1d, ._, ._, ._ },
8795789940 } },
8795889941 }, .{
89942 .required_cc_abi = .sysv64,
8795989943 .required_features = .{ .sse2, null, null, null },
8796089944 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
8796189945 .dst_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .xword } }, .any },
......@@ -87976,7 +89960,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8797689960 .unused,
8797789961 .unused,
8797889962 },
87979 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },
89963 .dst_temps = .{ .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
8798089964 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
8798189965 .each = .{ .once = &.{
8798289966 .{ ._, ._dqa, .mov, .dst0x, .mem(.src0x), ._, ._ },
......@@ -87984,6 +89968,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8798489968 .{ ._, ._, .call, .tmp1d, ._, ._, ._ },
8798589969 } },
8798689970 }, .{
89971 .required_cc_abi = .sysv64,
8798789972 .required_features = .{ .sse, null, null, null },
8798889973 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
8798989974 .dst_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .xword } }, .any },
......@@ -88004,7 +89989,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8800489989 .unused,
8800589990 .unused,
8800689991 },
88007 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },
89992 .dst_temps = .{ .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
8800889993 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
8800989994 .each = .{ .once = &.{
8801089995 .{ ._, ._ps, .mova, .dst0x, .mem(.src0x), ._, ._ },
......@@ -88012,6 +89997,35 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8801289997 .{ ._, ._, .call, .tmp1d, ._, ._, ._ },
8801389998 } },
8801489999 }, .{
90000 .required_cc_abi = .win64,
90001 .required_features = .{ .sse, null, null, null },
90002 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
90003 .dst_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .xword } }, .any },
90004 .patterns = &.{
90005 .{ .src = .{ .to_mem, .none, .none } },
90006 },
90007 .call_frame = .{ .alignment = .@"16" },
90008 .extra_temps = .{
90009 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
90010 .{ .type = .usize, .kind = .{ .extern_func = "__extendxftf2" } },
90011 .unused,
90012 .unused,
90013 .unused,
90014 .unused,
90015 .unused,
90016 .unused,
90017 .unused,
90018 .unused,
90019 .unused,
90020 },
90021 .dst_temps = .{ .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
90022 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
90023 .each = .{ .once = &.{
90024 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
90025 .{ ._, ._, .call, .tmp1d, ._, ._, ._ },
90026 } },
90027 }, .{
90028 .required_cc_abi = .sysv64,
8801590029 .required_features = .{ .avx, null, null, null },
8801690030 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
8801790031 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },
......@@ -88020,8 +90034,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8802090034 },
8802190035 .call_frame = .{ .size = 16, .alignment = .@"16" },
8802290036 .extra_temps = .{
88023 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
88024 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
90037 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
90038 .{ .type = .f80, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
8802590039 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
8802690040 .{ .type = .usize, .kind = .{ .extern_func = "__extendxftf2" } },
8802790041 .unused,
......@@ -88035,15 +90049,80 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8803590049 .dst_temps = .{ .mem, .unused },
8803690050 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
8803790051 .each = .{ .once = &.{
88038 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
88039 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
90052 .{ ._, ._, .mov, .tmp0d, .sia(-16, .src0, .add_unaligned_size), ._, ._ },
90053 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memi(.src0x, .tmp0), ._, ._ },
8804090054 .{ ._, .v_dqa, .mov, .mem(.tmp2x), .tmp1x, ._, ._ },
8804190055 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
88042 .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
88043 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
88044 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
90056 .{ ._, .v_dqa, .mov, .memi(.dst0x, .tmp0), .tmp1x, ._, ._ },
90057 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
90058 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
90059 } },
90060 }, .{
90061 .required_cc_abi = .win64,
90062 .required_features = .{ .avx, null, null, null },
90063 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
90064 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },
90065 .patterns = &.{
90066 .{ .src = .{ .to_mem, .none, .none } },
90067 },
90068 .call_frame = .{ .alignment = .@"16" },
90069 .extra_temps = .{
90070 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
90071 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
90072 .{ .type = .usize, .kind = .{ .extern_func = "__extendxftf2" } },
90073 .{ .type = .f80, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
90074 .unused,
90075 .unused,
90076 .unused,
90077 .unused,
90078 .unused,
90079 .unused,
90080 .unused,
90081 },
90082 .dst_temps = .{ .mem, .unused },
90083 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
90084 .each = .{ .once = &.{
90085 .{ ._, ._, .mov, .tmp0d, .sia(-16, .src0, .add_unaligned_size), ._, ._ },
90086 .{ .@"0:", ._, .lea, .tmp1p, .memi(.src0, .tmp0), ._, ._ },
90087 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
90088 .{ ._, .v_dqa, .mov, .memi(.dst0x, .tmp0), .tmp3x, ._, ._ },
90089 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
90090 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
90091 } },
90092 }, .{
90093 .required_cc_abi = .win64,
90094 .required_features = .{ .sse2, null, null, null },
90095 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
90096 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },
90097 .patterns = &.{
90098 .{ .src = .{ .to_mem, .none, .none } },
90099 },
90100 .call_frame = .{ .alignment = .@"16" },
90101 .extra_temps = .{
90102 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
90103 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
90104 .{ .type = .usize, .kind = .{ .extern_func = "__extendxftf2" } },
90105 .{ .type = .f80, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
90106 .unused,
90107 .unused,
90108 .unused,
90109 .unused,
90110 .unused,
90111 .unused,
90112 .unused,
90113 },
90114 .dst_temps = .{ .mem, .unused },
90115 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
90116 .each = .{ .once = &.{
90117 .{ ._, ._, .mov, .tmp0d, .sia(-16, .src0, .add_unaligned_size), ._, ._ },
90118 .{ .@"0:", ._, .lea, .tmp1p, .memi(.src0, .tmp0), ._, ._ },
90119 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
90120 .{ ._, ._dqa, .mov, .memi(.dst0x, .tmp0), .tmp3x, ._, ._ },
90121 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
90122 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
8804590123 } },
8804690124 }, .{
90125 .required_cc_abi = .sysv64,
8804790126 .required_features = .{ .sse2, null, null, null },
8804890127 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
8804990128 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },
......@@ -88052,8 +90131,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8805290131 },
8805390132 .call_frame = .{ .size = 16, .alignment = .@"16" },
8805490133 .extra_temps = .{
88055 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
88056 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
90134 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
90135 .{ .type = .f80, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
8805790136 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
8805890137 .{ .type = .usize, .kind = .{ .extern_func = "__extendxftf2" } },
8805990138 .unused,
......@@ -88067,15 +90146,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8806790146 .dst_temps = .{ .mem, .unused },
8806890147 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
8806990148 .each = .{ .once = &.{
88070 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
88071 .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
90149 .{ ._, ._, .mov, .tmp0d, .sia(-16, .src0, .add_unaligned_size), ._, ._ },
90150 .{ .@"0:", ._dqa, .mov, .tmp1x, .memi(.src0x, .tmp0), ._, ._ },
8807290151 .{ ._, ._dqa, .mov, .mem(.tmp2x), .tmp1x, ._, ._ },
8807390152 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
88074 .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
88075 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
88076 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
90153 .{ ._, ._dqa, .mov, .memi(.dst0x, .tmp0), .tmp1x, ._, ._ },
90154 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
90155 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
8807790156 } },
8807890157 }, .{
90158 .required_cc_abi = .sysv64,
8807990159 .required_features = .{ .sse, null, null, null },
8808090160 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
8808190161 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },
......@@ -88084,8 +90164,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8808490164 },
8808590165 .call_frame = .{ .size = 16, .alignment = .@"16" },
8808690166 .extra_temps = .{
88087 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
88088 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
90167 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
90168 .{ .type = .f80, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
8808990169 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
8809090170 .{ .type = .usize, .kind = .{ .extern_func = "__extendxftf2" } },
8809190171 .unused,
......@@ -88099,13 +90179,45 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8809990179 .dst_temps = .{ .mem, .unused },
8810090180 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
8810190181 .each = .{ .once = &.{
88102 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
88103 .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
90182 .{ ._, ._, .mov, .tmp0d, .sia(-16, .src0, .add_unaligned_size), ._, ._ },
90183 .{ .@"0:", ._ps, .mova, .tmp1x, .memi(.src0x, .tmp0), ._, ._ },
8810490184 .{ ._, ._ps, .mova, .mem(.tmp2x), .tmp1x, ._, ._ },
8810590185 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
88106 .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
88107 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
88108 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
90186 .{ ._, ._ps, .mova, .memi(.dst0x, .tmp0), .tmp1x, ._, ._ },
90187 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
90188 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
90189 } },
90190 }, .{
90191 .required_cc_abi = .win64,
90192 .required_features = .{ .sse, null, null, null },
90193 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
90194 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },
90195 .patterns = &.{
90196 .{ .src = .{ .to_mem, .none, .none } },
90197 },
90198 .call_frame = .{ .alignment = .@"16" },
90199 .extra_temps = .{
90200 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
90201 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
90202 .{ .type = .usize, .kind = .{ .extern_func = "__extendxftf2" } },
90203 .{ .type = .f80, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
90204 .unused,
90205 .unused,
90206 .unused,
90207 .unused,
90208 .unused,
90209 .unused,
90210 .unused,
90211 },
90212 .dst_temps = .{ .mem, .unused },
90213 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
90214 .each = .{ .once = &.{
90215 .{ ._, ._, .mov, .tmp0d, .sia(-16, .src0, .add_unaligned_size), ._, ._ },
90216 .{ .@"0:", ._, .lea, .tmp1p, .memi(.src0, .tmp0), ._, ._ },
90217 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
90218 .{ ._, ._ps, .mova, .memi(.dst0x, .tmp0), .tmp3x, ._, ._ },
90219 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
90220 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
8810990221 } },
8811090222 } }) catch |err| switch (err) {
8811190223 error.SelectFailed => return cg.fail("failed to select {s} {} {} {}", .{
......@@ -88118,7 +90230,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8811890230 };
8811990231 try res[0].finish(inst, &.{ty_op.operand}, &ops, cg);
8812090232 },
88121 .intcast => |air_tag| if (use_old) try cg.airIntCast(inst) else {
90233 .intcast => |air_tag| {
8812290234 const ty_op = air_datas[@intFromEnum(inst)].ty_op;
8812390235 const dst_ty = ty_op.ty.toType();
8812490236 const src_ty = cg.typeOf(ty_op.operand);
......@@ -92797,7 +94909,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9279794909 try res[0].finish(inst, &.{ty_op.operand}, &ops, cg);
9279894910 },
9279994911 .intcast_safe => unreachable,
92800 .trunc => |air_tag| if (use_old) try cg.airTrunc(inst) else {
94912 .trunc => |air_tag| {
9280194913 const ty_op = air_datas[@intFromEnum(inst)].ty_op;
9280294914 var ops = try cg.tempsFromOperands(inst, .{ty_op.operand});
9280394915 var res: [1]Temp = undefined;
......@@ -98462,7 +100574,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
98462100574 };
98463100575 try res[0].finish(inst, &.{ty_op.operand}, &ops, cg);
98464100576 },
98465 .optional_payload => if (use_old) try cg.airOptionalPayload(inst) else {
100577 .optional_payload => {
98466100578 const ty_op = air_datas[@intFromEnum(inst)].ty_op;
98467100579 var ops = try cg.tempsFromOperands(inst, .{ty_op.operand});
98468100580 const pl = if (!hack_around_sema_opv_bugs or ty_op.ty.toType().hasRuntimeBitsIgnoreComptime(zcu))
......@@ -98471,12 +100583,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
98471100583 try cg.tempInit(ty_op.ty.toType(), .none);
98472100584 try pl.finish(inst, &.{ty_op.operand}, &ops, cg);
98473100585 },
98474 .optional_payload_ptr => if (use_old) try cg.airOptionalPayloadPtr(inst) else {
100586 .optional_payload_ptr => {
98475100587 const ty_op = air_datas[@intFromEnum(inst)].ty_op;
98476100588 const ops = try cg.tempsFromOperands(inst, .{ty_op.operand});
98477100589 try ops[0].finish(inst, &.{ty_op.operand}, &ops, cg);
98478100590 },
98479 .optional_payload_ptr_set => if (use_old) try cg.airOptionalPayloadPtrSet(inst) else {
100591 .optional_payload_ptr_set => {
98480100592 const ty_op = air_datas[@intFromEnum(inst)].ty_op;
98481100593 const opt_ty = cg.typeOf(ty_op.operand).childType(zcu);
98482100594 var ops = try cg.tempsFromOperands(inst, .{ty_op.operand});
......@@ -98491,7 +100603,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
98491100603 }
98492100604 try ops[0].finish(inst, &.{ty_op.operand}, &ops, cg);
98493100605 },
98494 .wrap_optional => if (use_old) try cg.airWrapOptional(inst) else {
100606 .wrap_optional => {
98495100607 const ty_op = air_datas[@intFromEnum(inst)].ty_op;
98496100608 const opt_ty = ty_op.ty.toType();
98497100609 const opt_pl_ty = cg.typeOf(ty_op.operand);
......@@ -98506,7 +100618,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
98506100618 }
98507100619 try opt.finish(inst, &.{ty_op.operand}, &ops, cg);
98508100620 },
98509 .unwrap_errunion_payload => if (use_old) try cg.airUnwrapErrUnionPayload(inst) else {
100621 .unwrap_errunion_payload => {
98510100622 const ty_op = air_datas[@intFromEnum(inst)].ty_op;
98511100623 const eu_pl_ty = ty_op.ty.toType();
98512100624 const eu_pl_off: i32 = @intCast(codegen.errUnionPayloadOffset(eu_pl_ty, zcu));
......@@ -98517,7 +100629,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
98517100629 try cg.tempInit(eu_pl_ty, .none);
98518100630 try pl.finish(inst, &.{ty_op.operand}, &ops, cg);
98519100631 },
98520 .unwrap_errunion_err => if (use_old) try cg.airUnwrapErrUnionErr(inst) else {
100632 .unwrap_errunion_err => {
98521100633 const ty_op = air_datas[@intFromEnum(inst)].ty_op;
98522100634 const eu_ty = cg.typeOf(ty_op.operand);
98523100635 const eu_err_ty = ty_op.ty.toType();
......@@ -98527,7 +100639,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
98527100639 const err = try ops[0].read(eu_err_ty, .{ .disp = eu_err_off }, cg);
98528100640 try err.finish(inst, &.{ty_op.operand}, &ops, cg);
98529100641 },
98530 .unwrap_errunion_payload_ptr => if (use_old) try cg.airUnwrapErrUnionPayloadPtr(inst) else {
100642 .unwrap_errunion_payload_ptr => {
98531100643 const ty_op = air_datas[@intFromEnum(inst)].ty_op;
98532100644 const eu_ty = cg.typeOf(ty_op.operand).childType(zcu);
98533100645 const eu_pl_ty = eu_ty.errorUnionPayload(zcu);
......@@ -98536,7 +100648,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
98536100648 try ops[0].toOffset(eu_pl_off, cg);
98537100649 try ops[0].finish(inst, &.{ty_op.operand}, &ops, cg);
98538100650 },
98539 .unwrap_errunion_err_ptr => if (use_old) try cg.airUnwrapErrUnionErrPtr(inst) else {
100651 .unwrap_errunion_err_ptr => {
98540100652 const ty_op = air_datas[@intFromEnum(inst)].ty_op;
98541100653 const eu_ty = cg.typeOf(ty_op.operand).childType(zcu);
98542100654 const eu_err_ty = ty_op.ty.toType();
......@@ -98547,7 +100659,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
98547100659 const err = try ops[0].load(eu_err_ty, .{}, cg);
98548100660 try err.finish(inst, &.{ty_op.operand}, &ops, cg);
98549100661 },
98550 .errunion_payload_ptr_set => if (use_old) try cg.airErrUnionPayloadPtrSet(inst) else {
100662 .errunion_payload_ptr_set => {
98551100663 const ty_op = air_datas[@intFromEnum(inst)].ty_op;
98552100664 const eu_ty = cg.typeOf(ty_op.operand).childType(zcu);
98553100665 const eu_err_ty = eu_ty.errorUnionSet(zcu);
......@@ -98562,7 +100674,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
98562100674 try ops[0].toOffset(eu_pl_off - eu_err_off, cg);
98563100675 try ops[0].finish(inst, &.{ty_op.operand}, &ops, cg);
98564100676 },
98565 .wrap_errunion_payload => if (use_old) try cg.airWrapErrUnionPayload(inst) else {
100677 .wrap_errunion_payload => {
98566100678 const ty_op = air_datas[@intFromEnum(inst)].ty_op;
98567100679 const eu_ty = ty_op.ty.toType();
98568100680 const eu_err_ty = eu_ty.errorUnionSet(zcu);
......@@ -98577,7 +100689,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
98577100689 try err.die(cg);
98578100690 try eu.finish(inst, &.{ty_op.operand}, &ops, cg);
98579100691 },
98580 .wrap_errunion_err => if (use_old) try cg.airWrapErrUnionErr(inst) else {
100692 .wrap_errunion_err => {
98581100693 const ty_op = air_datas[@intFromEnum(inst)].ty_op;
98582100694 const eu_ty = ty_op.ty.toType();
98583100695 const eu_pl_ty = eu_ty.errorUnionPayload(zcu);
......@@ -98587,7 +100699,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
98587100699 try eu.write(&ops[0], .{ .disp = eu_err_off }, cg);
98588100700 try eu.finish(inst, &.{ty_op.operand}, &ops, cg);
98589100701 },
98590 .struct_field_ptr => if (use_old) try cg.airStructFieldPtr(inst) else {
100702 .struct_field_ptr => {
98591100703 const ty_pl = air_datas[@intFromEnum(inst)].ty_pl;
98592100704 const struct_field = cg.air.extraData(Air.StructField, ty_pl.payload).data;
98593100705 var ops = try cg.tempsFromOperands(inst, .{struct_field.struct_operand});
......@@ -98602,13 +100714,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
98602100714 .struct_field_ptr_index_1,
98603100715 .struct_field_ptr_index_2,
98604100716 .struct_field_ptr_index_3,
98605 => |air_tag| if (use_old) try cg.airStructFieldPtrIndex(inst, switch (air_tag) {
98606 else => unreachable,
98607 .struct_field_ptr_index_0 => 0,
98608 .struct_field_ptr_index_1 => 1,
98609 .struct_field_ptr_index_2 => 2,
98610 .struct_field_ptr_index_3 => 3,
98611 }) else {
100717 => |air_tag| {
98612100718 const ty_op = air_datas[@intFromEnum(inst)].ty_op;
98613100719 var ops = try cg.tempsFromOperands(inst, .{ty_op.operand});
98614100720 try ops[0].toOffset(cg.fieldOffset(
......@@ -98624,14 +100730,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
98624100730 ), cg);
98625100731 try ops[0].finish(inst, &.{ty_op.operand}, &ops, cg);
98626100732 },
98627 .struct_field_val => if (use_old) try cg.airStructFieldVal(inst) else fallback: {
100733 .struct_field_val => {
98628100734 const ty_pl = air_datas[@intFromEnum(inst)].ty_pl;
98629100735 const struct_field = cg.air.extraData(Air.StructField, ty_pl.payload).data;
98630100736 const agg_ty = cg.typeOf(struct_field.struct_operand);
98631100737 const field_ty = ty_pl.ty.toType();
98632100738 const field_off: u31 = switch (agg_ty.containerLayout(zcu)) {
98633100739 .auto, .@"extern" => @intCast(agg_ty.structFieldOffset(struct_field.field_index, zcu)),
98634 .@"packed" => break :fallback try cg.airStructFieldVal(inst),
100740 .@"packed" => unreachable,
98635100741 };
98636100742 var ops = try cg.tempsFromOperands(inst, .{struct_field.struct_operand});
98637100743 var res = if (!hack_around_sema_opv_bugs or field_ty.hasRuntimeBitsIgnoreComptime(zcu))
......@@ -98640,7 +100746,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
98640100746 try cg.tempInit(field_ty, .none);
98641100747 try res.finish(inst, &.{struct_field.struct_operand}, &ops, cg);
98642100748 },
98643 .set_union_tag => if (use_old) try cg.airSetUnionTag(inst) else {
100749 .set_union_tag => {
98644100750 const bin_op = air_datas[@intFromEnum(inst)].bin_op;
98645100751 const union_ty = cg.typeOf(bin_op.lhs).childType(zcu);
98646100752 const union_layout = union_ty.unionGetLayout(zcu);
......@@ -98651,7 +100757,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
98651100757 const res = try cg.tempInit(.void, .none);
98652100758 try res.finish(inst, &.{ bin_op.lhs, bin_op.rhs }, &ops, cg);
98653100759 },
98654 .get_union_tag => if (use_old) try cg.airGetUnionTag(inst) else {
100760 .get_union_tag => {
98655100761 const ty_op = air_datas[@intFromEnum(inst)].ty_op;
98656100762 const union_ty = cg.typeOf(ty_op.operand);
98657100763 var ops = try cg.tempsFromOperands(inst, .{ty_op.operand});
......@@ -98662,38 +100768,38 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
98662100768 }, cg);
98663100769 try res.finish(inst, &.{ty_op.operand}, &ops, cg);
98664100770 },
98665 .slice => if (use_old) try cg.airSlice(inst) else {
100771 .slice => {
98666100772 const ty_pl = air_datas[@intFromEnum(inst)].ty_pl;
98667100773 const bin_op = cg.air.extraData(Air.Bin, ty_pl.payload).data;
98668100774 var ops = try cg.tempsFromOperands(inst, .{ bin_op.lhs, bin_op.rhs });
98669100775 try ops[0].toPair(&ops[1], cg);
98670100776 try ops[0].finish(inst, &.{ bin_op.lhs, bin_op.rhs }, &ops, cg);
98671100777 },
98672 .slice_len => if (use_old) try cg.airSliceLen(inst) else {
100778 .slice_len => {
98673100779 const ty_op = air_datas[@intFromEnum(inst)].ty_op;
98674100780 var ops = try cg.tempsFromOperands(inst, .{ty_op.operand});
98675100781 try ops[0].toSliceLen(cg);
98676100782 try ops[0].finish(inst, &.{ty_op.operand}, &ops, cg);
98677100783 },
98678 .slice_ptr => if (use_old) try cg.airSlicePtr(inst) else {
100784 .slice_ptr => {
98679100785 const ty_op = air_datas[@intFromEnum(inst)].ty_op;
98680100786 var ops = try cg.tempsFromOperands(inst, .{ty_op.operand});
98681100787 try ops[0].toSlicePtr(cg);
98682100788 try ops[0].finish(inst, &.{ty_op.operand}, &ops, cg);
98683100789 },
98684 .ptr_slice_len_ptr => if (use_old) try cg.airPtrSliceLenPtr(inst) else {
100790 .ptr_slice_len_ptr => {
98685100791 const ty_op = air_datas[@intFromEnum(inst)].ty_op;
98686100792 var ops = try cg.tempsFromOperands(inst, .{ty_op.operand});
98687100793 try ops[0].toOffset(8, cg);
98688100794 try ops[0].finish(inst, &.{ty_op.operand}, &ops, cg);
98689100795 },
98690 .ptr_slice_ptr_ptr => if (use_old) try cg.airPtrSlicePtrPtr(inst) else {
100796 .ptr_slice_ptr_ptr => {
98691100797 const ty_op = air_datas[@intFromEnum(inst)].ty_op;
98692100798 var ops = try cg.tempsFromOperands(inst, .{ty_op.operand});
98693100799 try ops[0].toOffset(0, cg);
98694100800 try ops[0].finish(inst, &.{ty_op.operand}, &ops, cg);
98695100801 },
98696 .array_elem_val => if (use_old) try cg.airArrayElemVal(inst) else {
100802 .array_elem_val => {
98697100803 const bin_op = air_datas[@intFromEnum(inst)].bin_op;
98698100804 const array_ty = cg.typeOf(bin_op.lhs);
98699100805 const res_ty = array_ty.elemType2(zcu);
......@@ -98889,11 +100995,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
98889100995 };
98890100996 try res[0].finish(inst, &.{ bin_op.lhs, bin_op.rhs }, &ops, cg);
98891100997 },
98892 .slice_elem_val, .ptr_elem_val => |air_tag| if (use_old) switch (air_tag) {
98893 else => unreachable,
98894 .slice_elem_val => try cg.airSliceElemVal(inst),
98895 .ptr_elem_val => try cg.airPtrElemVal(inst),
98896 } else {
100998 .slice_elem_val, .ptr_elem_val => {
98897100999 const bin_op = air_datas[@intFromEnum(inst)].bin_op;
98898101000 const res_ty = cg.typeOf(bin_op.lhs).elemType2(zcu);
98899101001 var ops = try cg.tempsFromOperands(inst, .{ bin_op.lhs, bin_op.rhs });
......@@ -99016,11 +101118,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
99016101118 } else res[0] = try cg.tempInit(res_ty, .none);
99017101119 try res[0].finish(inst, &.{ bin_op.lhs, bin_op.rhs }, &ops, cg);
99018101120 },
99019 .slice_elem_ptr, .ptr_elem_ptr => |air_tag| if (use_old) switch (air_tag) {
99020 else => unreachable,
99021 .slice_elem_ptr => try cg.airSliceElemPtr(inst),
99022 .ptr_elem_ptr => try cg.airPtrElemPtr(inst),
99023 } else {
101121 .slice_elem_ptr, .ptr_elem_ptr => {
99024101122 const ty_pl = air_datas[@intFromEnum(inst)].ty_pl;
99025101123 const bin_op = cg.air.extraData(Air.Bin, ty_pl.payload).data;
99026101124 var ops = try cg.tempsFromOperands(inst, .{ bin_op.lhs, bin_op.rhs });
......@@ -99067,7 +101165,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
99067101165 }
99068101166 try ops[0].finish(inst, &.{ bin_op.lhs, bin_op.rhs }, &ops, cg);
99069101167 },
99070 .array_to_slice => if (use_old) try cg.airArrayToSlice(inst) else {
101168 .array_to_slice => {
99071101169 const ty_op = air_datas[@intFromEnum(inst)].ty_op;
99072101170 var ops = try cg.tempsFromOperands(inst, .{ty_op.operand});
99073101171 var len = try cg.tempInit(.usize, .{
......@@ -99076,7 +101174,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
99076101174 try ops[0].toPair(&len, cg);
99077101175 try ops[0].finish(inst, &.{ty_op.operand}, &ops, cg);
99078101176 },
99079 .int_from_float, .int_from_float_optimized => |air_tag| if (use_old) try cg.airIntFromFloat(inst) else {
101177 .int_from_float, .int_from_float_optimized => |air_tag| {
99080101178 const ty_op = air_datas[@intFromEnum(inst)].ty_op;
99081101179 var ops = try cg.tempsFromOperands(inst, .{ty_op.operand});
99082101180 var res: [1]Temp = undefined;
......@@ -99278,7 +101376,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
99278101376 .src_constraints = .{ .{ .float = .word }, .any, .any },
99279101377 .dst_constraints = .{ .{ .signed_int = .dword }, .any },
99280101378 .patterns = &.{
99281 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },
101379 .{ .src = .{ .{ .to_param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .none, .none } },
99282101380 },
99283101381 .call_frame = .{ .alignment = .@"16" },
99284101382 .extra_temps = .{
......@@ -99294,7 +101392,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
99294101392 .unused,
99295101393 .unused,
99296101394 },
99297 .dst_temps = .{ .{ .reg = .eax }, .unused },
101395 .dst_temps = .{ .{ .ret_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
99298101396 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
99299101397 .each = .{ .once = &.{
99300101398 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
......@@ -99304,7 +101402,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
99304101402 .src_constraints = .{ .{ .float = .word }, .any, .any },
99305101403 .dst_constraints = .{ .{ .unsigned_int = .dword }, .any },
99306101404 .patterns = &.{
99307 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },
101405 .{ .src = .{ .{ .to_param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .none, .none } },
99308101406 },
99309101407 .call_frame = .{ .alignment = .@"16" },
99310101408 .extra_temps = .{
......@@ -99320,7 +101418,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
99320101418 .unused,
99321101419 .unused,
99322101420 },
99323 .dst_temps = .{ .{ .reg = .eax }, .unused },
101421 .dst_temps = .{ .{ .ret_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
99324101422 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
99325101423 .each = .{ .once = &.{
99326101424 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
......@@ -99330,7 +101428,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
99330101428 .src_constraints = .{ .{ .float = .word }, .any, .any },
99331101429 .dst_constraints = .{ .{ .signed_int = .qword }, .any },
99332101430 .patterns = &.{
99333 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },
101431 .{ .src = .{ .{ .to_param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .none, .none } },
99334101432 },
99335101433 .call_frame = .{ .alignment = .@"16" },
99336101434 .extra_temps = .{
......@@ -99346,7 +101444,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
99346101444 .unused,
99347101445 .unused,
99348101446 },
99349 .dst_temps = .{ .{ .reg = .rax }, .unused },
101447 .dst_temps = .{ .{ .ret_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
99350101448 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
99351101449 .each = .{ .once = &.{
99352101450 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
......@@ -99356,7 +101454,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
99356101454 .src_constraints = .{ .{ .float = .word }, .any, .any },
99357101455 .dst_constraints = .{ .{ .unsigned_int = .qword }, .any },
99358101456 .patterns = &.{
99359 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },
101457 .{ .src = .{ .{ .to_param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .none, .none } },
99360101458 },
99361101459 .call_frame = .{ .alignment = .@"16" },
99362101460 .extra_temps = .{
......@@ -99372,17 +101470,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
99372101470 .unused,
99373101471 .unused,
99374101472 },
99375 .dst_temps = .{ .{ .reg = .rax }, .unused },
101473 .dst_temps = .{ .{ .ret_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
99376101474 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
99377101475 .each = .{ .once = &.{
99378101476 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
99379101477 } },
99380101478 }, .{
99381 .required_features = .{ .@"64bit", .sse, null, null },
101479 .required_cc_abi = .sysv64,
101480 .required_features = .{ .sse, null, null, null },
99382101481 .src_constraints = .{ .{ .float = .word }, .any, .any },
99383101482 .dst_constraints = .{ .{ .signed_int = .xword }, .any },
99384101483 .patterns = &.{
99385 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },
101484 .{ .src = .{ .{ .to_param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .none, .none } },
99386101485 },
99387101486 .call_frame = .{ .alignment = .@"16" },
99388101487 .extra_temps = .{
......@@ -99398,17 +101497,72 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
99398101497 .unused,
99399101498 .unused,
99400101499 },
99401 .dst_temps = .{ .{ .reg_pair = .{ .rax, .rdx } }, .unused },
101500 .dst_temps = .{ .{ .ret_gpr_pair = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
99402101501 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
99403101502 .each = .{ .once = &.{
99404101503 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
99405101504 } },
99406101505 }, .{
99407 .required_features = .{ .@"64bit", .sse, null, null },
101506 .required_cc_abi = .win64,
101507 .required_features = .{ .sse, null, null, null },
101508 .src_constraints = .{ .{ .float = .word }, .any, .any },
101509 .dst_constraints = .{ .{ .signed_int = .xword }, .any },
101510 .patterns = &.{
101511 .{ .src = .{ .{ .to_param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .none, .none } },
101512 },
101513 .call_frame = .{ .alignment = .@"16" },
101514 .extra_temps = .{
101515 .{ .type = .usize, .kind = .{ .extern_func = "__fixhfti" } },
101516 .unused,
101517 .unused,
101518 .unused,
101519 .unused,
101520 .unused,
101521 .unused,
101522 .unused,
101523 .unused,
101524 .unused,
101525 .unused,
101526 },
101527 .dst_temps = .{ .{ .ref = .src0 }, .unused },
101528 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
101529 .each = .{ .once = &.{
101530 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
101531 } },
101532 }, .{
101533 .required_cc_abi = .sysv64,
101534 .required_features = .{ .sse, null, null, null },
101535 .src_constraints = .{ .{ .float = .word }, .any, .any },
101536 .dst_constraints = .{ .{ .unsigned_int = .xword }, .any },
101537 .patterns = &.{
101538 .{ .src = .{ .{ .to_param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .none, .none } },
101539 },
101540 .call_frame = .{ .alignment = .@"16" },
101541 .extra_temps = .{
101542 .{ .type = .usize, .kind = .{ .extern_func = "__fixunshfti" } },
101543 .unused,
101544 .unused,
101545 .unused,
101546 .unused,
101547 .unused,
101548 .unused,
101549 .unused,
101550 .unused,
101551 .unused,
101552 .unused,
101553 },
101554 .dst_temps = .{ .{ .ret_gpr_pair = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
101555 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
101556 .each = .{ .once = &.{
101557 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
101558 } },
101559 }, .{
101560 .required_cc_abi = .win64,
101561 .required_features = .{ .sse, null, null, null },
99408101562 .src_constraints = .{ .{ .float = .word }, .any, .any },
99409101563 .dst_constraints = .{ .{ .unsigned_int = .xword }, .any },
99410101564 .patterns = &.{
99411 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },
101565 .{ .src = .{ .{ .to_param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .none, .none } },
99412101566 },
99413101567 .call_frame = .{ .alignment = .@"16" },
99414101568 .extra_temps = .{
......@@ -99424,7 +101578,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
99424101578 .unused,
99425101579 .unused,
99426101580 },
99427 .dst_temps = .{ .{ .reg_pair = .{ .rax, .rdx } }, .unused },
101581 .dst_temps = .{ .{ .ref = .src0 }, .unused },
99428101582 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
99429101583 .each = .{ .once = &.{
99430101584 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
......@@ -99434,7 +101588,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
99434101588 .src_constraints = .{ .{ .float = .word }, .any, .any },
99435101589 .dst_constraints = .{ .{ .remainder_signed_int = .{ .of = .qword, .is = .qword } }, .any },
99436101590 .patterns = &.{
99437 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },
101591 .{ .src = .{ .{ .to_param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .none, .none } },
99438101592 },
99439101593 .call_frame = .{ .alignment = .@"16" },
99440101594 .extra_temps = .{
......@@ -99465,7 +101619,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
99465101619 .src_constraints = .{ .{ .float = .word }, .any, .any },
99466101620 .dst_constraints = .{ .{ .remainder_unsigned_int = .{ .of = .qword, .is = .qword } }, .any },
99467101621 .patterns = &.{
99468 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },
101622 .{ .src = .{ .{ .to_param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .none, .none } },
99469101623 },
99470101624 .call_frame = .{ .alignment = .@"16" },
99471101625 .extra_temps = .{
......@@ -99527,7 +101681,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
99527101681 .{ .src = .{ .to_mem, .none, .none } },
99528101682 },
99529101683 .extra_temps = .{
99530 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
101684 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
99531101685 .{ .type = .vector_16_u8, .kind = .{ .pshufb_trunc_mem = .{ .from = .dword, .to = .byte } } },
99532101686 .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } },
99533101687 .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } },
......@@ -99544,13 +101698,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
99544101698 .each = .{ .once = &.{
99545101699 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
99546101700 .{ ._, .v_ps, .mova, .tmp2x, .lea(.tmp0x), ._, ._ },
99547 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
99548 .{ .@"0:", .v_ps, .cvtph2, .tmp3x, .memsia(.src0q, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
101701 .{ ._, ._, .mov, .tmp0d, .sia(-4, .dst0, .add_size), ._, ._ },
101702 .{ .@"0:", .v_ps, .cvtph2, .tmp3x, .memsi(.src0q, .@"2", .tmp0), ._, ._ },
99549101703 .{ ._, .v_, .cvttps2dq, .tmp3x, .tmp3x, ._, ._ },
99550101704 .{ ._, .vp_b, .shuf, .tmp3x, .tmp3x, .tmp2x, ._ },
99551 .{ ._, .v_d, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
99552 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
99553 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
101705 .{ ._, .v_d, .mov, .memi(.dst0d, .tmp0), .tmp3x, ._, ._ },
101706 .{ ._, ._, .sub, .tmp0d, .si(4), ._, ._ },
101707 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
99554101708 } },
99555101709 }, .{
99556101710 .required_features = .{ .avx, .slow_incdec, null, null },
......@@ -99561,10 +101715,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
99561101715 },
99562101716 .call_frame = .{ .alignment = .@"16" },
99563101717 .extra_temps = .{
99564 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
99565 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
101718 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
101719 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
99566101720 .{ .type = .usize, .kind = .{ .extern_func = "__fixhfsi" } },
99567 .{ .type = .i32, .kind = .{ .reg = .eax } },
101721 .{ .type = .i32, .kind = .{ .ret_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
99568101722 .unused,
99569101723 .unused,
99570101724 .unused,
......@@ -99576,13 +101730,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
99576101730 .dst_temps = .{ .mem, .unused },
99577101731 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
99578101732 .each = .{ .once = &.{
99579 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
101733 .{ ._, ._, .mov, .tmp0d, .sia(-1, .dst0, .add_unaligned_size), ._, ._ },
99580101734 .{ .@"0:", .vp_, .xor, .tmp1x, .tmp1x, .tmp1x, ._ },
99581 .{ ._, .vp_w, .insr, .tmp1x, .tmp1x, .memsia(.src0w, .@"2", .tmp0, .add_unaligned_size), .ui(0) },
101735 .{ ._, .vp_w, .insr, .tmp1x, .tmp1x, .memsi(.src0w, .@"2", .tmp0), .ui(0) },
99582101736 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
99583 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp3b, ._, ._ },
99584 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
99585 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
101737 .{ ._, ._, .mov, .memi(.dst0b, .tmp0), .tmp3b, ._, ._ },
101738 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
101739 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
99586101740 } },
99587101741 }, .{
99588101742 .required_features = .{ .avx, null, null, null },
......@@ -99593,10 +101747,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
99593101747 },
99594101748 .call_frame = .{ .alignment = .@"16" },
99595101749 .extra_temps = .{
99596 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
99597 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
101750 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
101751 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
99598101752 .{ .type = .usize, .kind = .{ .extern_func = "__fixhfsi" } },
99599 .{ .type = .i32, .kind = .{ .reg = .eax } },
101753 .{ .type = .i32, .kind = .{ .ret_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
99600101754 .unused,
99601101755 .unused,
99602101756 .unused,
......@@ -99608,13 +101762,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
99608101762 .dst_temps = .{ .mem, .unused },
99609101763 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
99610101764 .each = .{ .once = &.{
99611 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
101765 .{ ._, ._, .mov, .tmp0d, .sia(-1, .dst0, .add_unaligned_size), ._, ._ },
99612101766 .{ .@"0:", .vp_, .xor, .tmp1x, .tmp1x, .tmp1x, ._ },
99613 .{ ._, .vp_w, .insr, .tmp1x, .tmp1x, .memsia(.src0w, .@"2", .tmp0, .add_unaligned_size), .ui(0) },
101767 .{ ._, .vp_w, .insr, .tmp1x, .tmp1x, .memsi(.src0w, .@"2", .tmp0), .ui(0) },
99614101768 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
99615 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp3b, ._, ._ },
99616 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
99617 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
101769 .{ ._, ._, .mov, .memi(.dst0b, .tmp0), .tmp3b, ._, ._ },
101770 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
101771 .{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
99618101772 } },
99619101773 }, .{
99620101774 .required_features = .{ .sse2, .slow_incdec, null, null },
......@@ -99625,10 +101779,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
99625101779 },
99626101780 .call_frame = .{ .alignment = .@"16" },
99627101781 .extra_temps = .{
99628 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
99629 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
101782 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
101783 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
99630101784 .{ .type = .usize, .kind = .{ .extern_func = "__fixhfsi" } },
99631 .{ .type = .i32, .kind = .{ .reg = .eax } },
101785 .{ .type = .i32, .kind = .{ .ret_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
99632101786 .unused,
99633101787 .unused,
99634101788 .unused,
......@@ -99640,13 +101794,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
99640101794 .dst_temps = .{ .mem, .unused },
99641101795 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
99642101796 .each = .{ .once = &.{
99643 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
101797 .{ ._, ._, .mov, .tmp0d, .sia(-1, .dst0, .add_unaligned_size), ._, ._ },
99644101798 .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ },
99645 .{ ._, .p_w, .insr, .tmp1x, .memsia(.src0w, .@"2", .tmp0, .add_unaligned_size), .ui(0), ._ },
101799 .{ ._, .p_w, .insr, .tmp1x, .memsi(.src0w, .@"2", .tmp0), .ui(0), ._ },
99646101800 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
99647 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp3b, ._, ._ },
99648 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
99649 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
101801 .{ ._, ._, .mov, .memi(.dst0b, .tmp0), .tmp3b, ._, ._ },
101802 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
101803 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
99650101804 } },
99651101805 }, .{
99652101806 .required_features = .{ .sse2, null, null, null },
......@@ -99657,10 +101811,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
99657101811 },
99658101812 .call_frame = .{ .alignment = .@"16" },
99659101813 .extra_temps = .{
99660 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
99661 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
101814 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
101815 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
99662101816 .{ .type = .usize, .kind = .{ .extern_func = "__fixhfsi" } },
99663 .{ .type = .i32, .kind = .{ .reg = .eax } },
101817 .{ .type = .i32, .kind = .{ .ret_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
99664101818 .unused,
99665101819 .unused,
99666101820 .unused,
......@@ -99672,13 +101826,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
99672101826 .dst_temps = .{ .mem, .unused },
99673101827 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
99674101828 .each = .{ .once = &.{
99675 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
101829 .{ ._, ._, .mov, .tmp0d, .sia(-1, .dst0, .add_unaligned_size), ._, ._ },
99676101830 .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ },
99677 .{ ._, .p_w, .insr, .tmp1x, .memsia(.src0w, .@"2", .tmp0, .add_unaligned_size), .ui(0), ._ },
101831 .{ ._, .p_w, .insr, .tmp1x, .memsi(.src0w, .@"2", .tmp0), .ui(0), ._ },
99678101832 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
99679 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp3b, ._, ._ },
99680 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
99681 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
101833 .{ ._, ._, .mov, .memi(.dst0b, .tmp0), .tmp3b, ._, ._ },
101834 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
101835 .{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
99682101836 } },
99683101837 }, .{
99684101838 .required_features = .{ .sse, .slow_incdec, null, null },
......@@ -99689,10 +101843,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
99689101843 },
99690101844 .call_frame = .{ .alignment = .@"16" },
99691101845 .extra_temps = .{
99692 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
99693 .{ .type = .i32, .kind = .{ .reg = .eax } },
101846 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
101847 .{ .type = .i32, .kind = .{ .ret_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
99694101848 .{ .type = .f32, .kind = .mem },
99695 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
101849 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
99696101850 .{ .type = .usize, .kind = .{ .extern_func = "__fixhfsi" } },
99697101851 .unused,
99698101852 .unused,
......@@ -99704,14 +101858,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
99704101858 .dst_temps = .{ .mem, .unused },
99705101859 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
99706101860 .each = .{ .once = &.{
99707 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
99708 .{ .@"0:", ._, .movzx, .tmp1d, .memsia(.src0w, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
101861 .{ ._, ._, .mov, .tmp0d, .sia(-1, .dst0, .add_unaligned_size), ._, ._ },
101862 .{ .@"0:", ._, .movzx, .tmp1d, .memsi(.src0w, .@"2", .tmp0), ._, ._ },
99709101863 .{ ._, ._, .mov, .tmp2d, .tmp1d, ._, ._ },
99710101864 .{ ._, ._ss, .mov, .tmp3x, .tmp2d, ._, ._ },
99711101865 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
99712 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
99713 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
99714 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
101866 .{ ._, ._, .mov, .memi(.dst0b, .tmp0), .tmp1b, ._, ._ },
101867 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
101868 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
99715101869 } },
99716101870 }, .{
99717101871 .required_features = .{ .sse, null, null, null },
......@@ -99722,10 +101876,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
99722101876 },
99723101877 .call_frame = .{ .alignment = .@"16" },
99724101878 .extra_temps = .{
99725 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
99726 .{ .type = .i32, .kind = .{ .reg = .eax } },
101879 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
101880 .{ .type = .i32, .kind = .{ .ret_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
99727101881 .{ .type = .f32, .kind = .mem },
99728 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
101882 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
99729101883 .{ .type = .usize, .kind = .{ .extern_func = "__fixhfsi" } },
99730101884 .unused,
99731101885 .unused,
......@@ -99737,14 +101891,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
99737101891 .dst_temps = .{ .mem, .unused },
99738101892 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
99739101893 .each = .{ .once = &.{
99740 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
99741 .{ .@"0:", ._, .movzx, .tmp1d, .memsia(.src0w, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
101894 .{ ._, ._, .mov, .tmp0d, .sia(-1, .dst0, .add_unaligned_size), ._, ._ },
101895 .{ .@"0:", ._, .movzx, .tmp1d, .memsi(.src0w, .@"2", .tmp0), ._, ._ },
99742101896 .{ ._, ._, .mov, .tmp2d, .tmp1d, ._, ._ },
99743101897 .{ ._, ._ss, .mov, .tmp3x, .tmp2d, ._, ._ },
99744101898 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
99745 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
99746 .{ ._, ._c, .in, .tmp0p, .si(1), ._, ._ },
99747 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
101899 .{ ._, ._, .mov, .memi(.dst0b, .tmp0), .tmp1b, ._, ._ },
101900 .{ ._, ._c, .de, .tmp0d, .si(1), ._, ._ },
101901 .{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
99748101902 } },
99749101903 }, .{
99750101904 .required_features = .{ .f16c, null, null, null },
......@@ -99782,7 +101936,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
99782101936 .{ .src = .{ .to_mem, .none, .none } },
99783101937 },
99784101938 .extra_temps = .{
99785 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
101939 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
99786101940 .{ .type = .vector_8_i16, .kind = .{ .rc = .sse } },
99787101941 .unused,
99788101942 .unused,
......@@ -99797,13 +101951,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
99797101951 .dst_temps = .{ .mem, .unused },
99798101952 .clobbers = .{ .eflags = true },
99799101953 .each = .{ .once = &.{
99800 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
99801 .{ .@"0:", .v_ps, .cvtph2, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
101954 .{ ._, ._, .mov, .tmp0d, .sia(-8, .src0, .add_size), ._, ._ },
101955 .{ .@"0:", .v_ps, .cvtph2, .tmp1x, .memi(.src0q, .tmp0), ._, ._ },
99802101956 .{ ._, .v_, .cvttps2dq, .tmp1x, .tmp1x, ._, ._ },
99803101957 .{ ._, .vp_w, .ackssd, .tmp1x, .tmp1x, .tmp1x, ._ },
99804 .{ ._, .v_q, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
99805 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
99806 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
101958 .{ ._, .v_q, .mov, .memi(.dst0q, .tmp0), .tmp1x, ._, ._ },
101959 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
101960 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
99807101961 } },
99808101962 }, .{
99809101963 .required_features = .{ .f16c, null, null, null },
......@@ -99813,7 +101967,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
99813101967 .{ .src = .{ .to_mem, .none, .none } },
99814101968 },
99815101969 .extra_temps = .{
99816 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
101970 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
99817101971 .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } },
99818101972 .unused,
99819101973 .unused,
......@@ -99828,13 +101982,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
99828101982 .dst_temps = .{ .mem, .unused },
99829101983 .clobbers = .{ .eflags = true },
99830101984 .each = .{ .once = &.{
99831 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
99832 .{ .@"0:", .v_ps, .cvtph2, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
101985 .{ ._, ._, .mov, .tmp0d, .sia(-8, .src0, .add_size), ._, ._ },
101986 .{ .@"0:", .v_ps, .cvtph2, .tmp1x, .memi(.src0q, .tmp0), ._, ._ },
99833101987 .{ ._, .v_, .cvttps2dq, .tmp1x, .tmp1x, ._, ._ },
99834101988 .{ ._, .vp_w, .ackusd, .tmp1x, .tmp1x, .tmp1x, ._ },
99835 .{ ._, .v_q, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
99836 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
99837 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
101989 .{ ._, .v_q, .mov, .memi(.dst0q, .tmp0), .tmp1x, ._, ._ },
101990 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
101991 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
99838101992 } },
99839101993 }, .{
99840101994 .required_features = .{ .avx, null, null, null },
......@@ -99845,10 +101999,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
99845101999 },
99846102000 .call_frame = .{ .alignment = .@"16" },
99847102001 .extra_temps = .{
99848 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
99849 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
102002 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
102003 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
99850102004 .{ .type = .usize, .kind = .{ .extern_func = "__fixhfsi" } },
99851 .{ .type = .i32, .kind = .{ .reg = .eax } },
102005 .{ .type = .i32, .kind = .{ .ret_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
99852102006 .unused,
99853102007 .unused,
99854102008 .unused,
......@@ -99860,13 +102014,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
99860102014 .dst_temps = .{ .mem, .unused },
99861102015 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
99862102016 .each = .{ .once = &.{
99863 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
102017 .{ ._, ._, .mov, .tmp0d, .sia(-2, .src0, .add_unaligned_size), ._, ._ },
99864102018 .{ .@"0:", .vp_, .xor, .tmp1x, .tmp1x, .tmp1x, ._ },
99865 .{ ._, .vp_w, .insr, .tmp1x, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0) },
102019 .{ ._, .vp_w, .insr, .tmp1x, .tmp1x, .memi(.src0w, .tmp0), .ui(0) },
99866102020 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
99867 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp3w, ._, ._ },
99868 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
99869 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
102021 .{ ._, ._, .mov, .memi(.dst0w, .tmp0), .tmp3w, ._, ._ },
102022 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
102023 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
99870102024 } },
99871102025 }, .{
99872102026 .required_features = .{ .sse2, null, null, null },
......@@ -99877,10 +102031,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
99877102031 },
99878102032 .call_frame = .{ .alignment = .@"16" },
99879102033 .extra_temps = .{
99880 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
99881 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
102034 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
102035 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
99882102036 .{ .type = .usize, .kind = .{ .extern_func = "__fixhfsi" } },
99883 .{ .type = .i32, .kind = .{ .reg = .eax } },
102037 .{ .type = .i32, .kind = .{ .ret_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
99884102038 .unused,
99885102039 .unused,
99886102040 .unused,
......@@ -99892,13 +102046,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
99892102046 .dst_temps = .{ .mem, .unused },
99893102047 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
99894102048 .each = .{ .once = &.{
99895 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
102049 .{ ._, ._, .mov, .tmp0d, .sia(-2, .src0, .add_unaligned_size), ._, ._ },
99896102050 .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ },
99897 .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0), ._ },
102051 .{ ._, .p_w, .insr, .tmp1x, .memi(.src0w, .tmp0), .ui(0), ._ },
99898102052 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
99899 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp3w, ._, ._ },
99900 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
99901 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
102053 .{ ._, ._, .mov, .memi(.dst0w, .tmp0), .tmp3w, ._, ._ },
102054 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
102055 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
99902102056 } },
99903102057 }, .{
99904102058 .required_features = .{ .sse, null, null, null },
......@@ -99909,10 +102063,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
99909102063 },
99910102064 .call_frame = .{ .alignment = .@"16" },
99911102065 .extra_temps = .{
99912 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
99913 .{ .type = .i32, .kind = .{ .reg = .eax } },
102066 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
102067 .{ .type = .i32, .kind = .{ .ret_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
99914102068 .{ .type = .f32, .kind = .mem },
99915 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
102069 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
99916102070 .{ .type = .usize, .kind = .{ .extern_func = "__fixhfsi" } },
99917102071 .unused,
99918102072 .unused,
......@@ -99924,14 +102078,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
99924102078 .dst_temps = .{ .mem, .unused },
99925102079 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
99926102080 .each = .{ .once = &.{
99927 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
99928 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
102081 .{ ._, ._, .mov, .tmp0d, .sia(-2, .src0, .add_unaligned_size), ._, ._ },
102082 .{ .@"0:", ._, .movzx, .tmp1d, .memi(.src0w, .tmp0), ._, ._ },
99929102083 .{ ._, ._, .mov, .tmp2d, .tmp1d, ._, ._ },
99930102084 .{ ._, ._ss, .mov, .tmp3x, .tmp2d, ._, ._ },
99931102085 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
99932 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
99933 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
99934 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
102086 .{ ._, ._, .mov, .memi(.dst0w, .tmp0), .tmp1w, ._, ._ },
102087 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
102088 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
99935102089 } },
99936102090 }, .{
99937102091 .required_features = .{ .f16c, null, null, null },
......@@ -99941,7 +102095,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
99941102095 .{ .src = .{ .to_mem, .none, .none } },
99942102096 },
99943102097 .extra_temps = .{
99944 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
102098 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
99945102099 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },
99946102100 .unused,
99947102101 .unused,
......@@ -99956,12 +102110,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
99956102110 .dst_temps = .{ .mem, .unused },
99957102111 .clobbers = .{ .eflags = true },
99958102112 .each = .{ .once = &.{
99959 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
99960 .{ .@"0:", .v_ps, .cvtph2, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
102113 .{ ._, ._, .mov, .tmp0d, .sia(-8, .src0, .add_size), ._, ._ },
102114 .{ .@"0:", .v_ps, .cvtph2, .tmp1x, .memi(.src0q, .tmp0), ._, ._ },
99961102115 .{ ._, .v_, .cvttps2dq, .tmp1x, .tmp1x, ._, ._ },
99962 .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
99963 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
99964 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
102116 .{ ._, .v_dqa, .mov, .memsi(.dst0x, .@"2", .tmp0), .tmp1x, ._, ._ },
102117 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
102118 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
99965102119 } },
99966102120 }, .{
99967102121 .required_features = .{ .f16c, null, null, null },
......@@ -99971,7 +102125,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
99971102125 .{ .src = .{ .to_mem, .none, .none } },
99972102126 },
99973102127 .extra_temps = .{
99974 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
102128 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
99975102129 .{ .type = .f32, .kind = .{ .rc = .sse } },
99976102130 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
99977102131 .unused,
......@@ -99986,14 +102140,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
99986102140 .dst_temps = .{ .mem, .unused },
99987102141 .clobbers = .{ .eflags = true },
99988102142 .each = .{ .once = &.{
99989 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
102143 .{ ._, ._, .mov, .tmp0d, .sia(-2, .src0, .add_unaligned_size), ._, ._ },
99990102144 .{ .@"0:", .vp_, .xor, .tmp1x, .tmp1x, .tmp1x, ._ },
99991 .{ ._, .vp_w, .insr, .tmp1x, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0) },
102145 .{ ._, .vp_w, .insr, .tmp1x, .tmp1x, .memi(.src0w, .tmp0), .ui(0) },
99992102146 .{ ._, .v_ps, .cvtph2, .tmp1x, .tmp1q, ._, ._ },
99993102147 .{ ._, .v_, .cvttss2si, .tmp2q, .tmp1x, ._, ._ },
99994 .{ ._, ._, .mov, .memsia(.dst0d, .@"2", .tmp0, .add_unaligned_size), .tmp2d, ._, ._ },
99995 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
99996 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
102148 .{ ._, ._, .mov, .memsi(.dst0d, .@"2", .tmp0), .tmp2d, ._, ._ },
102149 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
102150 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
99997102151 } },
99998102152 }, .{
99999102153 .required_features = .{ .avx, null, null, null },
......@@ -100004,10 +102158,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
100004102158 },
100005102159 .call_frame = .{ .alignment = .@"16" },
100006102160 .extra_temps = .{
100007 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
100008 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
102161 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
102162 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
100009102163 .{ .type = .usize, .kind = .{ .extern_func = "__fixhfsi" } },
100010 .{ .type = .i32, .kind = .{ .reg = .eax } },
102164 .{ .type = .i32, .kind = .{ .ret_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
100011102165 .unused,
100012102166 .unused,
100013102167 .unused,
......@@ -100019,13 +102173,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
100019102173 .dst_temps = .{ .mem, .unused },
100020102174 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
100021102175 .each = .{ .once = &.{
100022 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
102176 .{ ._, ._, .mov, .tmp0d, .sia(-2, .src0, .add_unaligned_size), ._, ._ },
100023102177 .{ .@"0:", .vp_, .xor, .tmp1x, .tmp1x, .tmp1x, ._ },
100024 .{ ._, .vp_w, .insr, .tmp1x, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0) },
102178 .{ ._, .vp_w, .insr, .tmp1x, .tmp1x, .memi(.src0w, .tmp0), .ui(0) },
100025102179 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
100026 .{ ._, ._, .mov, .memsia(.dst0d, .@"2", .tmp0, .add_unaligned_size), .tmp3d, ._, ._ },
100027 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
100028 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
102180 .{ ._, ._, .mov, .memsi(.dst0d, .@"2", .tmp0), .tmp3d, ._, ._ },
102181 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
102182 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
100029102183 } },
100030102184 }, .{
100031102185 .required_features = .{ .avx, null, null, null },
......@@ -100036,10 +102190,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
100036102190 },
100037102191 .call_frame = .{ .alignment = .@"16" },
100038102192 .extra_temps = .{
100039 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
100040 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
102193 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
102194 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
100041102195 .{ .type = .usize, .kind = .{ .extern_func = "__fixunshfsi" } },
100042 .{ .type = .u32, .kind = .{ .reg = .eax } },
102196 .{ .type = .u32, .kind = .{ .ret_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
100043102197 .unused,
100044102198 .unused,
100045102199 .unused,
......@@ -100051,13 +102205,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
100051102205 .dst_temps = .{ .mem, .unused },
100052102206 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
100053102207 .each = .{ .once = &.{
100054 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
102208 .{ ._, ._, .mov, .tmp0d, .sia(-2, .src0, .add_unaligned_size), ._, ._ },
100055102209 .{ .@"0:", .vp_, .xor, .tmp1x, .tmp1x, .tmp1x, ._ },
100056 .{ ._, .vp_w, .insr, .tmp1x, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0) },
102210 .{ ._, .vp_w, .insr, .tmp1x, .tmp1x, .memi(.src0w, .tmp0), .ui(0) },
100057102211 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
100058 .{ ._, ._, .mov, .memsia(.dst0d, .@"2", .tmp0, .add_unaligned_size), .tmp3d, ._, ._ },
100059 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
100060 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
102212 .{ ._, ._, .mov, .memsi(.dst0d, .@"2", .tmp0), .tmp3d, ._, ._ },
102213 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
102214 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
100061102215 } },
100062102216 }, .{
100063102217 .required_features = .{ .sse2, null, null, null },
......@@ -100068,10 +102222,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
100068102222 },
100069102223 .call_frame = .{ .alignment = .@"16" },
100070102224 .extra_temps = .{
100071 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
100072 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
102225 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
102226 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
100073102227 .{ .type = .usize, .kind = .{ .extern_func = "__fixhfsi" } },
100074 .{ .type = .i32, .kind = .{ .reg = .eax } },
102228 .{ .type = .i32, .kind = .{ .ret_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
100075102229 .unused,
100076102230 .unused,
100077102231 .unused,
......@@ -100083,13 +102237,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
100083102237 .dst_temps = .{ .mem, .unused },
100084102238 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
100085102239 .each = .{ .once = &.{
100086 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
102240 .{ ._, ._, .mov, .tmp0d, .sia(-2, .src0, .add_unaligned_size), ._, ._ },
100087102241 .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ },
100088 .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0), ._ },
102242 .{ ._, .p_w, .insr, .tmp1x, .memi(.src0w, .tmp0), .ui(0), ._ },
100089102243 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
100090 .{ ._, ._, .mov, .memsia(.dst0d, .@"2", .tmp0, .add_unaligned_size), .tmp3d, ._, ._ },
100091 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
100092 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
102244 .{ ._, ._, .mov, .memsi(.dst0d, .@"2", .tmp0), .tmp3d, ._, ._ },
102245 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
102246 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
100093102247 } },
100094102248 }, .{
100095102249 .required_features = .{ .sse2, null, null, null },
......@@ -100100,10 +102254,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
100100102254 },
100101102255 .call_frame = .{ .alignment = .@"16" },
100102102256 .extra_temps = .{
100103 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
100104 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
102257 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
102258 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
100105102259 .{ .type = .usize, .kind = .{ .extern_func = "__fixunshfsi" } },
100106 .{ .type = .u32, .kind = .{ .reg = .eax } },
102260 .{ .type = .u32, .kind = .{ .ret_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
100107102261 .unused,
100108102262 .unused,
100109102263 .unused,
......@@ -100115,13 +102269,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
100115102269 .dst_temps = .{ .mem, .unused },
100116102270 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
100117102271 .each = .{ .once = &.{
100118 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
102272 .{ ._, ._, .mov, .tmp0d, .sia(-2, .src0, .add_unaligned_size), ._, ._ },
100119102273 .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ },
100120 .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0), ._ },
102274 .{ ._, .p_w, .insr, .tmp1x, .memi(.src0w, .tmp0), .ui(0), ._ },
100121102275 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
100122 .{ ._, ._, .mov, .memsia(.dst0d, .@"2", .tmp0, .add_unaligned_size), .tmp3d, ._, ._ },
100123 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
100124 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
102276 .{ ._, ._, .mov, .memsi(.dst0d, .@"2", .tmp0), .tmp3d, ._, ._ },
102277 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
102278 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
100125102279 } },
100126102280 }, .{
100127102281 .required_features = .{ .sse, null, null, null },
......@@ -100132,10 +102286,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
100132102286 },
100133102287 .call_frame = .{ .alignment = .@"16" },
100134102288 .extra_temps = .{
100135 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
100136 .{ .type = .i32, .kind = .{ .reg = .eax } },
102289 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
102290 .{ .type = .i32, .kind = .{ .ret_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
100137102291 .{ .type = .f32, .kind = .mem },
100138 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
102292 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
100139102293 .{ .type = .usize, .kind = .{ .extern_func = "__fixhfsi" } },
100140102294 .unused,
100141102295 .unused,
......@@ -100147,14 +102301,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
100147102301 .dst_temps = .{ .mem, .unused },
100148102302 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
100149102303 .each = .{ .once = &.{
100150 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
100151 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
102304 .{ ._, ._, .mov, .tmp0d, .sia(-2, .src0, .add_unaligned_size), ._, ._ },
102305 .{ .@"0:", ._, .movzx, .tmp1d, .memi(.src0w, .tmp0), ._, ._ },
100152102306 .{ ._, ._, .mov, .tmp2d, .tmp1d, ._, ._ },
100153102307 .{ ._, ._ss, .mov, .tmp3x, .tmp2d, ._, ._ },
100154102308 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
100155 .{ ._, ._, .mov, .memsia(.dst0d, .@"2", .tmp0, .add_unaligned_size), .tmp1d, ._, ._ },
100156 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
100157 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
102309 .{ ._, ._, .mov, .memsi(.dst0d, .@"2", .tmp0), .tmp1d, ._, ._ },
102310 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
102311 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
100158102312 } },
100159102313 }, .{
100160102314 .required_features = .{ .sse, null, null, null },
......@@ -100165,10 +102319,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
100165102319 },
100166102320 .call_frame = .{ .alignment = .@"16" },
100167102321 .extra_temps = .{
100168 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
100169 .{ .type = .u32, .kind = .{ .reg = .eax } },
102322 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
102323 .{ .type = .u32, .kind = .{ .ret_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
100170102324 .{ .type = .f32, .kind = .mem },
100171 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
102325 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
100172102326 .{ .type = .usize, .kind = .{ .extern_func = "__fixunshfsi" } },
100173102327 .unused,
100174102328 .unused,
......@@ -100180,14 +102334,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
100180102334 .dst_temps = .{ .mem, .unused },
100181102335 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
100182102336 .each = .{ .once = &.{
100183 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
100184 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
102337 .{ ._, ._, .mov, .tmp0d, .sia(-2, .src0, .add_unaligned_size), ._, ._ },
102338 .{ .@"0:", ._, .movzx, .tmp1d, .memi(.src0w, .tmp0), ._, ._ },
100185102339 .{ ._, ._, .mov, .tmp2d, .tmp1d, ._, ._ },
100186102340 .{ ._, ._ss, .mov, .tmp3x, .tmp2d, ._, ._ },
100187102341 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
100188 .{ ._, ._, .mov, .memsia(.dst0d, .@"2", .tmp0, .add_unaligned_size), .tmp1d, ._, ._ },
100189 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
100190 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
102342 .{ ._, ._, .mov, .memsi(.dst0d, .@"2", .tmp0), .tmp1d, ._, ._ },
102343 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
102344 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
100191102345 } },
100192102346 }, .{
100193102347 .required_features = .{ .@"64bit", .f16c, null, null },
......@@ -100197,7 +102351,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
100197102351 .{ .src = .{ .to_mem, .none, .none } },
100198102352 },
100199102353 .extra_temps = .{
100200 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
102354 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
100201102355 .{ .type = .f32, .kind = .{ .rc = .sse } },
100202102356 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
100203102357 .unused,
......@@ -100212,14 +102366,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
100212102366 .dst_temps = .{ .mem, .unused },
100213102367 .clobbers = .{ .eflags = true },
100214102368 .each = .{ .once = &.{
100215 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
102369 .{ ._, ._, .mov, .tmp0d, .sia(-2, .src0, .add_unaligned_size), ._, ._ },
100216102370 .{ .@"0:", .vp_, .xor, .tmp1x, .tmp1x, .tmp1x, ._ },
100217 .{ ._, .vp_w, .insr, .tmp1x, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0) },
102371 .{ ._, .vp_w, .insr, .tmp1x, .tmp1x, .memi(.src0w, .tmp0), .ui(0) },
100218102372 .{ ._, .v_ps, .cvtph2, .tmp1x, .tmp1q, ._, ._ },
100219102373 .{ ._, .v_, .cvttss2si, .tmp2q, .tmp1x, ._, ._ },
100220 .{ ._, ._, .mov, .memsia(.dst0q, .@"4", .tmp0, .add_unaligned_size), .tmp2q, ._, ._ },
100221 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
100222 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
102374 .{ ._, ._, .mov, .memsi(.dst0q, .@"4", .tmp0), .tmp2q, ._, ._ },
102375 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
102376 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
100223102377 } },
100224102378 }, .{
100225102379 .required_features = .{ .avx, null, null, null },
......@@ -100230,10 +102384,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
100230102384 },
100231102385 .call_frame = .{ .alignment = .@"16" },
100232102386 .extra_temps = .{
100233 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
100234 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
102387 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
102388 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
100235102389 .{ .type = .usize, .kind = .{ .extern_func = "__fixhfdi" } },
100236 .{ .type = .i64, .kind = .{ .reg = .rax } },
102390 .{ .type = .i64, .kind = .{ .ret_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
100237102391 .unused,
100238102392 .unused,
100239102393 .unused,
......@@ -100245,13 +102399,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
100245102399 .dst_temps = .{ .mem, .unused },
100246102400 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
100247102401 .each = .{ .once = &.{
100248 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
102402 .{ ._, ._, .mov, .tmp0d, .sia(-2, .src0, .add_unaligned_size), ._, ._ },
100249102403 .{ .@"0:", .vp_, .xor, .tmp1x, .tmp1x, .tmp1x, ._ },
100250 .{ ._, .vp_w, .insr, .tmp1x, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0) },
102404 .{ ._, .vp_w, .insr, .tmp1x, .tmp1x, .memi(.src0w, .tmp0), .ui(0) },
100251102405 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
100252 .{ ._, ._, .mov, .memsia(.dst0q, .@"4", .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },
100253 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
100254 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
102406 .{ ._, ._, .mov, .memsi(.dst0q, .@"4", .tmp0), .tmp3q, ._, ._ },
102407 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
102408 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
100255102409 } },
100256102410 }, .{
100257102411 .required_features = .{ .avx, null, null, null },
......@@ -100262,10 +102416,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
100262102416 },
100263102417 .call_frame = .{ .alignment = .@"16" },
100264102418 .extra_temps = .{
100265 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
100266 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
102419 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
102420 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
100267102421 .{ .type = .usize, .kind = .{ .extern_func = "__fixunshfdi" } },
100268 .{ .type = .u64, .kind = .{ .reg = .rax } },
102422 .{ .type = .u64, .kind = .{ .ret_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
100269102423 .unused,
100270102424 .unused,
100271102425 .unused,
......@@ -100277,13 +102431,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
100277102431 .dst_temps = .{ .mem, .unused },
100278102432 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
100279102433 .each = .{ .once = &.{
100280 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
102434 .{ ._, ._, .mov, .tmp0d, .sia(-2, .src0, .add_unaligned_size), ._, ._ },
100281102435 .{ .@"0:", .vp_, .xor, .tmp1x, .tmp1x, .tmp1x, ._ },
100282 .{ ._, .vp_w, .insr, .tmp1x, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0) },
102436 .{ ._, .vp_w, .insr, .tmp1x, .tmp1x, .memi(.src0w, .tmp0), .ui(0) },
100283102437 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
100284 .{ ._, ._, .mov, .memsia(.dst0q, .@"4", .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },
100285 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
100286 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
102438 .{ ._, ._, .mov, .memsi(.dst0q, .@"4", .tmp0), .tmp3q, ._, ._ },
102439 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
102440 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
100287102441 } },
100288102442 }, .{
100289102443 .required_features = .{ .sse2, null, null, null },
......@@ -100294,10 +102448,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
100294102448 },
100295102449 .call_frame = .{ .alignment = .@"16" },
100296102450 .extra_temps = .{
100297 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
100298 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
102451 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
102452 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
100299102453 .{ .type = .usize, .kind = .{ .extern_func = "__fixhfdi" } },
100300 .{ .type = .i64, .kind = .{ .reg = .rax } },
102454 .{ .type = .u64, .kind = .{ .ret_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
100301102455 .unused,
100302102456 .unused,
100303102457 .unused,
......@@ -100309,13 +102463,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
100309102463 .dst_temps = .{ .mem, .unused },
100310102464 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
100311102465 .each = .{ .once = &.{
100312 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
102466 .{ ._, ._, .mov, .tmp0d, .sia(-2, .src0, .add_unaligned_size), ._, ._ },
100313102467 .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ },
100314 .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0), ._ },
102468 .{ ._, .p_w, .insr, .tmp1x, .memi(.src0w, .tmp0), .ui(0), ._ },
100315102469 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
100316 .{ ._, ._, .mov, .memsia(.dst0q, .@"4", .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },
100317 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
100318 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
102470 .{ ._, ._, .mov, .memsi(.dst0q, .@"4", .tmp0), .tmp3q, ._, ._ },
102471 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
102472 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
100319102473 } },
100320102474 }, .{
100321102475 .required_features = .{ .sse2, null, null, null },
......@@ -100326,10 +102480,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
100326102480 },
100327102481 .call_frame = .{ .alignment = .@"16" },
100328102482 .extra_temps = .{
100329 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
100330 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
102483 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
102484 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
100331102485 .{ .type = .usize, .kind = .{ .extern_func = "__fixunshfdi" } },
100332 .{ .type = .u64, .kind = .{ .reg = .rax } },
102486 .{ .type = .u64, .kind = .{ .ret_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
100333102487 .unused,
100334102488 .unused,
100335102489 .unused,
......@@ -100341,13 +102495,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
100341102495 .dst_temps = .{ .mem, .unused },
100342102496 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
100343102497 .each = .{ .once = &.{
100344 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
102498 .{ ._, ._, .mov, .tmp0d, .sia(-2, .src0, .add_unaligned_size), ._, ._ },
100345102499 .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ },
100346 .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0), ._ },
102500 .{ ._, .p_w, .insr, .tmp1x, .memi(.src0w, .tmp0), .ui(0), ._ },
100347102501 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
100348 .{ ._, ._, .mov, .memsia(.dst0q, .@"4", .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },
100349 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
100350 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
102502 .{ ._, ._, .mov, .memsi(.dst0q, .@"4", .tmp0), .tmp3q, ._, ._ },
102503 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
102504 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
100351102505 } },
100352102506 }, .{
100353102507 .required_features = .{ .sse, null, null, null },
......@@ -100358,10 +102512,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
100358102512 },
100359102513 .call_frame = .{ .alignment = .@"16" },
100360102514 .extra_temps = .{
100361 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
100362 .{ .type = .i64, .kind = .{ .reg = .rax } },
102515 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
102516 .{ .type = .i64, .kind = .{ .ret_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
100363102517 .{ .type = .f32, .kind = .mem },
100364 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
102518 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
100365102519 .{ .type = .usize, .kind = .{ .extern_func = "__fixhfdi" } },
100366102520 .unused,
100367102521 .unused,
......@@ -100373,14 +102527,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
100373102527 .dst_temps = .{ .mem, .unused },
100374102528 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
100375102529 .each = .{ .once = &.{
100376 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
100377 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
102530 .{ ._, ._, .mov, .tmp0d, .sia(-2, .src0, .add_unaligned_size), ._, ._ },
102531 .{ .@"0:", ._, .movzx, .tmp1d, .memi(.src0w, .tmp0), ._, ._ },
100378102532 .{ ._, ._, .mov, .tmp2d, .tmp1d, ._, ._ },
100379102533 .{ ._, ._ss, .mov, .tmp3x, .tmp2d, ._, ._ },
100380102534 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
100381 .{ ._, ._, .mov, .memsia(.dst0q, .@"4", .tmp0, .add_unaligned_size), .tmp1q, ._, ._ },
100382 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
100383 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
102535 .{ ._, ._, .mov, .memsi(.dst0q, .@"4", .tmp0), .tmp1q, ._, ._ },
102536 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
102537 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
100384102538 } },
100385102539 }, .{
100386102540 .required_features = .{ .sse, null, null, null },
......@@ -100391,10 +102545,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
100391102545 },
100392102546 .call_frame = .{ .alignment = .@"16" },
100393102547 .extra_temps = .{
100394 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
100395 .{ .type = .u64, .kind = .{ .reg = .rax } },
102548 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
102549 .{ .type = .f32, .kind = .{ .ret_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
100396102550 .{ .type = .f32, .kind = .mem },
100397 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
102551 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
100398102552 .{ .type = .usize, .kind = .{ .extern_func = "__fixunshfdi" } },
100399102553 .unused,
100400102554 .unused,
......@@ -100406,16 +102560,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
100406102560 .dst_temps = .{ .mem, .unused },
100407102561 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
100408102562 .each = .{ .once = &.{
100409 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
100410 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
102563 .{ ._, ._, .mov, .tmp0d, .sia(-2, .src0, .add_unaligned_size), ._, ._ },
102564 .{ .@"0:", ._, .movzx, .tmp1d, .memi(.src0w, .tmp0), ._, ._ },
100411102565 .{ ._, ._, .mov, .tmp2d, .tmp1d, ._, ._ },
100412102566 .{ ._, ._ss, .mov, .tmp3x, .tmp2d, ._, ._ },
100413102567 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
100414 .{ ._, ._, .mov, .memsia(.dst0q, .@"4", .tmp0, .add_unaligned_size), .tmp1q, ._, ._ },
100415 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
100416 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
102568 .{ ._, ._, .mov, .memsi(.dst0q, .@"4", .tmp0), .tmp1q, ._, ._ },
102569 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
102570 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
100417102571 } },
100418102572 }, .{
102573 .required_cc_abi = .sysv64,
100419102574 .required_features = .{ .avx, null, null, null },
100420102575 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any },
100421102576 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any },
......@@ -100424,11 +102579,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
100424102579 },
100425102580 .call_frame = .{ .alignment = .@"16" },
100426102581 .extra_temps = .{
100427 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
100428 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
102582 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
102583 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
100429102584 .{ .type = .usize, .kind = .{ .extern_func = "__fixhfti" } },
100430 .{ .type = .u64, .kind = .{ .reg = .rax } },
100431 .{ .type = .i64, .kind = .{ .reg = .rdx } },
102585 .{ .type = .i128, .kind = .{ .ret_gpr_pair = .{ .cc = .ccc, .after = 0, .at = 0 } } },
102586 .unused,
100432102587 .unused,
100433102588 .unused,
100434102589 .unused,
......@@ -100439,16 +102594,50 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
100439102594 .dst_temps = .{ .mem, .unused },
100440102595 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
100441102596 .each = .{ .once = &.{
100442 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
102597 .{ ._, ._, .mov, .tmp0d, .sia(-2, .src0, .add_unaligned_size), ._, ._ },
100443102598 .{ .@"0:", .vp_, .xor, .tmp1x, .tmp1x, .tmp1x, ._ },
100444 .{ ._, .vp_w, .insr, .tmp1x, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0) },
102599 .{ ._, .vp_w, .insr, .tmp1x, .tmp1x, .memi(.src0w, .tmp0), .ui(0) },
100445102600 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
100446 .{ ._, ._, .mov, .memsia(.dst0q, .@"8", .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },
100447 .{ ._, ._, .mov, .memsiad(.dst0q, .@"8", .tmp0, .add_unaligned_size, 8), .tmp4q, ._, ._ },
100448 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
100449 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
102601 .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp3q0, ._, ._ },
102602 .{ ._, ._, .mov, .memsid(.dst0q, .@"8", .tmp0, 8), .tmp3q1, ._, ._ },
102603 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
102604 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
100450102605 } },
100451102606 }, .{
102607 .required_cc_abi = .win64,
102608 .required_features = .{ .avx, null, null, null },
102609 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any },
102610 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any },
102611 .patterns = &.{
102612 .{ .src = .{ .to_mem, .none, .none } },
102613 },
102614 .call_frame = .{ .alignment = .@"16" },
102615 .extra_temps = .{
102616 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
102617 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
102618 .{ .type = .usize, .kind = .{ .extern_func = "__fixhfti" } },
102619 .unused,
102620 .unused,
102621 .unused,
102622 .unused,
102623 .unused,
102624 .unused,
102625 .unused,
102626 .unused,
102627 },
102628 .dst_temps = .{ .mem, .unused },
102629 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
102630 .each = .{ .once = &.{
102631 .{ ._, ._, .mov, .tmp0d, .sia(-2, .src0, .add_unaligned_size), ._, ._ },
102632 .{ .@"0:", .vp_, .xor, .tmp1x, .tmp1x, .tmp1x, ._ },
102633 .{ ._, .vp_w, .insr, .tmp1x, .tmp1x, .memi(.src0w, .tmp0), .ui(0) },
102634 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
102635 .{ ._, .v_dqa, .mov, .memsi(.dst0x, .@"8", .tmp0), .tmp1x, ._, ._ },
102636 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
102637 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
102638 } },
102639 }, .{
102640 .required_cc_abi = .sysv64,
100452102641 .required_features = .{ .avx, null, null, null },
100453102642 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any },
100454102643 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any },
......@@ -100457,11 +102646,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
100457102646 },
100458102647 .call_frame = .{ .alignment = .@"16" },
100459102648 .extra_temps = .{
100460 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
100461 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
102649 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
102650 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
100462102651 .{ .type = .usize, .kind = .{ .extern_func = "__fixunshfti" } },
100463 .{ .type = .u64, .kind = .{ .reg = .rax } },
100464 .{ .type = .u64, .kind = .{ .reg = .rdx } },
102652 .{ .type = .u128, .kind = .{ .ret_gpr_pair = .{ .cc = .ccc, .after = 0, .at = 0 } } },
102653 .unused,
100465102654 .unused,
100466102655 .unused,
100467102656 .unused,
......@@ -100472,16 +102661,50 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
100472102661 .dst_temps = .{ .mem, .unused },
100473102662 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
100474102663 .each = .{ .once = &.{
100475 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
102664 .{ ._, ._, .mov, .tmp0d, .sia(-2, .src0, .add_unaligned_size), ._, ._ },
100476102665 .{ .@"0:", .vp_, .xor, .tmp1x, .tmp1x, .tmp1x, ._ },
100477 .{ ._, .vp_w, .insr, .tmp1x, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0) },
102666 .{ ._, .vp_w, .insr, .tmp1x, .tmp1x, .memi(.src0w, .tmp0), .ui(0) },
100478102667 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
100479 .{ ._, ._, .mov, .memsia(.dst0q, .@"8", .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },
100480 .{ ._, ._, .mov, .memsiad(.dst0q, .@"8", .tmp0, .add_unaligned_size, 8), .tmp4q, ._, ._ },
100481 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
100482 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
102668 .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp3q0, ._, ._ },
102669 .{ ._, ._, .mov, .memsid(.dst0q, .@"8", .tmp0, 8), .tmp3q1, ._, ._ },
102670 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
102671 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
100483102672 } },
100484102673 }, .{
102674 .required_cc_abi = .win64,
102675 .required_features = .{ .avx, null, null, null },
102676 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any },
102677 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any },
102678 .patterns = &.{
102679 .{ .src = .{ .to_mem, .none, .none } },
102680 },
102681 .call_frame = .{ .alignment = .@"16" },
102682 .extra_temps = .{
102683 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
102684 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
102685 .{ .type = .usize, .kind = .{ .extern_func = "__fixunshfti" } },
102686 .unused,
102687 .unused,
102688 .unused,
102689 .unused,
102690 .unused,
102691 .unused,
102692 .unused,
102693 .unused,
102694 },
102695 .dst_temps = .{ .mem, .unused },
102696 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
102697 .each = .{ .once = &.{
102698 .{ ._, ._, .mov, .tmp0d, .sia(-2, .src0, .add_unaligned_size), ._, ._ },
102699 .{ .@"0:", .vp_, .xor, .tmp1x, .tmp1x, .tmp1x, ._ },
102700 .{ ._, .vp_w, .insr, .tmp1x, .tmp1x, .memi(.src0w, .tmp0), .ui(0) },
102701 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
102702 .{ ._, .v_dqa, .mov, .memsi(.dst0x, .@"8", .tmp0), .tmp1x, ._, ._ },
102703 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
102704 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
102705 } },
102706 }, .{
102707 .required_cc_abi = .sysv64,
100485102708 .required_features = .{ .sse2, null, null, null },
100486102709 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any },
100487102710 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any },
......@@ -100490,11 +102713,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
100490102713 },
100491102714 .call_frame = .{ .alignment = .@"16" },
100492102715 .extra_temps = .{
100493 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
100494 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
102716 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
102717 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
100495102718 .{ .type = .usize, .kind = .{ .extern_func = "__fixhfti" } },
100496 .{ .type = .u64, .kind = .{ .reg = .rax } },
100497 .{ .type = .i64, .kind = .{ .reg = .rdx } },
102719 .{ .type = .i128, .kind = .{ .ret_gpr_pair = .{ .cc = .ccc, .after = 0, .at = 0 } } },
102720 .unused,
100498102721 .unused,
100499102722 .unused,
100500102723 .unused,
......@@ -100505,16 +102728,50 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
100505102728 .dst_temps = .{ .mem, .unused },
100506102729 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
100507102730 .each = .{ .once = &.{
100508 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
102731 .{ ._, ._, .mov, .tmp0d, .sia(-2, .src0, .add_unaligned_size), ._, ._ },
100509102732 .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ },
100510 .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0), ._ },
102733 .{ ._, .p_w, .insr, .tmp1x, .memi(.src0w, .tmp0), .ui(0), ._ },
100511102734 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
100512 .{ ._, ._, .mov, .memsia(.dst0q, .@"8", .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },
100513 .{ ._, ._, .mov, .memsiad(.dst0q, .@"8", .tmp0, .add_unaligned_size, 8), .tmp4q, ._, ._ },
100514 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
100515 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
102735 .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp3q0, ._, ._ },
102736 .{ ._, ._, .mov, .memsid(.dst0q, .@"8", .tmp0, 8), .tmp3q1, ._, ._ },
102737 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
102738 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
100516102739 } },
100517102740 }, .{
102741 .required_cc_abi = .win64,
102742 .required_features = .{ .sse2, null, null, null },
102743 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any },
102744 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any },
102745 .patterns = &.{
102746 .{ .src = .{ .to_mem, .none, .none } },
102747 },
102748 .call_frame = .{ .alignment = .@"16" },
102749 .extra_temps = .{
102750 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
102751 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
102752 .{ .type = .usize, .kind = .{ .extern_func = "__fixhfti" } },
102753 .unused,
102754 .unused,
102755 .unused,
102756 .unused,
102757 .unused,
102758 .unused,
102759 .unused,
102760 .unused,
102761 },
102762 .dst_temps = .{ .mem, .unused },
102763 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
102764 .each = .{ .once = &.{
102765 .{ ._, ._, .mov, .tmp0d, .sia(-2, .src0, .add_unaligned_size), ._, ._ },
102766 .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ },
102767 .{ ._, .p_w, .insr, .tmp1x, .memi(.src0w, .tmp0), .ui(0), ._ },
102768 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
102769 .{ ._, ._dqa, .mov, .memsi(.dst0x, .@"8", .tmp0), .tmp1x, ._, ._ },
102770 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
102771 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
102772 } },
102773 }, .{
102774 .required_cc_abi = .sysv64,
100518102775 .required_features = .{ .sse2, null, null, null },
100519102776 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any },
100520102777 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any },
......@@ -100523,11 +102780,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
100523102780 },
100524102781 .call_frame = .{ .alignment = .@"16" },
100525102782 .extra_temps = .{
100526 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
100527 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
102783 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
102784 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
100528102785 .{ .type = .usize, .kind = .{ .extern_func = "__fixunshfti" } },
100529 .{ .type = .u64, .kind = .{ .reg = .rax } },
100530 .{ .type = .u64, .kind = .{ .reg = .rdx } },
102786 .{ .type = .u128, .kind = .{ .ret_gpr_pair = .{ .cc = .ccc, .after = 0, .at = 0 } } },
102787 .unused,
100531102788 .unused,
100532102789 .unused,
100533102790 .unused,
......@@ -100538,16 +102795,50 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
100538102795 .dst_temps = .{ .mem, .unused },
100539102796 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
100540102797 .each = .{ .once = &.{
100541 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
102798 .{ ._, ._, .mov, .tmp0d, .sia(-2, .src0, .add_unaligned_size), ._, ._ },
100542102799 .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ },
100543 .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0), ._ },
102800 .{ ._, .p_w, .insr, .tmp1x, .memi(.src0w, .tmp0), .ui(0), ._ },
100544102801 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
100545 .{ ._, ._, .mov, .memsia(.dst0q, .@"8", .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },
100546 .{ ._, ._, .mov, .memsiad(.dst0q, .@"8", .tmp0, .add_unaligned_size, 8), .tmp4q, ._, ._ },
100547 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
100548 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
102802 .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp3q0, ._, ._ },
102803 .{ ._, ._, .mov, .memsid(.dst0q, .@"8", .tmp0, 8), .tmp3q1, ._, ._ },
102804 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
102805 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
102806 } },
102807 }, .{
102808 .required_cc_abi = .win64,
102809 .required_features = .{ .sse2, null, null, null },
102810 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any },
102811 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any },
102812 .patterns = &.{
102813 .{ .src = .{ .to_mem, .none, .none } },
102814 },
102815 .call_frame = .{ .alignment = .@"16" },
102816 .extra_temps = .{
102817 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
102818 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
102819 .{ .type = .usize, .kind = .{ .extern_func = "__fixunshfti" } },
102820 .unused,
102821 .unused,
102822 .unused,
102823 .unused,
102824 .unused,
102825 .unused,
102826 .unused,
102827 .unused,
102828 },
102829 .dst_temps = .{ .mem, .unused },
102830 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
102831 .each = .{ .once = &.{
102832 .{ ._, ._, .mov, .tmp0d, .sia(-2, .src0, .add_unaligned_size), ._, ._ },
102833 .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ },
102834 .{ ._, .p_w, .insr, .tmp1x, .memi(.src0w, .tmp0), .ui(0), ._ },
102835 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
102836 .{ ._, ._dqa, .mov, .memsi(.dst0x, .@"8", .tmp0), .tmp1x, ._, ._ },
102837 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
102838 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
100549102839 } },
100550102840 }, .{
102841 .required_cc_abi = .sysv64,
100551102842 .required_features = .{ .sse, null, null, null },
100552102843 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any },
100553102844 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any },
......@@ -100556,12 +102847,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
100556102847 },
100557102848 .call_frame = .{ .alignment = .@"16" },
100558102849 .extra_temps = .{
100559 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
100560 .{ .type = .u64, .kind = .{ .reg = .rax } },
102850 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
102851 .{ .type = .i128, .kind = .{ .ret_gpr_pair = .{ .cc = .ccc, .after = 0, .at = 0 } } },
100561102852 .{ .type = .f32, .kind = .mem },
100562 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
102853 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
100563102854 .{ .type = .usize, .kind = .{ .extern_func = "__fixhfti" } },
100564 .{ .type = .i64, .kind = .{ .reg = .rdx } },
102855 .unused,
100565102856 .unused,
100566102857 .unused,
100567102858 .unused,
......@@ -100571,17 +102862,52 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
100571102862 .dst_temps = .{ .mem, .unused },
100572102863 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
100573102864 .each = .{ .once = &.{
100574 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
100575 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
102865 .{ ._, ._, .mov, .tmp0d, .sia(-2, .src0, .add_unaligned_size), ._, ._ },
102866 .{ .@"0:", ._, .movzx, .tmp1d0, .memi(.src0w, .tmp0), ._, ._ },
102867 .{ ._, ._, .mov, .tmp2d, .tmp1d0, ._, ._ },
102868 .{ ._, ._ss, .mov, .tmp3x, .tmp2d, ._, ._ },
102869 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
102870 .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp1q0, ._, ._ },
102871 .{ ._, ._, .mov, .memsid(.dst0q, .@"8", .tmp0, 8), .tmp1q1, ._, ._ },
102872 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
102873 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
102874 } },
102875 }, .{
102876 .required_cc_abi = .win64,
102877 .required_features = .{ .sse, null, null, null },
102878 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any },
102879 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any },
102880 .patterns = &.{
102881 .{ .src = .{ .to_mem, .none, .none } },
102882 },
102883 .call_frame = .{ .alignment = .@"16" },
102884 .extra_temps = .{
102885 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
102886 .{ .type = .f16, .kind = .{ .ret_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
102887 .{ .type = .f32, .kind = .mem },
102888 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
102889 .{ .type = .usize, .kind = .{ .extern_func = "__fixhfti" } },
102890 .unused,
102891 .unused,
102892 .unused,
102893 .unused,
102894 .unused,
102895 .unused,
102896 },
102897 .dst_temps = .{ .mem, .unused },
102898 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
102899 .each = .{ .once = &.{
102900 .{ ._, ._, .mov, .tmp0d, .sia(-2, .src0, .add_unaligned_size), ._, ._ },
102901 .{ .@"0:", ._, .movzx, .tmp1d, .memi(.src0w, .tmp0), ._, ._ },
100576102902 .{ ._, ._, .mov, .tmp2d, .tmp1d, ._, ._ },
100577102903 .{ ._, ._ss, .mov, .tmp3x, .tmp2d, ._, ._ },
100578102904 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
100579 .{ ._, ._, .mov, .memsia(.dst0q, .@"8", .tmp0, .add_unaligned_size), .tmp1q, ._, ._ },
100580 .{ ._, ._, .mov, .memsiad(.dst0q, .@"8", .tmp0, .add_unaligned_size, 8), .tmp5q, ._, ._ },
100581 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
100582 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
102905 .{ ._, ._ps, .mova, .memsi(.dst0x, .@"8", .tmp0), .tmp3x, ._, ._ },
102906 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
102907 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
100583102908 } },
100584102909 }, .{
102910 .required_cc_abi = .sysv64,
100585102911 .required_features = .{ .sse, null, null, null },
100586102912 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any },
100587102913 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any },
......@@ -100590,12 +102916,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
100590102916 },
100591102917 .call_frame = .{ .alignment = .@"16" },
100592102918 .extra_temps = .{
100593 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
100594 .{ .type = .u64, .kind = .{ .reg = .rax } },
102919 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
102920 .{ .type = .i128, .kind = .{ .ret_gpr_pair = .{ .cc = .ccc, .after = 0, .at = 0 } } },
100595102921 .{ .type = .f32, .kind = .mem },
100596 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
102922 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
100597102923 .{ .type = .usize, .kind = .{ .extern_func = "__fixunshfti" } },
100598 .{ .type = .u64, .kind = .{ .reg = .rdx } },
102924 .unused,
100599102925 .unused,
100600102926 .unused,
100601102927 .unused,
......@@ -100605,15 +102931,49 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
100605102931 .dst_temps = .{ .mem, .unused },
100606102932 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
100607102933 .each = .{ .once = &.{
100608 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
100609 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
102934 .{ ._, ._, .mov, .tmp0d, .sia(-2, .src0, .add_unaligned_size), ._, ._ },
102935 .{ .@"0:", ._, .movzx, .tmp1d0, .memi(.src0w, .tmp0), ._, ._ },
102936 .{ ._, ._, .mov, .tmp2d, .tmp1d0, ._, ._ },
102937 .{ ._, ._ss, .mov, .tmp3x, .tmp2d, ._, ._ },
102938 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
102939 .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp1q0, ._, ._ },
102940 .{ ._, ._, .mov, .memsid(.dst0q, .@"8", .tmp0, 8), .tmp1q1, ._, ._ },
102941 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
102942 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
102943 } },
102944 }, .{
102945 .required_cc_abi = .win64,
102946 .required_features = .{ .sse, null, null, null },
102947 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any },
102948 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any },
102949 .patterns = &.{
102950 .{ .src = .{ .to_mem, .none, .none } },
102951 },
102952 .call_frame = .{ .alignment = .@"16" },
102953 .extra_temps = .{
102954 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
102955 .{ .type = .f16, .kind = .{ .ret_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
102956 .{ .type = .f32, .kind = .mem },
102957 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
102958 .{ .type = .usize, .kind = .{ .extern_func = "__fixunshfti" } },
102959 .unused,
102960 .unused,
102961 .unused,
102962 .unused,
102963 .unused,
102964 .unused,
102965 },
102966 .dst_temps = .{ .mem, .unused },
102967 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
102968 .each = .{ .once = &.{
102969 .{ ._, ._, .mov, .tmp0d, .sia(-2, .src0, .add_unaligned_size), ._, ._ },
102970 .{ .@"0:", ._, .movzx, .tmp1d, .memi(.src0w, .tmp0), ._, ._ },
100610102971 .{ ._, ._, .mov, .tmp2d, .tmp1d, ._, ._ },
100611102972 .{ ._, ._ss, .mov, .tmp3x, .tmp2d, ._, ._ },
100612102973 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
100613 .{ ._, ._, .mov, .memsia(.dst0q, .@"8", .tmp0, .add_unaligned_size), .tmp1q, ._, ._ },
100614 .{ ._, ._, .mov, .memsiad(.dst0q, .@"8", .tmp0, .add_unaligned_size, 8), .tmp5q, ._, ._ },
100615 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
100616 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
102974 .{ ._, ._ps, .mova, .memsi(.dst0x, .@"8", .tmp0), .tmp3x, ._, ._ },
102975 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
102976 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
100617102977 } },
100618102978 }, .{
100619102979 .required_features = .{ .@"64bit", .avx, null, null },
......@@ -100624,11 +102984,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
100624102984 },
100625102985 .call_frame = .{ .alignment = .@"16" },
100626102986 .extra_temps = .{
100627 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
102987 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
100628102988 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
100629 .{ .type = .usize, .kind = .{ .reg = .rdi } },
100630 .{ .type = .usize, .kind = .{ .reg = .rsi } },
100631 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
102989 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
102990 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
102991 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 2 } } },
100632102992 .{ .type = .usize, .kind = .{ .extern_func = "__fixhfei" } },
100633102993 .unused,
100634102994 .unused,
......@@ -100639,16 +102999,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
100639102999 .dst_temps = .{ .mem, .unused },
100640103000 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
100641103001 .each = .{ .once = &.{
100642 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
100643 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
103002 .{ ._, ._, .mov, .tmp0d, .sia(-2, .src0, .add_unaligned_size), ._, ._ },
103003 .{ ._, ._, .lea, .tmp1p, .mema(.dst0, .add_unaligned_size_sub_elem_size), ._, ._ },
100644103004 .{ .@"0:", .v_ps, .xor, .tmp4x, .tmp4x, .tmp4x, ._ },
100645103005 .{ ._, ._, .mov, .tmp2p, .tmp1p, ._, ._ },
100646103006 .{ ._, ._, .mov, .tmp3d, .sa(.dst0, .add_bit_size), ._, ._ },
100647 .{ ._, .vp_w, .insr, .tmp4x, .tmp4x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0) },
103007 .{ ._, .vp_w, .insr, .tmp4x, .tmp4x, .memi(.src0w, .tmp0), .ui(0) },
100648103008 .{ ._, ._, .call, .tmp5d, ._, ._, ._ },
100649 .{ ._, ._, .lea, .tmp1p, .leaa(.tmp1, .add_dst0_elem_size), ._, ._ },
100650 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
100651 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
103009 .{ ._, ._, .lea, .tmp1p, .leaa(.tmp1, .sub_dst0_elem_size), ._, ._ },
103010 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
103011 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
100652103012 } },
100653103013 }, .{
100654103014 .required_features = .{ .@"64bit", .avx, null, null },
......@@ -100659,11 +103019,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
100659103019 },
100660103020 .call_frame = .{ .alignment = .@"16" },
100661103021 .extra_temps = .{
100662 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
103022 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
100663103023 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
100664 .{ .type = .usize, .kind = .{ .reg = .rdi } },
100665 .{ .type = .usize, .kind = .{ .reg = .rsi } },
100666 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
103024 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
103025 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
103026 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 2 } } },
100667103027 .{ .type = .usize, .kind = .{ .extern_func = "__fixunshfei" } },
100668103028 .unused,
100669103029 .unused,
......@@ -100674,16 +103034,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
100674103034 .dst_temps = .{ .mem, .unused },
100675103035 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
100676103036 .each = .{ .once = &.{
100677 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
100678 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
103037 .{ ._, ._, .mov, .tmp0d, .sia(-2, .src0, .add_unaligned_size), ._, ._ },
103038 .{ ._, ._, .lea, .tmp1p, .mema(.dst0, .add_unaligned_size_sub_elem_size), ._, ._ },
100679103039 .{ .@"0:", .v_ps, .xor, .tmp4x, .tmp4x, .tmp4x, ._ },
100680103040 .{ ._, ._, .mov, .tmp2p, .tmp1p, ._, ._ },
100681103041 .{ ._, ._, .mov, .tmp3d, .sa(.dst0, .add_bit_size), ._, ._ },
100682 .{ ._, .vp_w, .insr, .tmp4x, .tmp4x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0) },
103042 .{ ._, .vp_w, .insr, .tmp4x, .tmp4x, .memi(.src0w, .tmp0), .ui(0) },
100683103043 .{ ._, ._, .call, .tmp5d, ._, ._, ._ },
100684 .{ ._, ._, .lea, .tmp1p, .leaa(.tmp1, .add_dst0_elem_size), ._, ._ },
100685 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
100686 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
103044 .{ ._, ._, .lea, .tmp1p, .leaa(.tmp1, .sub_dst0_elem_size), ._, ._ },
103045 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
103046 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
100687103047 } },
100688103048 }, .{
100689103049 .required_features = .{ .@"64bit", .sse2, null, null },
......@@ -100694,11 +103054,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
100694103054 },
100695103055 .call_frame = .{ .alignment = .@"16" },
100696103056 .extra_temps = .{
100697 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
103057 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
100698103058 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
100699 .{ .type = .usize, .kind = .{ .reg = .rdi } },
100700 .{ .type = .usize, .kind = .{ .reg = .rsi } },
100701 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
103059 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
103060 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
103061 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 2 } } },
100702103062 .{ .type = .usize, .kind = .{ .extern_func = "__fixhfei" } },
100703103063 .unused,
100704103064 .unused,
......@@ -100709,16 +103069,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
100709103069 .dst_temps = .{ .mem, .unused },
100710103070 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
100711103071 .each = .{ .once = &.{
100712 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
100713 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
103072 .{ ._, ._, .mov, .tmp0d, .sia(-2, .src0, .add_unaligned_size), ._, ._ },
103073 .{ ._, ._, .lea, .tmp1p, .mema(.dst0, .add_unaligned_size_sub_elem_size), ._, ._ },
100714103074 .{ .@"0:", ._ps, .xor, .tmp4x, .tmp4x, ._, ._ },
100715103075 .{ ._, ._, .mov, .tmp2p, .tmp1p, ._, ._ },
100716103076 .{ ._, ._, .mov, .tmp3d, .sa(.dst0, .add_bit_size), ._, ._ },
100717 .{ ._, .p_w, .insr, .tmp4x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0), ._ },
103077 .{ ._, .p_w, .insr, .tmp4x, .memi(.src0w, .tmp0), .ui(0), ._ },
100718103078 .{ ._, ._, .call, .tmp5d, ._, ._, ._ },
100719 .{ ._, ._, .lea, .tmp1p, .leaa(.tmp1, .add_dst0_elem_size), ._, ._ },
100720 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
100721 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
103079 .{ ._, ._, .lea, .tmp1p, .leaa(.tmp1, .sub_dst0_elem_size), ._, ._ },
103080 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
103081 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
100722103082 } },
100723103083 }, .{
100724103084 .required_features = .{ .@"64bit", .sse2, null, null },
......@@ -100729,11 +103089,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
100729103089 },
100730103090 .call_frame = .{ .alignment = .@"16" },
100731103091 .extra_temps = .{
100732 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
103092 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
100733103093 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
100734 .{ .type = .usize, .kind = .{ .reg = .rdi } },
100735 .{ .type = .usize, .kind = .{ .reg = .rsi } },
100736 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
103094 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
103095 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
103096 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 2 } } },
100737103097 .{ .type = .usize, .kind = .{ .extern_func = "__fixunshfei" } },
100738103098 .unused,
100739103099 .unused,
......@@ -100744,16 +103104,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
100744103104 .dst_temps = .{ .mem, .unused },
100745103105 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
100746103106 .each = .{ .once = &.{
100747 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
100748 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
103107 .{ ._, ._, .mov, .tmp0d, .sia(-2, .src0, .add_unaligned_size), ._, ._ },
103108 .{ ._, ._, .lea, .tmp1p, .mema(.dst0, .add_unaligned_size_sub_elem_size), ._, ._ },
100749103109 .{ .@"0:", ._ps, .xor, .tmp4x, .tmp4x, ._, ._ },
100750103110 .{ ._, ._, .mov, .tmp2p, .tmp1p, ._, ._ },
100751103111 .{ ._, ._, .mov, .tmp3d, .sa(.dst0, .add_bit_size), ._, ._ },
100752 .{ ._, .p_w, .insr, .tmp4x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0), ._ },
103112 .{ ._, .p_w, .insr, .tmp4x, .memi(.src0w, .tmp0), .ui(0), ._ },
100753103113 .{ ._, ._, .call, .tmp5d, ._, ._, ._ },
100754 .{ ._, ._, .lea, .tmp1p, .leaa(.tmp1, .add_dst0_elem_size), ._, ._ },
100755 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
100756 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
103114 .{ ._, ._, .lea, .tmp1p, .leaa(.tmp1, .sub_dst0_elem_size), ._, ._ },
103115 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
103116 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
100757103117 } },
100758103118 }, .{
100759103119 .required_features = .{ .@"64bit", .sse, null, null },
......@@ -100764,12 +103124,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
100764103124 },
100765103125 .call_frame = .{ .alignment = .@"16" },
100766103126 .extra_temps = .{
100767 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
103127 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
100768103128 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
100769 .{ .type = .usize, .kind = .{ .reg = .rdi } },
100770 .{ .type = .usize, .kind = .{ .reg = .rsi } },
103129 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
103130 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
100771103131 .{ .type = .f32, .kind = .mem },
100772 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
103132 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 2 } } },
100773103133 .{ .type = .usize, .kind = .{ .extern_func = "__fixhfei" } },
100774103134 .unused,
100775103135 .unused,
......@@ -100779,17 +103139,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
100779103139 .dst_temps = .{ .mem, .unused },
100780103140 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
100781103141 .each = .{ .once = &.{
100782 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
100783 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
100784 .{ .@"0:", ._, .movzx, .tmp3d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
103142 .{ ._, ._, .mov, .tmp0d, .sia(-2, .src0, .add_unaligned_size), ._, ._ },
103143 .{ ._, ._, .lea, .tmp1p, .mema(.dst0, .add_unaligned_size_sub_elem_size), ._, ._ },
103144 .{ .@"0:", ._, .movzx, .tmp3d, .memi(.src0w, .tmp0), ._, ._ },
100785103145 .{ ._, ._, .mov, .tmp2p, .tmp1p, ._, ._ },
100786103146 .{ ._, ._, .mov, .tmp4d, .tmp3d, ._, ._ },
100787103147 .{ ._, ._, .mov, .tmp3d, .sa(.dst0, .add_bit_size), ._, ._ },
100788103148 .{ ._, ._ss, .mov, .tmp5x, .tmp4d, ._, ._ },
100789103149 .{ ._, ._, .call, .tmp6d, ._, ._, ._ },
100790 .{ ._, ._, .lea, .tmp1p, .leaa(.tmp1, .add_dst0_elem_size), ._, ._ },
100791 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
100792 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
103150 .{ ._, ._, .lea, .tmp1p, .leaa(.tmp1, .sub_dst0_elem_size), ._, ._ },
103151 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
103152 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
100793103153 } },
100794103154 }, .{
100795103155 .required_features = .{ .@"64bit", .sse, null, null },
......@@ -100800,12 +103160,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
100800103160 },
100801103161 .call_frame = .{ .alignment = .@"16" },
100802103162 .extra_temps = .{
100803 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
103163 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
100804103164 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
100805 .{ .type = .usize, .kind = .{ .reg = .rdi } },
100806 .{ .type = .usize, .kind = .{ .reg = .rsi } },
103165 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
103166 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
100807103167 .{ .type = .f32, .kind = .mem },
100808 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
103168 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 2 } } },
100809103169 .{ .type = .usize, .kind = .{ .extern_func = "__fixunshfei" } },
100810103170 .unused,
100811103171 .unused,
......@@ -100815,17 +103175,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
100815103175 .dst_temps = .{ .mem, .unused },
100816103176 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
100817103177 .each = .{ .once = &.{
100818 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
100819 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
100820 .{ .@"0:", ._, .movzx, .tmp3d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
103178 .{ ._, ._, .mov, .tmp0d, .sia(-2, .src0, .add_unaligned_size), ._, ._ },
103179 .{ ._, ._, .lea, .tmp1p, .mema(.dst0, .add_unaligned_size_sub_elem_size), ._, ._ },
103180 .{ .@"0:", ._, .movzx, .tmp3d, .memi(.src0w, .tmp0), ._, ._ },
100821103181 .{ ._, ._, .mov, .tmp2p, .tmp1p, ._, ._ },
100822103182 .{ ._, ._, .mov, .tmp4d, .tmp3d, ._, ._ },
100823103183 .{ ._, ._, .mov, .tmp3d, .sa(.dst0, .add_bit_size), ._, ._ },
100824103184 .{ ._, ._ss, .mov, .tmp5x, .tmp4d, ._, ._ },
100825103185 .{ ._, ._, .call, .tmp6d, ._, ._, ._ },
100826 .{ ._, ._, .lea, .tmp1p, .leaa(.tmp1, .add_dst0_elem_size), ._, ._ },
100827 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
100828 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
103186 .{ ._, ._, .lea, .tmp1p, .leaa(.tmp1, .sub_dst0_elem_size), ._, ._ },
103187 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
103188 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
100829103189 } },
100830103190 }, .{
100831103191 .required_features = .{ .avx, null, null, null },
......@@ -100940,11 +103300,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
100940103300 .{ ._, ._, .@"or", .dst0q, .tmp0q, ._, ._ },
100941103301 } },
100942103302 }, .{
100943 .required_features = .{ .@"64bit", .sse, null, null },
103303 .required_cc_abi = .sysv64,
103304 .required_features = .{ .sse, null, null, null },
100944103305 .src_constraints = .{ .{ .float = .dword }, .any, .any },
100945103306 .dst_constraints = .{ .{ .signed_int = .xword }, .any },
100946103307 .patterns = &.{
100947 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },
103308 .{ .src = .{ .{ .to_param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .none, .none } },
100948103309 },
100949103310 .call_frame = .{ .alignment = .@"16" },
100950103311 .extra_temps = .{
......@@ -100960,17 +103321,45 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
100960103321 .unused,
100961103322 .unused,
100962103323 },
100963 .dst_temps = .{ .{ .reg_pair = .{ .rax, .rdx } }, .unused },
103324 .dst_temps = .{ .{ .ret_gpr_pair = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
100964103325 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
100965103326 .each = .{ .once = &.{
100966103327 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
100967103328 } },
100968103329 }, .{
100969 .required_features = .{ .@"64bit", .sse, null, null },
103330 .required_cc_abi = .win64,
103331 .required_features = .{ .sse, null, null, null },
103332 .src_constraints = .{ .{ .float = .dword }, .any, .any },
103333 .dst_constraints = .{ .{ .signed_int = .xword }, .any },
103334 .patterns = &.{
103335 .{ .src = .{ .{ .to_param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .none, .none } },
103336 },
103337 .call_frame = .{ .alignment = .@"16" },
103338 .extra_temps = .{
103339 .{ .type = .usize, .kind = .{ .extern_func = "__fixsfti" } },
103340 .unused,
103341 .unused,
103342 .unused,
103343 .unused,
103344 .unused,
103345 .unused,
103346 .unused,
103347 .unused,
103348 .unused,
103349 .unused,
103350 },
103351 .dst_temps = .{ .{ .ref = .src0 }, .unused },
103352 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
103353 .each = .{ .once = &.{
103354 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
103355 } },
103356 }, .{
103357 .required_cc_abi = .sysv64,
103358 .required_features = .{ .sse, null, null, null },
100970103359 .src_constraints = .{ .{ .float = .dword }, .any, .any },
100971103360 .dst_constraints = .{ .{ .unsigned_int = .xword }, .any },
100972103361 .patterns = &.{
100973 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },
103362 .{ .src = .{ .{ .to_param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .none, .none } },
100974103363 },
100975103364 .call_frame = .{ .alignment = .@"16" },
100976103365 .extra_temps = .{
......@@ -100986,17 +103375,45 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
100986103375 .unused,
100987103376 .unused,
100988103377 },
100989 .dst_temps = .{ .{ .reg_pair = .{ .rax, .rdx } }, .unused },
103378 .dst_temps = .{ .{ .ret_gpr_pair = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
100990103379 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
100991103380 .each = .{ .once = &.{
100992103381 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
100993103382 } },
100994103383 }, .{
100995 .required_features = .{ .@"64bit", .avx, null, null },
103384 .required_cc_abi = .win64,
103385 .required_features = .{ .sse, null, null, null },
103386 .src_constraints = .{ .{ .float = .dword }, .any, .any },
103387 .dst_constraints = .{ .{ .unsigned_int = .xword }, .any },
103388 .patterns = &.{
103389 .{ .src = .{ .{ .to_param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .none, .none } },
103390 },
103391 .call_frame = .{ .alignment = .@"16" },
103392 .extra_temps = .{
103393 .{ .type = .usize, .kind = .{ .extern_func = "__fixunssfti" } },
103394 .unused,
103395 .unused,
103396 .unused,
103397 .unused,
103398 .unused,
103399 .unused,
103400 .unused,
103401 .unused,
103402 .unused,
103403 .unused,
103404 },
103405 .dst_temps = .{ .{ .ref = .src0 }, .unused },
103406 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
103407 .each = .{ .once = &.{
103408 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
103409 } },
103410 }, .{
103411 .required_cc_abi = .sysv64,
103412 .required_features = .{ .avx, null, null, null },
100996103413 .src_constraints = .{ .{ .float = .dword }, .any, .any },
100997103414 .dst_constraints = .{ .{ .remainder_signed_int = .{ .of = .qword, .is = .qword } }, .any },
100998103415 .patterns = &.{
100999 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },
103416 .{ .src = .{ .{ .to_param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .none, .none } },
101000103417 },
101001103418 .call_frame = .{ .alignment = .@"16" },
101002103419 .extra_temps = .{
......@@ -101024,7 +103441,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101024103441 .{ ._, ._, .xor, .tmp1q, .tmp0q, ._, ._ },
101025103442 .{ ._, ._, .xor, .tmp4q, .tmp0q, ._, ._ },
101026103443 .{ ._, ._, .sub, .tmp1q, .tmp0q, ._, ._ },
101027 .{ ._, ._, .mov, .dst0q, .tmp1q, ._, ._ },
103444 .{ ._, ._, .mov, .mem(.dst0q), .tmp1q, ._, ._ },
101028103445 .{ ._, ._, .sbb, .tmp4q, .tmp0q, ._, ._ },
101029103446 .{ ._, ._, .mov, .memd(.dst0q, 8), .tmp4q, ._, ._ },
101030103447 .{ ._, ._, .sbb, .tmp1q, .tmp1q, ._, ._ },
......@@ -101033,11 +103450,56 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101033103450 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
101034103451 } },
101035103452 }, .{
101036 .required_features = .{ .@"64bit", .sse2, null, null },
103453 .required_cc_abi = .win64,
103454 .required_features = .{ .avx, null, null, null },
103455 .src_constraints = .{ .{ .float = .dword }, .any, .any },
103456 .dst_constraints = .{ .{ .remainder_signed_int = .{ .of = .qword, .is = .qword } }, .any },
103457 .patterns = &.{
103458 .{ .src = .{ .{ .to_param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .none, .none } },
103459 },
103460 .call_frame = .{ .alignment = .@"16" },
103461 .extra_temps = .{
103462 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
103463 .{ .type = .i64, .kind = .{ .reg = .rax } },
103464 .{ .type = .vector_4_f32, .kind = .{ .smax_mem = .{} } },
103465 .{ .type = .usize, .kind = .{ .extern_func = "__fixunssfti" } },
103466 .{ .type = .i64, .kind = .{ .reg = .rdx } },
103467 .{ .type = .usize, .kind = .{ .reg = .rdi } },
103468 .{ .type = .u32, .kind = .{ .reg = .ecx } },
103469 .unused,
103470 .unused,
103471 .unused,
103472 .unused,
103473 },
103474 .dst_temps = .{ .mem, .unused },
103475 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
103476 .each = .{ .once = &.{
103477 .{ ._, .v_d, .mov, .tmp0d, .src0x, ._, ._ },
103478 .{ ._, ._, .lea, .tmp1p, .mem(.tmp2), ._, ._ },
103479 .{ ._, ._d, .movsx, .tmp0q, .tmp0d, ._, ._ },
103480 .{ ._, .v_ps, .@"and", .src0x, .src0x, .lea(.tmp1x), ._ },
103481 .{ ._, ._r, .sa, .tmp0q, .ui(63), ._, ._ },
103482 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
103483 .{ ._, .v_q, .mov, .tmp1q, .src0x, ._, ._ },
103484 .{ ._, .vp_q, .extr, .tmp4q, .src0x, .ui(1), ._ },
103485 .{ ._, ._, .xor, .tmp1q, .tmp0q, ._, ._ },
103486 .{ ._, ._, .xor, .tmp4q, .tmp0q, ._, ._ },
103487 .{ ._, ._, .sub, .tmp1q, .tmp0q, ._, ._ },
103488 .{ ._, ._, .mov, .mem(.dst0q), .tmp1q, ._, ._ },
103489 .{ ._, ._, .sbb, .tmp4q, .tmp0q, ._, ._ },
103490 .{ ._, ._, .mov, .memd(.dst0q, 8), .tmp4q, ._, ._ },
103491 .{ ._, ._, .sbb, .tmp1q, .tmp1q, ._, ._ },
103492 .{ ._, ._, .lea, .tmp5p, .memd(.dst0, 16), ._, ._ },
103493 .{ ._, ._, .mov, .tmp6d, .sia(-2, .dst0, .add_size_div_8), ._, ._ },
103494 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
103495 } },
103496 }, .{
103497 .required_cc_abi = .sysv64,
103498 .required_features = .{ .sse2, null, null, null },
101037103499 .src_constraints = .{ .{ .float = .dword }, .any, .any },
101038103500 .dst_constraints = .{ .{ .remainder_signed_int = .{ .of = .qword, .is = .qword } }, .any },
101039103501 .patterns = &.{
101040 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },
103502 .{ .src = .{ .{ .to_param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .none, .none } },
101041103503 },
101042103504 .call_frame = .{ .alignment = .@"16" },
101043103505 .extra_temps = .{
......@@ -101065,7 +103527,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101065103527 .{ ._, ._, .xor, .tmp1q, .tmp0q, ._, ._ },
101066103528 .{ ._, ._, .xor, .tmp4q, .tmp0q, ._, ._ },
101067103529 .{ ._, ._, .sub, .tmp1q, .tmp0q, ._, ._ },
101068 .{ ._, ._, .mov, .dst0q, .tmp1q, ._, ._ },
103530 .{ ._, ._, .mov, .mem(.dst0q), .tmp1q, ._, ._ },
101069103531 .{ ._, ._, .sbb, .tmp4q, .tmp0q, ._, ._ },
101070103532 .{ ._, ._, .mov, .memd(.dst0q, 8), .tmp4q, ._, ._ },
101071103533 .{ ._, ._, .sbb, .tmp1q, .tmp1q, ._, ._ },
......@@ -101074,7 +103536,97 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101074103536 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
101075103537 } },
101076103538 }, .{
101077 .required_features = .{ .@"64bit", .sse, null, null },
103539 .required_cc_abi = .win64,
103540 .required_features = .{ .sse4_1, null, null, null },
103541 .src_constraints = .{ .{ .float = .dword }, .any, .any },
103542 .dst_constraints = .{ .{ .remainder_signed_int = .{ .of = .qword, .is = .qword } }, .any },
103543 .patterns = &.{
103544 .{ .src = .{ .{ .to_param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .none, .none } },
103545 },
103546 .call_frame = .{ .alignment = .@"16" },
103547 .extra_temps = .{
103548 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
103549 .{ .type = .i64, .kind = .{ .reg = .rax } },
103550 .{ .type = .vector_4_f32, .kind = .{ .smax_mem = .{} } },
103551 .{ .type = .usize, .kind = .{ .extern_func = "__fixunssfti" } },
103552 .{ .type = .i64, .kind = .{ .reg = .rdx } },
103553 .{ .type = .usize, .kind = .{ .reg = .rdi } },
103554 .{ .type = .u32, .kind = .{ .reg = .ecx } },
103555 .unused,
103556 .unused,
103557 .unused,
103558 .unused,
103559 },
103560 .dst_temps = .{ .mem, .unused },
103561 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
103562 .each = .{ .once = &.{
103563 .{ ._, ._d, .mov, .tmp0d, .src0x, ._, ._ },
103564 .{ ._, ._, .lea, .tmp1p, .mem(.tmp2), ._, ._ },
103565 .{ ._, ._d, .movsx, .tmp0q, .tmp0d, ._, ._ },
103566 .{ ._, ._ps, .@"and", .src0x, .lea(.tmp1x), ._, ._ },
103567 .{ ._, ._r, .sa, .tmp0q, .ui(63), ._, ._ },
103568 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
103569 .{ ._, ._q, .mov, .tmp1q, .src0x, ._, ._ },
103570 .{ ._, .p_q, .extr, .tmp4q, .src0x, .ui(1), ._ },
103571 .{ ._, ._, .xor, .tmp1q, .tmp0q, ._, ._ },
103572 .{ ._, ._, .xor, .tmp4q, .tmp0q, ._, ._ },
103573 .{ ._, ._, .sub, .tmp1q, .tmp0q, ._, ._ },
103574 .{ ._, ._, .mov, .mem(.dst0q), .tmp1q, ._, ._ },
103575 .{ ._, ._, .sbb, .tmp4q, .tmp0q, ._, ._ },
103576 .{ ._, ._, .mov, .memd(.dst0q, 8), .tmp4q, ._, ._ },
103577 .{ ._, ._, .sbb, .tmp1q, .tmp1q, ._, ._ },
103578 .{ ._, ._, .lea, .tmp5p, .memd(.dst0, 16), ._, ._ },
103579 .{ ._, ._, .mov, .tmp6d, .sia(-2, .dst0, .add_size_div_8), ._, ._ },
103580 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
103581 } },
103582 }, .{
103583 .required_cc_abi = .win64,
103584 .required_features = .{ .sse2, null, null, null },
103585 .src_constraints = .{ .{ .float = .dword }, .any, .any },
103586 .dst_constraints = .{ .{ .remainder_signed_int = .{ .of = .qword, .is = .qword } }, .any },
103587 .patterns = &.{
103588 .{ .src = .{ .{ .to_param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .none, .none } },
103589 },
103590 .call_frame = .{ .alignment = .@"16" },
103591 .extra_temps = .{
103592 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
103593 .{ .type = .i64, .kind = .{ .reg = .rax } },
103594 .{ .type = .vector_4_f32, .kind = .{ .smax_mem = .{} } },
103595 .{ .type = .usize, .kind = .{ .extern_func = "__fixunssfti" } },
103596 .{ .type = .i64, .kind = .{ .reg = .rdx } },
103597 .{ .type = .usize, .kind = .{ .reg = .rdi } },
103598 .{ .type = .u32, .kind = .{ .reg = .ecx } },
103599 .unused,
103600 .unused,
103601 .unused,
103602 .unused,
103603 },
103604 .dst_temps = .{ .mem, .unused },
103605 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
103606 .each = .{ .once = &.{
103607 .{ ._, ._d, .mov, .tmp0d, .src0x, ._, ._ },
103608 .{ ._, ._, .lea, .tmp1p, .mem(.tmp2), ._, ._ },
103609 .{ ._, ._d, .movsx, .tmp0q, .tmp0d, ._, ._ },
103610 .{ ._, ._ps, .@"and", .src0x, .lea(.tmp1x), ._, ._ },
103611 .{ ._, ._r, .sa, .tmp0q, .ui(63), ._, ._ },
103612 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
103613 .{ ._, ._q, .mov, .tmp1q, .src0x, ._, ._ },
103614 .{ ._, .p_d, .shuf, .src0x, .src0x, .ui(0b11_10), ._ },
103615 .{ ._, ._q, .mov, .tmp4q, .src0x, ._, ._ },
103616 .{ ._, ._, .xor, .tmp1q, .tmp0q, ._, ._ },
103617 .{ ._, ._, .xor, .tmp4q, .tmp0q, ._, ._ },
103618 .{ ._, ._, .sub, .tmp1q, .tmp0q, ._, ._ },
103619 .{ ._, ._, .mov, .mem(.dst0q), .tmp1q, ._, ._ },
103620 .{ ._, ._, .sbb, .tmp4q, .tmp0q, ._, ._ },
103621 .{ ._, ._, .mov, .memd(.dst0q, 8), .tmp4q, ._, ._ },
103622 .{ ._, ._, .sbb, .tmp1q, .tmp1q, ._, ._ },
103623 .{ ._, ._, .lea, .tmp5p, .memd(.dst0, 16), ._, ._ },
103624 .{ ._, ._, .mov, .tmp6d, .sia(-2, .dst0, .add_size_div_8), ._, ._ },
103625 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
103626 } },
103627 }, .{
103628 .required_cc_abi = .sysv64,
103629 .required_features = .{ .sse, null, null, null },
101078103630 .src_constraints = .{ .{ .float = .dword }, .any, .any },
101079103631 .dst_constraints = .{ .{ .remainder_signed_int = .{ .of = .qword, .is = .qword } }, .any },
101080103632 .patterns = &.{
......@@ -101082,7 +103634,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101082103634 },
101083103635 .call_frame = .{ .alignment = .@"16" },
101084103636 .extra_temps = .{
101085 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
103637 .{ .type = .f32, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
101086103638 .{ .type = .i64, .kind = .{ .reg = .rax } },
101087103639 .{ .type = .vector_4_f32, .kind = .{ .smax_mem = .{} } },
101088103640 .{ .type = .usize, .kind = .{ .extern_func = "__fixunssfti" } },
......@@ -101106,7 +103658,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101106103658 .{ ._, ._, .xor, .tmp1q, .tmp4q, ._, ._ },
101107103659 .{ ._, ._, .xor, .tmp5q, .tmp4q, ._, ._ },
101108103660 .{ ._, ._, .sub, .tmp1q, .tmp4q, ._, ._ },
101109 .{ ._, ._, .mov, .dst0q, .tmp1q, ._, ._ },
103661 .{ ._, ._, .mov, .mem(.dst0q), .tmp1q, ._, ._ },
101110103662 .{ ._, ._, .sbb, .tmp5q, .tmp4q, ._, ._ },
101111103663 .{ ._, ._, .mov, .memd(.dst0q, 8), .tmp5q, ._, ._ },
101112103664 .{ ._, ._, .sbb, .tmp1q, .tmp1q, ._, ._ },
......@@ -101115,17 +103667,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101115103667 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
101116103668 } },
101117103669 }, .{
101118 .required_features = .{ .@"64bit", .sse, null, null },
103670 .required_cc_abi = .win64,
103671 .required_features = .{ .avx, null, null, null },
101119103672 .src_constraints = .{ .{ .float = .dword }, .any, .any },
101120103673 .dst_constraints = .{ .{ .remainder_unsigned_int = .{ .of = .qword, .is = .qword } }, .any },
101121103674 .patterns = &.{
101122 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },
103675 .{ .src = .{ .{ .to_param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .none, .none } },
101123103676 },
101124103677 .call_frame = .{ .alignment = .@"16" },
101125103678 .extra_temps = .{
101126103679 .{ .type = .usize, .kind = .{ .extern_func = "__fixunssfti" } },
101127 .{ .type = .i64, .kind = .{ .reg = .rax } },
101128 .{ .type = .i64, .kind = .{ .reg = .rdx } },
103680 .{ .type = .u64, .kind = .{ .reg = .rax } },
101129103681 .{ .type = .usize, .kind = .{ .reg = .rdi } },
101130103682 .{ .type = .u32, .kind = .{ .reg = .ecx } },
101131103683 .unused,
......@@ -101134,16 +103686,113 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101134103686 .unused,
101135103687 .unused,
101136103688 .unused,
103689 .unused,
101137103690 },
101138103691 .dst_temps = .{ .mem, .unused },
101139103692 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
101140103693 .each = .{ .once = &.{
101141103694 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
101142 .{ ._, ._, .mov, .dst0q, .tmp1q, ._, ._ },
101143 .{ ._, ._, .mov, .memd(.dst0q, 8), .tmp2q, ._, ._ },
103695 .{ ._, .v_dqa, .mov, .mem(.dst0x), .src0x, ._, ._ },
101144103696 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
101145 .{ ._, ._, .lea, .tmp3p, .memd(.dst0, 16), ._, ._ },
101146 .{ ._, ._, .mov, .tmp4d, .sia(-2, .dst0, .add_size_div_8), ._, ._ },
103697 .{ ._, ._, .lea, .tmp2p, .memd(.dst0, 16), ._, ._ },
103698 .{ ._, ._, .mov, .tmp3d, .sia(-2, .dst0, .add_size_div_8), ._, ._ },
103699 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
103700 } },
103701 }, .{
103702 .required_cc_abi = .win64,
103703 .required_features = .{ .sse2, null, null, null },
103704 .src_constraints = .{ .{ .float = .dword }, .any, .any },
103705 .dst_constraints = .{ .{ .remainder_unsigned_int = .{ .of = .qword, .is = .qword } }, .any },
103706 .patterns = &.{
103707 .{ .src = .{ .{ .to_param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .none, .none } },
103708 },
103709 .call_frame = .{ .alignment = .@"16" },
103710 .extra_temps = .{
103711 .{ .type = .usize, .kind = .{ .extern_func = "__fixunssfti" } },
103712 .{ .type = .u64, .kind = .{ .reg = .rax } },
103713 .{ .type = .usize, .kind = .{ .reg = .rdi } },
103714 .{ .type = .u32, .kind = .{ .reg = .ecx } },
103715 .unused,
103716 .unused,
103717 .unused,
103718 .unused,
103719 .unused,
103720 .unused,
103721 .unused,
103722 },
103723 .dst_temps = .{ .mem, .unused },
103724 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
103725 .each = .{ .once = &.{
103726 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
103727 .{ ._, ._dqa, .mov, .mem(.dst0x), .src0x, ._, ._ },
103728 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
103729 .{ ._, ._, .lea, .tmp2p, .memd(.dst0, 16), ._, ._ },
103730 .{ ._, ._, .mov, .tmp3d, .sia(-2, .dst0, .add_size_div_8), ._, ._ },
103731 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
103732 } },
103733 }, .{
103734 .required_cc_abi = .sysv64,
103735 .required_features = .{ .sse, null, null, null },
103736 .src_constraints = .{ .{ .float = .dword }, .any, .any },
103737 .dst_constraints = .{ .{ .remainder_unsigned_int = .{ .of = .qword, .is = .qword } }, .any },
103738 .patterns = &.{
103739 .{ .src = .{ .{ .to_param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .none, .none } },
103740 },
103741 .call_frame = .{ .alignment = .@"16" },
103742 .extra_temps = .{
103743 .{ .type = .usize, .kind = .{ .extern_func = "__fixunssfti" } },
103744 .{ .type = .i128, .kind = .{ .ret_gpr_pair = .{ .cc = .ccc, .after = 0, .at = 0 } } },
103745 .{ .type = .usize, .kind = .{ .reg = .rdi } },
103746 .{ .type = .u32, .kind = .{ .reg = .ecx } },
103747 .unused,
103748 .unused,
103749 .unused,
103750 .unused,
103751 .unused,
103752 .unused,
103753 .unused,
103754 },
103755 .dst_temps = .{ .mem, .unused },
103756 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
103757 .each = .{ .once = &.{
103758 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
103759 .{ ._, ._, .mov, .mem(.dst0q), .tmp1q0, ._, ._ },
103760 .{ ._, ._, .mov, .memd(.dst0q, 8), .tmp1q1, ._, ._ },
103761 .{ ._, ._, .xor, .tmp1d0, .tmp1d0, ._, ._ },
103762 .{ ._, ._, .lea, .tmp2p, .memd(.dst0, 16), ._, ._ },
103763 .{ ._, ._, .mov, .tmp3d, .sia(-2, .dst0, .add_size_div_8), ._, ._ },
103764 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
103765 } },
103766 }, .{
103767 .required_cc_abi = .win64,
103768 .required_features = .{ .sse2, null, null, null },
103769 .src_constraints = .{ .{ .float = .dword }, .any, .any },
103770 .dst_constraints = .{ .{ .remainder_unsigned_int = .{ .of = .qword, .is = .qword } }, .any },
103771 .patterns = &.{
103772 .{ .src = .{ .{ .to_param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .none, .none } },
103773 },
103774 .call_frame = .{ .alignment = .@"16" },
103775 .extra_temps = .{
103776 .{ .type = .usize, .kind = .{ .extern_func = "__fixunssfti" } },
103777 .{ .type = .u64, .kind = .{ .reg = .rax } },
103778 .{ .type = .usize, .kind = .{ .reg = .rdi } },
103779 .{ .type = .u32, .kind = .{ .reg = .ecx } },
103780 .unused,
103781 .unused,
103782 .unused,
103783 .unused,
103784 .unused,
103785 .unused,
103786 .unused,
103787 },
103788 .dst_temps = .{ .mem, .unused },
103789 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
103790 .each = .{ .once = &.{
103791 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
103792 .{ ._, ._ps, .mova, .mem(.dst0x), .src0x, ._, ._ },
103793 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
103794 .{ ._, ._, .lea, .tmp2p, .memd(.dst0, 16), ._, ._ },
103795 .{ ._, ._, .mov, .tmp3d, .sia(-2, .dst0, .add_size_div_8), ._, ._ },
101147103796 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
101148103797 } },
101149103798 }, .{
......@@ -101208,7 +103857,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101208103857 .{ .src = .{ .to_mem, .none, .none } },
101209103858 },
101210103859 .extra_temps = .{
101211 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
103860 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
101212103861 .{ .type = .vector_16_u8, .kind = .{ .pshufb_trunc_mem = .{ .from = .dword, .to = .byte } } },
101213103862 .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } },
101214103863 .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } },
......@@ -101225,12 +103874,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101225103874 .each = .{ .once = &.{
101226103875 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
101227103876 .{ ._, .v_dqa, .mov, .tmp2x, .lea(.tmp0x), ._, ._ },
101228 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
101229 .{ .@"0:", .v_, .cvttps2dq, .tmp3x, .memsia(.src0x, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
103877 .{ ._, ._, .mov, .tmp0d, .sia(-4, .dst0, .add_size), ._, ._ },
103878 .{ .@"0:", .v_, .cvttps2dq, .tmp3x, .memsi(.src0x, .@"4", .tmp0), ._, ._ },
101230103879 .{ ._, .vp_b, .shuf, .tmp3x, .tmp3x, .tmp2x, ._ },
101231 .{ ._, .v_d, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
101232 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
101233 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
103880 .{ ._, .v_d, .mov, .memi(.dst0d, .tmp0), .tmp3x, ._, ._ },
103881 .{ ._, ._, .sub, .tmp0d, .si(4), ._, ._ },
103882 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
101234103883 } },
101235103884 }, .{
101236103885 .required_features = .{ .ssse3, null, null, null },
......@@ -101240,7 +103889,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101240103889 .{ .src = .{ .to_mem, .none, .none } },
101241103890 },
101242103891 .extra_temps = .{
101243 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
103892 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
101244103893 .{ .type = .vector_16_u8, .kind = .{ .pshufb_trunc_mem = .{ .from = .dword, .to = .byte } } },
101245103894 .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } },
101246103895 .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } },
......@@ -101257,12 +103906,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101257103906 .each = .{ .once = &.{
101258103907 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
101259103908 .{ ._, ._dqa, .mov, .tmp2x, .lea(.tmp0x), ._, ._ },
101260 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
101261 .{ .@"0:", ._, .cvttps2dq, .tmp3x, .memsia(.src0x, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
103909 .{ ._, ._, .mov, .tmp0d, .sia(-4, .dst0, .add_size), ._, ._ },
103910 .{ .@"0:", ._, .cvttps2dq, .tmp3x, .memsi(.src0x, .@"4", .tmp0), ._, ._ },
101262103911 .{ ._, .p_b, .shuf, .tmp3x, .tmp2x, ._, ._ },
101263 .{ ._, ._d, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
101264 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
101265 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
103912 .{ ._, ._d, .mov, .memi(.dst0d, .tmp0), .tmp3x, ._, ._ },
103913 .{ ._, ._, .sub, .tmp0d, .si(4), ._, ._ },
103914 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
101266103915 } },
101267103916 }, .{
101268103917 .required_features = .{ .sse, .slow_incdec, null, null },
......@@ -101272,7 +103921,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101272103921 .{ .src = .{ .to_mem, .none, .none } },
101273103922 },
101274103923 .extra_temps = .{
101275 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
103924 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
101276103925 .{ .type = .i32, .kind = .{ .rc = .general_purpose } },
101277103926 .unused,
101278103927 .unused,
......@@ -101287,11 +103936,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101287103936 .dst_temps = .{ .mem, .unused },
101288103937 .clobbers = .{ .eflags = true },
101289103938 .each = .{ .once = &.{
101290 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
101291 .{ .@"0:", ._, .cvttss2si, .tmp1d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
101292 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
101293 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
101294 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
103939 .{ ._, ._, .mov, .tmp0d, .sia(-1, .dst0, .add_unaligned_size), ._, ._ },
103940 .{ .@"0:", ._, .cvttss2si, .tmp1d, .memsi(.src0d, .@"4", .tmp0), ._, ._ },
103941 .{ ._, ._, .mov, .memi(.dst0b, .tmp0), .tmp1b, ._, ._ },
103942 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
103943 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
101295103944 } },
101296103945 }, .{
101297103946 .required_features = .{ .sse, null, null, null },
......@@ -101301,7 +103950,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101301103950 .{ .src = .{ .to_mem, .none, .none } },
101302103951 },
101303103952 .extra_temps = .{
101304 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
103953 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
101305103954 .{ .type = .i32, .kind = .{ .rc = .general_purpose } },
101306103955 .unused,
101307103956 .unused,
......@@ -101316,11 +103965,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101316103965 .dst_temps = .{ .mem, .unused },
101317103966 .clobbers = .{ .eflags = true },
101318103967 .each = .{ .once = &.{
101319 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
101320 .{ .@"0:", ._, .cvttss2si, .tmp1d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
101321 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
101322 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
101323 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
103968 .{ ._, ._, .mov, .tmp0d, .sia(-1, .dst0, .add_unaligned_size), ._, ._ },
103969 .{ .@"0:", ._, .cvttss2si, .tmp1d, .memsi(.src0d, .@"4", .tmp0), ._, ._ },
103970 .{ ._, ._, .mov, .memi(.dst0b, .tmp0), .tmp1b, ._, ._ },
103971 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
103972 .{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
101324103973 } },
101325103974 }, .{
101326103975 .required_features = .{ .avx, .slow_incdec, null, null },
......@@ -101331,10 +103980,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101331103980 },
101332103981 .call_frame = .{ .alignment = .@"16" },
101333103982 .extra_temps = .{
101334 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
101335 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
103983 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
103984 .{ .type = .f32, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
101336103985 .{ .type = .usize, .kind = .{ .extern_func = "__fixsfsi" } },
101337 .{ .type = .i32, .kind = .{ .reg = .eax } },
103986 .{ .type = .i32, .kind = .{ .ret_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
101338103987 .unused,
101339103988 .unused,
101340103989 .unused,
......@@ -101346,12 +103995,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101346103995 .dst_temps = .{ .mem, .unused },
101347103996 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
101348103997 .each = .{ .once = &.{
101349 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
101350 .{ .@"0:", .v_ss, .mov, .tmp1x, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
103998 .{ ._, ._, .mov, .tmp0d, .sia(-1, .dst0, .add_unaligned_size), ._, ._ },
103999 .{ .@"0:", .v_ss, .mov, .tmp1x, .memsi(.src0d, .@"4", .tmp0), ._, ._ },
101351104000 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
101352 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp3b, ._, ._ },
101353 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
101354 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
104001 .{ ._, ._, .mov, .memi(.dst0b, .tmp0), .tmp3b, ._, ._ },
104002 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
104003 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
101355104004 } },
101356104005 }, .{
101357104006 .required_features = .{ .avx, null, null, null },
......@@ -101362,10 +104011,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101362104011 },
101363104012 .call_frame = .{ .alignment = .@"16" },
101364104013 .extra_temps = .{
101365 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
101366 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
104014 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
104015 .{ .type = .f32, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
101367104016 .{ .type = .usize, .kind = .{ .extern_func = "__fixsfsi" } },
101368 .{ .type = .i32, .kind = .{ .reg = .eax } },
104017 .{ .type = .i32, .kind = .{ .ret_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
101369104018 .unused,
101370104019 .unused,
101371104020 .unused,
......@@ -101377,12 +104026,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101377104026 .dst_temps = .{ .mem, .unused },
101378104027 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
101379104028 .each = .{ .once = &.{
101380 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
101381 .{ .@"0:", .v_ss, .mov, .tmp1x, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
104029 .{ ._, ._, .mov, .tmp0d, .sia(-1, .dst0, .add_unaligned_size), ._, ._ },
104030 .{ .@"0:", .v_ss, .mov, .tmp1x, .memsi(.src0d, .@"4", .tmp0), ._, ._ },
101382104031 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
101383 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp3b, ._, ._ },
101384 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
101385 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
104032 .{ ._, ._, .mov, .memi(.dst0b, .tmp0), .tmp3b, ._, ._ },
104033 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
104034 .{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
101386104035 } },
101387104036 }, .{
101388104037 .required_features = .{ .sse, .slow_incdec, null, null },
......@@ -101393,10 +104042,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101393104042 },
101394104043 .call_frame = .{ .alignment = .@"16" },
101395104044 .extra_temps = .{
101396 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
101397 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
104045 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
104046 .{ .type = .f32, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
101398104047 .{ .type = .usize, .kind = .{ .extern_func = "__fixsfsi" } },
101399 .{ .type = .i32, .kind = .{ .reg = .eax } },
104048 .{ .type = .i32, .kind = .{ .ret_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
101400104049 .unused,
101401104050 .unused,
101402104051 .unused,
......@@ -101408,12 +104057,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101408104057 .dst_temps = .{ .mem, .unused },
101409104058 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
101410104059 .each = .{ .once = &.{
101411 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
101412 .{ .@"0:", ._ss, .mov, .tmp1x, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
104060 .{ ._, ._, .mov, .tmp0d, .sia(-1, .dst0, .add_unaligned_size), ._, ._ },
104061 .{ .@"0:", ._ss, .mov, .tmp1x, .memsi(.src0d, .@"4", .tmp0), ._, ._ },
101413104062 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
101414 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp3b, ._, ._ },
101415 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
101416 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
104063 .{ ._, ._, .mov, .memi(.dst0b, .tmp0), .tmp3b, ._, ._ },
104064 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
104065 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
101417104066 } },
101418104067 }, .{
101419104068 .required_features = .{ .sse, null, null, null },
......@@ -101424,10 +104073,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101424104073 },
101425104074 .call_frame = .{ .alignment = .@"16" },
101426104075 .extra_temps = .{
101427 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
101428 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
104076 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
104077 .{ .type = .f32, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
101429104078 .{ .type = .usize, .kind = .{ .extern_func = "__fixsfsi" } },
101430 .{ .type = .i32, .kind = .{ .reg = .eax } },
104079 .{ .type = .i32, .kind = .{ .ret_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
101431104080 .unused,
101432104081 .unused,
101433104082 .unused,
......@@ -101439,12 +104088,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101439104088 .dst_temps = .{ .mem, .unused },
101440104089 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
101441104090 .each = .{ .once = &.{
101442 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
101443 .{ .@"0:", ._ss, .mov, .tmp1x, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
104091 .{ ._, ._, .mov, .tmp0d, .sia(-1, .dst0, .add_unaligned_size), ._, ._ },
104092 .{ .@"0:", ._ss, .mov, .tmp1x, .memsi(.src0d, .@"4", .tmp0), ._, ._ },
101444104093 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
101445 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp3b, ._, ._ },
101446 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
101447 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
104094 .{ ._, ._, .mov, .memi(.dst0b, .tmp0), .tmp3b, ._, ._ },
104095 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
104096 .{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
101448104097 } },
101449104098 }, .{
101450104099 .required_features = .{ .avx, null, null, null },
......@@ -101506,7 +104155,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101506104155 .{ .src = .{ .to_mem, .none, .none } },
101507104156 },
101508104157 .extra_temps = .{
101509 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
104158 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
101510104159 .{ .type = .vector_8_i16, .kind = .{ .rc = .sse } },
101511104160 .unused,
101512104161 .unused,
......@@ -101521,12 +104170,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101521104170 .dst_temps = .{ .mem, .unused },
101522104171 .clobbers = .{ .eflags = true },
101523104172 .each = .{ .once = &.{
101524 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
101525 .{ .@"0:", .v_, .cvttps2dq, .tmp1x, .memsia(.src0x, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
104173 .{ ._, ._, .mov, .tmp0d, .sia(-8, .dst0, .add_size), ._, ._ },
104174 .{ .@"0:", .v_, .cvttps2dq, .tmp1x, .memsi(.src0x, .@"2", .tmp0), ._, ._ },
101526104175 .{ ._, .vp_w, .ackssd, .tmp1x, .tmp1x, .tmp1x, ._ },
101527 .{ ._, .v_q, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
101528 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
101529 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
104176 .{ ._, .v_q, .mov, .memi(.dst0q, .tmp0), .tmp1x, ._, ._ },
104177 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
104178 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
101530104179 } },
101531104180 }, .{
101532104181 .required_features = .{ .sse2, null, null, null },
......@@ -101536,7 +104185,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101536104185 .{ .src = .{ .to_mem, .none, .none } },
101537104186 },
101538104187 .extra_temps = .{
101539 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
104188 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
101540104189 .{ .type = .vector_8_i16, .kind = .{ .rc = .sse } },
101541104190 .unused,
101542104191 .unused,
......@@ -101551,12 +104200,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101551104200 .dst_temps = .{ .mem, .unused },
101552104201 .clobbers = .{ .eflags = true },
101553104202 .each = .{ .once = &.{
101554 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
101555 .{ .@"0:", ._, .cvttps2dq, .tmp1x, .memsia(.src0x, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
104203 .{ ._, ._, .mov, .tmp0d, .sia(-8, .dst0, .add_size), ._, ._ },
104204 .{ .@"0:", ._, .cvttps2dq, .tmp1x, .memsi(.src0x, .@"2", .tmp0), ._, ._ },
101556104205 .{ ._, .p_w, .ackssd, .tmp1x, .tmp1x, ._, ._ },
101557 .{ ._, ._q, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
101558 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
101559 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
104206 .{ ._, ._q, .mov, .memi(.dst0q, .tmp0), .tmp1x, ._, ._ },
104207 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
104208 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
101560104209 } },
101561104210 }, .{
101562104211 .required_features = .{ .avx, null, null, null },
......@@ -101566,7 +104215,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101566104215 .{ .src = .{ .to_mem, .none, .none } },
101567104216 },
101568104217 .extra_temps = .{
101569 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
104218 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
101570104219 .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } },
101571104220 .unused,
101572104221 .unused,
......@@ -101581,12 +104230,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101581104230 .dst_temps = .{ .mem, .unused },
101582104231 .clobbers = .{ .eflags = true },
101583104232 .each = .{ .once = &.{
101584 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
101585 .{ .@"0:", .v_, .cvttps2dq, .tmp1x, .memsia(.src0x, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
104233 .{ ._, ._, .mov, .tmp0d, .sia(-8, .dst0, .add_size), ._, ._ },
104234 .{ .@"0:", .v_, .cvttps2dq, .tmp1x, .memsi(.src0x, .@"2", .tmp0), ._, ._ },
101586104235 .{ ._, .vp_w, .ackusd, .tmp1x, .tmp1x, .tmp1x, ._ },
101587 .{ ._, .v_q, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
101588 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
101589 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
104236 .{ ._, .v_q, .mov, .memi(.dst0q, .tmp0), .tmp1x, ._, ._ },
104237 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
104238 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
101590104239 } },
101591104240 }, .{
101592104241 .required_features = .{ .sse4_1, null, null, null },
......@@ -101596,7 +104245,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101596104245 .{ .src = .{ .to_mem, .none, .none } },
101597104246 },
101598104247 .extra_temps = .{
101599 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
104248 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
101600104249 .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } },
101601104250 .unused,
101602104251 .unused,
......@@ -101611,12 +104260,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101611104260 .dst_temps = .{ .mem, .unused },
101612104261 .clobbers = .{ .eflags = true },
101613104262 .each = .{ .once = &.{
101614 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
101615 .{ .@"0:", ._, .cvttps2dq, .tmp1x, .memsia(.src0x, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
104263 .{ ._, ._, .mov, .tmp0d, .sia(-8, .dst0, .add_size), ._, ._ },
104264 .{ .@"0:", ._, .cvttps2dq, .tmp1x, .memsi(.src0x, .@"2", .tmp0), ._, ._ },
101616104265 .{ ._, .p_w, .ackusd, .tmp1x, .tmp1x, ._, ._ },
101617 .{ ._, ._q, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
101618 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
101619 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
104266 .{ ._, ._q, .mov, .memi(.dst0q, .tmp0), .tmp1x, ._, ._ },
104267 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
104268 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
101620104269 } },
101621104270 }, .{
101622104271 .required_features = .{ .avx, null, null, null },
......@@ -101627,10 +104276,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101627104276 },
101628104277 .call_frame = .{ .alignment = .@"16" },
101629104278 .extra_temps = .{
101630 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
101631 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
104279 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
104280 .{ .type = .f32, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
101632104281 .{ .type = .usize, .kind = .{ .extern_func = "__fixsfsi" } },
101633 .{ .type = .i32, .kind = .{ .reg = .eax } },
104282 .{ .type = .i32, .kind = .{ .ret_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
101634104283 .unused,
101635104284 .unused,
101636104285 .unused,
......@@ -101642,12 +104291,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101642104291 .dst_temps = .{ .mem, .unused },
101643104292 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
101644104293 .each = .{ .once = &.{
101645 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
101646 .{ .@"0:", .v_ss, .mov, .tmp1x, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
104294 .{ ._, ._, .mov, .tmp0d, .sia(-2, .dst0, .add_unaligned_size), ._, ._ },
104295 .{ .@"0:", .v_ss, .mov, .tmp1x, .memsi(.src0d, .@"2", .tmp0), ._, ._ },
101647104296 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
101648 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp3w, ._, ._ },
101649 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
101650 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
104297 .{ ._, ._, .mov, .memi(.dst0w, .tmp0), .tmp3w, ._, ._ },
104298 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
104299 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
101651104300 } },
101652104301 }, .{
101653104302 .required_features = .{ .sse, null, null, null },
......@@ -101658,10 +104307,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101658104307 },
101659104308 .call_frame = .{ .alignment = .@"16" },
101660104309 .extra_temps = .{
101661 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
101662 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
104310 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
104311 .{ .type = .f32, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
101663104312 .{ .type = .usize, .kind = .{ .extern_func = "__fixsfsi" } },
101664 .{ .type = .i32, .kind = .{ .reg = .eax } },
104313 .{ .type = .i32, .kind = .{ .ret_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
101665104314 .unused,
101666104315 .unused,
101667104316 .unused,
......@@ -101673,12 +104322,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101673104322 .dst_temps = .{ .mem, .unused },
101674104323 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
101675104324 .each = .{ .once = &.{
101676 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
101677 .{ .@"0:", ._ss, .mov, .tmp1x, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
104325 .{ ._, ._, .mov, .tmp0d, .sia(-2, .dst0, .add_unaligned_size), ._, ._ },
104326 .{ .@"0:", ._ss, .mov, .tmp1x, .memsi(.src0d, .@"2", .tmp0), ._, ._ },
101678104327 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
101679 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp3w, ._, ._ },
101680 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
101681 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
104328 .{ ._, ._, .mov, .memi(.dst0w, .tmp0), .tmp3w, ._, ._ },
104329 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
104330 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
101682104331 } },
101683104332 }, .{
101684104333 .required_features = .{ .avx, null, null, null },
......@@ -101712,7 +104361,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101712104361 .{ .src = .{ .to_mem, .none, .none } },
101713104362 },
101714104363 .extra_temps = .{
101715 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
104364 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
101716104365 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },
101717104366 .unused,
101718104367 .unused,
......@@ -101727,11 +104376,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101727104376 .dst_temps = .{ .mem, .unused },
101728104377 .clobbers = .{ .eflags = true },
101729104378 .each = .{ .once = &.{
101730 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
101731 .{ .@"0:", .v_, .cvttps2dq, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
101732 .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
101733 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
101734 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
104379 .{ ._, ._, .mov, .tmp0d, .sia(-16, .src0, .add_size), ._, ._ },
104380 .{ .@"0:", .v_, .cvttps2dq, .tmp1x, .memi(.src0x, .tmp0), ._, ._ },
104381 .{ ._, .v_dqa, .mov, .memi(.dst0x, .tmp0), .tmp1x, ._, ._ },
104382 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
104383 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
101735104384 } },
101736104385 }, .{
101737104386 .required_features = .{ .sse2, null, null, null },
......@@ -101741,7 +104390,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101741104390 .{ .src = .{ .to_mem, .none, .none } },
101742104391 },
101743104392 .extra_temps = .{
101744 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
104393 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
101745104394 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },
101746104395 .unused,
101747104396 .unused,
......@@ -101756,11 +104405,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101756104405 .dst_temps = .{ .mem, .unused },
101757104406 .clobbers = .{ .eflags = true },
101758104407 .each = .{ .once = &.{
101759 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
101760 .{ .@"0:", ._, .cvttps2dq, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
101761 .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
101762 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
101763 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
104408 .{ ._, ._, .mov, .tmp0d, .sia(-16, .src0, .add_size), ._, ._ },
104409 .{ .@"0:", ._, .cvttps2dq, .tmp1x, .memi(.src0x, .tmp0), ._, ._ },
104410 .{ ._, ._dqa, .mov, .memi(.dst0x, .tmp0), .tmp1x, ._, ._ },
104411 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
104412 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
101764104413 } },
101765104414 }, .{
101766104415 .required_features = .{ .avx, null, null, null },
......@@ -101771,10 +104420,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101771104420 },
101772104421 .call_frame = .{ .alignment = .@"16" },
101773104422 .extra_temps = .{
101774 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
101775 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
104423 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
104424 .{ .type = .f32, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
101776104425 .{ .type = .usize, .kind = .{ .extern_func = "__fixsfsi" } },
101777 .{ .type = .i32, .kind = .{ .reg = .eax } },
104426 .{ .type = .i32, .kind = .{ .ret_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
101778104427 .unused,
101779104428 .unused,
101780104429 .unused,
......@@ -101786,12 +104435,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101786104435 .dst_temps = .{ .mem, .unused },
101787104436 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
101788104437 .each = .{ .once = &.{
101789 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
101790 .{ .@"0:", .v_ss, .mov, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
104438 .{ ._, ._, .mov, .tmp0d, .sia(-4, .src0, .add_unaligned_size), ._, ._ },
104439 .{ .@"0:", .v_ss, .mov, .tmp1x, .memi(.src0d, .tmp0), ._, ._ },
101791104440 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
101792 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp3d, ._, ._ },
101793 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
101794 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
104441 .{ ._, ._, .mov, .memi(.dst0d, .tmp0), .tmp3d, ._, ._ },
104442 .{ ._, ._, .sub, .tmp0d, .si(4), ._, ._ },
104443 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
101795104444 } },
101796104445 }, .{
101797104446 .required_features = .{ .avx, null, null, null },
......@@ -101802,10 +104451,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101802104451 },
101803104452 .call_frame = .{ .alignment = .@"16" },
101804104453 .extra_temps = .{
101805 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
101806 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
104454 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
104455 .{ .type = .f32, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
101807104456 .{ .type = .usize, .kind = .{ .extern_func = "__fixunssfsi" } },
101808 .{ .type = .u32, .kind = .{ .reg = .eax } },
104457 .{ .type = .u32, .kind = .{ .ret_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
101809104458 .unused,
101810104459 .unused,
101811104460 .unused,
......@@ -101817,12 +104466,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101817104466 .dst_temps = .{ .mem, .unused },
101818104467 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
101819104468 .each = .{ .once = &.{
101820 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
101821 .{ .@"0:", .v_ss, .mov, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
104469 .{ ._, ._, .mov, .tmp0d, .sia(-4, .src0, .add_unaligned_size), ._, ._ },
104470 .{ .@"0:", .v_ss, .mov, .tmp1x, .memi(.src0d, .tmp0), ._, ._ },
101822104471 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
101823 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp3d, ._, ._ },
101824 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
101825 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
104472 .{ ._, ._, .mov, .memi(.dst0d, .tmp0), .tmp3d, ._, ._ },
104473 .{ ._, ._, .sub, .tmp0d, .si(4), ._, ._ },
104474 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
101826104475 } },
101827104476 }, .{
101828104477 .required_features = .{ .sse, null, null, null },
......@@ -101833,10 +104482,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101833104482 },
101834104483 .call_frame = .{ .alignment = .@"16" },
101835104484 .extra_temps = .{
101836 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
101837 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
104485 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
104486 .{ .type = .f32, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
101838104487 .{ .type = .usize, .kind = .{ .extern_func = "__fixsfsi" } },
101839 .{ .type = .i32, .kind = .{ .reg = .eax } },
104488 .{ .type = .i32, .kind = .{ .ret_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
101840104489 .unused,
101841104490 .unused,
101842104491 .unused,
......@@ -101848,12 +104497,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101848104497 .dst_temps = .{ .mem, .unused },
101849104498 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
101850104499 .each = .{ .once = &.{
101851 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
101852 .{ .@"0:", ._ss, .mov, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
104500 .{ ._, ._, .mov, .tmp0d, .sia(-4, .src0, .add_unaligned_size), ._, ._ },
104501 .{ .@"0:", ._ss, .mov, .tmp1x, .memi(.src0d, .tmp0), ._, ._ },
101853104502 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
101854 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp3d, ._, ._ },
101855 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
101856 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
104503 .{ ._, ._, .mov, .memi(.dst0d, .tmp0), .tmp3d, ._, ._ },
104504 .{ ._, ._, .sub, .tmp0d, .si(4), ._, ._ },
104505 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
101857104506 } },
101858104507 }, .{
101859104508 .required_features = .{ .sse, null, null, null },
......@@ -101864,10 +104513,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101864104513 },
101865104514 .call_frame = .{ .alignment = .@"16" },
101866104515 .extra_temps = .{
101867 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
101868 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
104516 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
104517 .{ .type = .f32, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
101869104518 .{ .type = .usize, .kind = .{ .extern_func = "__fixunssfsi" } },
101870 .{ .type = .u32, .kind = .{ .reg = .eax } },
104519 .{ .type = .u32, .kind = .{ .ret_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
101871104520 .unused,
101872104521 .unused,
101873104522 .unused,
......@@ -101879,12 +104528,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101879104528 .dst_temps = .{ .mem, .unused },
101880104529 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
101881104530 .each = .{ .once = &.{
101882 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
101883 .{ .@"0:", ._ss, .mov, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
104531 .{ ._, ._, .mov, .tmp0d, .sia(-4, .src0, .add_unaligned_size), ._, ._ },
104532 .{ .@"0:", ._ss, .mov, .tmp1x, .memi(.src0d, .tmp0), ._, ._ },
101884104533 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
101885 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp3d, ._, ._ },
101886 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
101887 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
104534 .{ ._, ._, .mov, .memi(.dst0d, .tmp0), .tmp3d, ._, ._ },
104535 .{ ._, ._, .sub, .tmp0d, .si(4), ._, ._ },
104536 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
101888104537 } },
101889104538 }, .{
101890104539 .required_features = .{ .@"64bit", .avx, null, null },
......@@ -101894,7 +104543,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101894104543 .{ .src = .{ .to_mem, .none, .none } },
101895104544 },
101896104545 .extra_temps = .{
101897 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
104546 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
101898104547 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
101899104548 .unused,
101900104549 .unused,
......@@ -101909,11 +104558,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101909104558 .dst_temps = .{ .mem, .unused },
101910104559 .clobbers = .{ .eflags = true },
101911104560 .each = .{ .once = &.{
101912 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
101913 .{ .@"0:", .v_, .cvttss2si, .tmp1q, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
101914 .{ ._, ._, .mov, .memsia(.dst0q, .@"2", .tmp0, .add_unaligned_size), .tmp1q, ._, ._ },
101915 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
101916 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
104561 .{ ._, ._, .mov, .tmp0d, .sia(-4, .src0, .add_unaligned_size), ._, ._ },
104562 .{ .@"0:", .v_, .cvttss2si, .tmp1q, .memi(.src0d, .tmp0), ._, ._ },
104563 .{ ._, ._, .mov, .memsi(.dst0q, .@"2", .tmp0), .tmp1q, ._, ._ },
104564 .{ ._, ._, .sub, .tmp0d, .si(4), ._, ._ },
104565 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
101917104566 } },
101918104567 }, .{
101919104568 .required_features = .{ .@"64bit", .sse, null, null },
......@@ -101923,7 +104572,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101923104572 .{ .src = .{ .to_mem, .none, .none } },
101924104573 },
101925104574 .extra_temps = .{
101926 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
104575 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
101927104576 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
101928104577 .unused,
101929104578 .unused,
......@@ -101938,11 +104587,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101938104587 .dst_temps = .{ .mem, .unused },
101939104588 .clobbers = .{ .eflags = true },
101940104589 .each = .{ .once = &.{
101941 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
101942 .{ .@"0:", ._, .cvttss2si, .tmp1q, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
101943 .{ ._, ._, .mov, .memsia(.dst0q, .@"2", .tmp0, .add_unaligned_size), .tmp1q, ._, ._ },
101944 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
101945 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
104590 .{ ._, ._, .mov, .tmp0d, .sia(-4, .src0, .add_unaligned_size), ._, ._ },
104591 .{ .@"0:", ._, .cvttss2si, .tmp1q, .memi(.src0d, .tmp0), ._, ._ },
104592 .{ ._, ._, .mov, .memsi(.dst0q, .@"2", .tmp0), .tmp1q, ._, ._ },
104593 .{ ._, ._, .sub, .tmp0d, .si(4), ._, ._ },
104594 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
101946104595 } },
101947104596 }, .{
101948104597 .required_features = .{ .avx, null, null, null },
......@@ -101953,10 +104602,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101953104602 },
101954104603 .call_frame = .{ .alignment = .@"16" },
101955104604 .extra_temps = .{
101956 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
101957 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
104605 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
104606 .{ .type = .f32, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
101958104607 .{ .type = .usize, .kind = .{ .extern_func = "__fixsfdi" } },
101959 .{ .type = .i64, .kind = .{ .reg = .rax } },
104608 .{ .type = .i64, .kind = .{ .ret_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
101960104609 .unused,
101961104610 .unused,
101962104611 .unused,
......@@ -101968,12 +104617,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101968104617 .dst_temps = .{ .mem, .unused },
101969104618 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
101970104619 .each = .{ .once = &.{
101971 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
101972 .{ .@"0:", .v_ss, .mov, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
104620 .{ ._, ._, .mov, .tmp0d, .sia(-4, .src0, .add_unaligned_size), ._, ._ },
104621 .{ .@"0:", .v_ss, .mov, .tmp1x, .memi(.src0d, .tmp0), ._, ._ },
101973104622 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
101974 .{ ._, ._, .mov, .memsia(.dst0q, .@"2", .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },
101975 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
101976 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
104623 .{ ._, ._, .mov, .memsi(.dst0q, .@"2", .tmp0), .tmp3q, ._, ._ },
104624 .{ ._, ._, .sub, .tmp0d, .si(4), ._, ._ },
104625 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
101977104626 } },
101978104627 }, .{
101979104628 .required_features = .{ .avx, null, null, null },
......@@ -101984,10 +104633,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101984104633 },
101985104634 .call_frame = .{ .alignment = .@"16" },
101986104635 .extra_temps = .{
101987 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
101988 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
104636 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
104637 .{ .type = .f32, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
101989104638 .{ .type = .usize, .kind = .{ .extern_func = "__fixunssfdi" } },
101990 .{ .type = .u64, .kind = .{ .reg = .rax } },
104639 .{ .type = .u64, .kind = .{ .ret_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
101991104640 .unused,
101992104641 .unused,
101993104642 .unused,
......@@ -101999,12 +104648,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101999104648 .dst_temps = .{ .mem, .unused },
102000104649 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
102001104650 .each = .{ .once = &.{
102002 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
102003 .{ .@"0:", .v_ss, .mov, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
104651 .{ ._, ._, .mov, .tmp0d, .sia(-4, .src0, .add_unaligned_size), ._, ._ },
104652 .{ .@"0:", .v_ss, .mov, .tmp1x, .memi(.src0d, .tmp0), ._, ._ },
102004104653 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
102005 .{ ._, ._, .mov, .memsia(.dst0q, .@"2", .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },
102006 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
102007 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
104654 .{ ._, ._, .mov, .memsi(.dst0q, .@"2", .tmp0), .tmp3q, ._, ._ },
104655 .{ ._, ._, .sub, .tmp0d, .si(4), ._, ._ },
104656 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
102008104657 } },
102009104658 }, .{
102010104659 .required_features = .{ .sse, null, null, null },
......@@ -102015,10 +104664,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
102015104664 },
102016104665 .call_frame = .{ .alignment = .@"16" },
102017104666 .extra_temps = .{
102018 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
102019 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
104667 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
104668 .{ .type = .f32, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
102020104669 .{ .type = .usize, .kind = .{ .extern_func = "__fixsfdi" } },
102021 .{ .type = .i64, .kind = .{ .reg = .rax } },
104670 .{ .type = .i64, .kind = .{ .ret_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
102022104671 .unused,
102023104672 .unused,
102024104673 .unused,
......@@ -102030,12 +104679,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
102030104679 .dst_temps = .{ .mem, .unused },
102031104680 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
102032104681 .each = .{ .once = &.{
102033 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
102034 .{ .@"0:", ._ss, .mov, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
104682 .{ ._, ._, .mov, .tmp0d, .sia(-4, .src0, .add_unaligned_size), ._, ._ },
104683 .{ .@"0:", ._ss, .mov, .tmp1x, .memi(.src0d, .tmp0), ._, ._ },
102035104684 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
102036 .{ ._, ._, .mov, .memsia(.dst0q, .@"2", .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },
102037 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
102038 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
104685 .{ ._, ._, .mov, .memsi(.dst0q, .@"2", .tmp0), .tmp3q, ._, ._ },
104686 .{ ._, ._, .sub, .tmp0d, .si(4), ._, ._ },
104687 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
102039104688 } },
102040104689 }, .{
102041104690 .required_features = .{ .sse, null, null, null },
......@@ -102046,10 +104695,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
102046104695 },
102047104696 .call_frame = .{ .alignment = .@"16" },
102048104697 .extra_temps = .{
102049 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
102050 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
104698 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
104699 .{ .type = .f32, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
102051104700 .{ .type = .usize, .kind = .{ .extern_func = "__fixunssfdi" } },
102052 .{ .type = .u64, .kind = .{ .reg = .rax } },
104701 .{ .type = .u64, .kind = .{ .ret_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
102053104702 .unused,
102054104703 .unused,
102055104704 .unused,
......@@ -102061,14 +104710,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
102061104710 .dst_temps = .{ .mem, .unused },
102062104711 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
102063104712 .each = .{ .once = &.{
102064 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
102065 .{ .@"0:", ._ss, .mov, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
104713 .{ ._, ._, .mov, .tmp0d, .sia(-4, .src0, .add_unaligned_size), ._, ._ },
104714 .{ .@"0:", ._ss, .mov, .tmp1x, .memi(.src0d, .tmp0), ._, ._ },
102066104715 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
102067 .{ ._, ._, .mov, .memsia(.dst0q, .@"2", .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },
102068 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
102069 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
104716 .{ ._, ._, .mov, .memsi(.dst0q, .@"2", .tmp0), .tmp3q, ._, ._ },
104717 .{ ._, ._, .sub, .tmp0d, .si(4), ._, ._ },
104718 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
102070104719 } },
102071104720 }, .{
104721 .required_cc_abi = .sysv64,
102072104722 .required_features = .{ .avx, null, null, null },
102073104723 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any },
102074104724 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any },
......@@ -102077,11 +104727,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
102077104727 },
102078104728 .call_frame = .{ .alignment = .@"16" },
102079104729 .extra_temps = .{
102080 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
102081 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
104730 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
104731 .{ .type = .f32, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
102082104732 .{ .type = .usize, .kind = .{ .extern_func = "__fixsfti" } },
102083 .{ .type = .u64, .kind = .{ .reg = .rax } },
102084 .{ .type = .i64, .kind = .{ .reg = .rdx } },
104733 .{ .type = .i128, .kind = .{ .ret_gpr_pair = .{ .cc = .ccc, .after = 0, .at = 0 } } },
104734 .unused,
102085104735 .unused,
102086104736 .unused,
102087104737 .unused,
......@@ -102092,15 +104742,48 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
102092104742 .dst_temps = .{ .mem, .unused },
102093104743 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
102094104744 .each = .{ .once = &.{
102095 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
102096 .{ .@"0:", .v_ss, .mov, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
104745 .{ ._, ._, .mov, .tmp0d, .sia(-4, .src0, .add_unaligned_size), ._, ._ },
104746 .{ .@"0:", .v_ss, .mov, .tmp1x, .memi(.src0d, .tmp0), ._, ._ },
102097104747 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
102098 .{ ._, ._, .mov, .memsia(.dst0q, .@"4", .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },
102099 .{ ._, ._, .mov, .memsiad(.dst0q, .@"4", .tmp0, .add_unaligned_size, 8), .tmp4q, ._, ._ },
102100 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
102101 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
104748 .{ ._, ._, .mov, .memsi(.dst0q, .@"4", .tmp0), .tmp3q0, ._, ._ },
104749 .{ ._, ._, .mov, .memsid(.dst0q, .@"4", .tmp0, 8), .tmp3q1, ._, ._ },
104750 .{ ._, ._, .sub, .tmp0d, .si(4), ._, ._ },
104751 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
102102104752 } },
102103104753 }, .{
104754 .required_cc_abi = .win64,
104755 .required_features = .{ .avx, null, null, null },
104756 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any },
104757 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any },
104758 .patterns = &.{
104759 .{ .src = .{ .to_mem, .none, .none } },
104760 },
104761 .call_frame = .{ .alignment = .@"16" },
104762 .extra_temps = .{
104763 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
104764 .{ .type = .f32, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
104765 .{ .type = .usize, .kind = .{ .extern_func = "__fixsfti" } },
104766 .unused,
104767 .unused,
104768 .unused,
104769 .unused,
104770 .unused,
104771 .unused,
104772 .unused,
104773 .unused,
104774 },
104775 .dst_temps = .{ .mem, .unused },
104776 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
104777 .each = .{ .once = &.{
104778 .{ ._, ._, .mov, .tmp0d, .sia(-4, .src0, .add_unaligned_size), ._, ._ },
104779 .{ .@"0:", .v_ss, .mov, .tmp1x, .memi(.src0d, .tmp0), ._, ._ },
104780 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
104781 .{ ._, .v_dqa, .mov, .memsi(.dst0x, .@"4", .tmp0), .tmp1x, ._, ._ },
104782 .{ ._, ._, .sub, .tmp0d, .si(4), ._, ._ },
104783 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
104784 } },
104785 }, .{
104786 .required_cc_abi = .sysv64,
102104104787 .required_features = .{ .avx, null, null, null },
102105104788 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any },
102106104789 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any },
......@@ -102109,11 +104792,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
102109104792 },
102110104793 .call_frame = .{ .alignment = .@"16" },
102111104794 .extra_temps = .{
102112 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
102113 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
104795 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
104796 .{ .type = .f32, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
102114104797 .{ .type = .usize, .kind = .{ .extern_func = "__fixunssfti" } },
102115 .{ .type = .u64, .kind = .{ .reg = .rax } },
102116 .{ .type = .u64, .kind = .{ .reg = .rdx } },
104798 .{ .type = .u128, .kind = .{ .ret_gpr_pair = .{ .cc = .ccc, .after = 0, .at = 0 } } },
104799 .unused,
102117104800 .unused,
102118104801 .unused,
102119104802 .unused,
......@@ -102124,15 +104807,112 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
102124104807 .dst_temps = .{ .mem, .unused },
102125104808 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
102126104809 .each = .{ .once = &.{
102127 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
102128 .{ .@"0:", .v_ss, .mov, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
104810 .{ ._, ._, .mov, .tmp0d, .sia(-4, .src0, .add_unaligned_size), ._, ._ },
104811 .{ .@"0:", .v_ss, .mov, .tmp1x, .memi(.src0d, .tmp0), ._, ._ },
102129104812 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
102130 .{ ._, ._, .mov, .memsia(.dst0q, .@"4", .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },
102131 .{ ._, ._, .mov, .memsiad(.dst0q, .@"4", .tmp0, .add_unaligned_size, 8), .tmp4q, ._, ._ },
102132 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
102133 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
104813 .{ ._, ._, .mov, .memsi(.dst0q, .@"4", .tmp0), .tmp3q0, ._, ._ },
104814 .{ ._, ._, .mov, .memsid(.dst0q, .@"4", .tmp0, 8), .tmp3q1, ._, ._ },
104815 .{ ._, ._, .sub, .tmp0d, .si(4), ._, ._ },
104816 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
104817 } },
104818 }, .{
104819 .required_cc_abi = .win64,
104820 .required_features = .{ .avx, null, null, null },
104821 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any },
104822 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any },
104823 .patterns = &.{
104824 .{ .src = .{ .to_mem, .none, .none } },
104825 },
104826 .call_frame = .{ .alignment = .@"16" },
104827 .extra_temps = .{
104828 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
104829 .{ .type = .f32, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
104830 .{ .type = .usize, .kind = .{ .extern_func = "__fixunssfti" } },
104831 .unused,
104832 .unused,
104833 .unused,
104834 .unused,
104835 .unused,
104836 .unused,
104837 .unused,
104838 .unused,
104839 },
104840 .dst_temps = .{ .mem, .unused },
104841 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
104842 .each = .{ .once = &.{
104843 .{ ._, ._, .mov, .tmp0d, .sia(-4, .src0, .add_unaligned_size), ._, ._ },
104844 .{ .@"0:", .v_ss, .mov, .tmp1x, .memi(.src0d, .tmp0), ._, ._ },
104845 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
104846 .{ ._, .v_dqa, .mov, .memsi(.dst0x, .@"4", .tmp0), .tmp1x, ._, ._ },
104847 .{ ._, ._, .sub, .tmp0d, .si(4), ._, ._ },
104848 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
104849 } },
104850 }, .{
104851 .required_cc_abi = .win64,
104852 .required_features = .{ .sse2, null, null, null },
104853 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any },
104854 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any },
104855 .patterns = &.{
104856 .{ .src = .{ .to_mem, .none, .none } },
104857 },
104858 .call_frame = .{ .alignment = .@"16" },
104859 .extra_temps = .{
104860 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
104861 .{ .type = .f32, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
104862 .{ .type = .usize, .kind = .{ .extern_func = "__fixsfti" } },
104863 .unused,
104864 .unused,
104865 .unused,
104866 .unused,
104867 .unused,
104868 .unused,
104869 .unused,
104870 .unused,
104871 },
104872 .dst_temps = .{ .mem, .unused },
104873 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
104874 .each = .{ .once = &.{
104875 .{ ._, ._, .mov, .tmp0d, .sia(-4, .src0, .add_unaligned_size), ._, ._ },
104876 .{ .@"0:", ._ss, .mov, .tmp1x, .memi(.src0d, .tmp0), ._, ._ },
104877 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
104878 .{ ._, ._dqa, .mov, .memsi(.dst0x, .@"4", .tmp0), .tmp1x, ._, ._ },
104879 .{ ._, ._, .sub, .tmp0d, .si(4), ._, ._ },
104880 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
104881 } },
104882 }, .{
104883 .required_cc_abi = .win64,
104884 .required_features = .{ .sse2, null, null, null },
104885 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any },
104886 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any },
104887 .patterns = &.{
104888 .{ .src = .{ .to_mem, .none, .none } },
104889 },
104890 .call_frame = .{ .alignment = .@"16" },
104891 .extra_temps = .{
104892 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
104893 .{ .type = .f32, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
104894 .{ .type = .usize, .kind = .{ .extern_func = "__fixunssfti" } },
104895 .unused,
104896 .unused,
104897 .unused,
104898 .unused,
104899 .unused,
104900 .unused,
104901 .unused,
104902 .unused,
104903 },
104904 .dst_temps = .{ .mem, .unused },
104905 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
104906 .each = .{ .once = &.{
104907 .{ ._, ._, .mov, .tmp0d, .sia(-4, .src0, .add_unaligned_size), ._, ._ },
104908 .{ .@"0:", ._ss, .mov, .tmp1x, .memi(.src0d, .tmp0), ._, ._ },
104909 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
104910 .{ ._, ._dqa, .mov, .memsi(.dst0x, .@"4", .tmp0), .tmp1x, ._, ._ },
104911 .{ ._, ._, .sub, .tmp0d, .si(4), ._, ._ },
104912 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
102134104913 } },
102135104914 }, .{
104915 .required_cc_abi = .sysv64,
102136104916 .required_features = .{ .sse, null, null, null },
102137104917 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any },
102138104918 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any },
......@@ -102141,11 +104921,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
102141104921 },
102142104922 .call_frame = .{ .alignment = .@"16" },
102143104923 .extra_temps = .{
102144 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
102145 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
104924 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
104925 .{ .type = .f32, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
102146104926 .{ .type = .usize, .kind = .{ .extern_func = "__fixsfti" } },
102147 .{ .type = .u64, .kind = .{ .reg = .rax } },
102148 .{ .type = .i64, .kind = .{ .reg = .rdx } },
104927 .{ .type = .i128, .kind = .{ .ret_gpr_pair = .{ .cc = .ccc, .after = 0, .at = 0 } } },
104928 .unused,
102149104929 .unused,
102150104930 .unused,
102151104931 .unused,
......@@ -102156,15 +104936,48 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
102156104936 .dst_temps = .{ .mem, .unused },
102157104937 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
102158104938 .each = .{ .once = &.{
102159 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
102160 .{ .@"0:", ._ss, .mov, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
104939 .{ ._, ._, .mov, .tmp0d, .sia(-4, .src0, .add_unaligned_size), ._, ._ },
104940 .{ .@"0:", ._ss, .mov, .tmp1x, .memi(.src0d, .tmp0), ._, ._ },
102161104941 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
102162 .{ ._, ._, .mov, .memsia(.dst0q, .@"4", .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },
102163 .{ ._, ._, .mov, .memsiad(.dst0q, .@"4", .tmp0, .add_unaligned_size, 8), .tmp4q, ._, ._ },
102164 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
102165 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
104942 .{ ._, ._, .mov, .memsi(.dst0q, .@"4", .tmp0), .tmp3q0, ._, ._ },
104943 .{ ._, ._, .mov, .memsid(.dst0q, .@"4", .tmp0, 8), .tmp3q1, ._, ._ },
104944 .{ ._, ._, .sub, .tmp0d, .si(4), ._, ._ },
104945 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
102166104946 } },
102167104947 }, .{
104948 .required_cc_abi = .win64,
104949 .required_features = .{ .sse, null, null, null },
104950 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any },
104951 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any },
104952 .patterns = &.{
104953 .{ .src = .{ .to_mem, .none, .none } },
104954 },
104955 .call_frame = .{ .alignment = .@"16" },
104956 .extra_temps = .{
104957 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
104958 .{ .type = .f32, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
104959 .{ .type = .usize, .kind = .{ .extern_func = "__fixsfti" } },
104960 .unused,
104961 .unused,
104962 .unused,
104963 .unused,
104964 .unused,
104965 .unused,
104966 .unused,
104967 .unused,
104968 },
104969 .dst_temps = .{ .mem, .unused },
104970 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
104971 .each = .{ .once = &.{
104972 .{ ._, ._, .mov, .tmp0d, .sia(-4, .src0, .add_unaligned_size), ._, ._ },
104973 .{ .@"0:", ._ss, .mov, .tmp1x, .memi(.src0d, .tmp0), ._, ._ },
104974 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
104975 .{ ._, ._ps, .mova, .memsi(.dst0x, .@"4", .tmp0), .tmp1x, ._, ._ },
104976 .{ ._, ._, .sub, .tmp0d, .si(4), ._, ._ },
104977 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
104978 } },
104979 }, .{
104980 .required_cc_abi = .sysv64,
102168104981 .required_features = .{ .sse, null, null, null },
102169104982 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any },
102170104983 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any },
......@@ -102173,11 +104986,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
102173104986 },
102174104987 .call_frame = .{ .alignment = .@"16" },
102175104988 .extra_temps = .{
102176 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
102177 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
104989 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
104990 .{ .type = .f32, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
102178104991 .{ .type = .usize, .kind = .{ .extern_func = "__fixunssfti" } },
102179 .{ .type = .u64, .kind = .{ .reg = .rax } },
102180 .{ .type = .u64, .kind = .{ .reg = .rdx } },
104992 .{ .type = .i128, .kind = .{ .ret_gpr_pair = .{ .cc = .ccc, .after = 0, .at = 0 } } },
104993 .unused,
102181104994 .unused,
102182104995 .unused,
102183104996 .unused,
......@@ -102188,13 +105001,45 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
102188105001 .dst_temps = .{ .mem, .unused },
102189105002 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
102190105003 .each = .{ .once = &.{
102191 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
102192 .{ .@"0:", ._ss, .mov, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
105004 .{ ._, ._, .mov, .tmp0d, .sia(-4, .src0, .add_unaligned_size), ._, ._ },
105005 .{ .@"0:", ._ss, .mov, .tmp1x, .memi(.src0d, .tmp0), ._, ._ },
102193105006 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
102194 .{ ._, ._, .mov, .memsia(.dst0q, .@"4", .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },
102195 .{ ._, ._, .mov, .memsiad(.dst0q, .@"4", .tmp0, .add_unaligned_size, 8), .tmp4q, ._, ._ },
102196 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
102197 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
105007 .{ ._, ._, .mov, .memsi(.dst0q, .@"4", .tmp0), .tmp3q0, ._, ._ },
105008 .{ ._, ._, .mov, .memsid(.dst0q, .@"4", .tmp0, 8), .tmp3q1, ._, ._ },
105009 .{ ._, ._, .sub, .tmp0d, .si(4), ._, ._ },
105010 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
105011 } },
105012 }, .{
105013 .required_cc_abi = .win64,
105014 .required_features = .{ .sse, null, null, null },
105015 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any },
105016 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any },
105017 .patterns = &.{
105018 .{ .src = .{ .to_mem, .none, .none } },
105019 },
105020 .call_frame = .{ .alignment = .@"16" },
105021 .extra_temps = .{
105022 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
105023 .{ .type = .f32, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
105024 .{ .type = .usize, .kind = .{ .extern_func = "__fixunssfti" } },
105025 .unused,
105026 .unused,
105027 .unused,
105028 .unused,
105029 .unused,
105030 .unused,
105031 .unused,
105032 .unused,
105033 },
105034 .dst_temps = .{ .mem, .unused },
105035 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
105036 .each = .{ .once = &.{
105037 .{ ._, ._, .mov, .tmp0d, .sia(-4, .src0, .add_unaligned_size), ._, ._ },
105038 .{ .@"0:", ._ss, .mov, .tmp1x, .memi(.src0d, .tmp0), ._, ._ },
105039 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
105040 .{ ._, ._ps, .mova, .memsi(.dst0x, .@"4", .tmp0), .tmp1x, ._, ._ },
105041 .{ ._, ._, .sub, .tmp0d, .si(4), ._, ._ },
105042 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
102198105043 } },
102199105044 }, .{
102200105045 .required_features = .{ .@"64bit", .avx, null, null },
......@@ -102205,11 +105050,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
102205105050 },
102206105051 .call_frame = .{ .alignment = .@"16" },
102207105052 .extra_temps = .{
102208 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
105053 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
102209105054 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
102210 .{ .type = .usize, .kind = .{ .reg = .rdi } },
102211 .{ .type = .usize, .kind = .{ .reg = .rsi } },
102212 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
105055 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
105056 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
105057 .{ .type = .f32, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 2 } } },
102213105058 .{ .type = .usize, .kind = .{ .extern_func = "__fixsfei" } },
102214105059 .unused,
102215105060 .unused,
......@@ -102220,15 +105065,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
102220105065 .dst_temps = .{ .mem, .unused },
102221105066 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
102222105067 .each = .{ .once = &.{
102223 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
102224 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
105068 .{ ._, ._, .mov, .tmp0d, .sia(-4, .src0, .add_unaligned_size), ._, ._ },
105069 .{ ._, ._, .lea, .tmp1p, .mema(.dst0, .add_unaligned_size_sub_elem_size), ._, ._ },
102225105070 .{ .@"0:", ._, .mov, .tmp2p, .tmp1p, ._, ._ },
102226105071 .{ ._, ._, .mov, .tmp3d, .sa(.dst0, .add_bit_size), ._, ._ },
102227 .{ ._, .v_ss, .mov, .tmp4x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
105072 .{ ._, .v_ss, .mov, .tmp4x, .memi(.src0d, .tmp0), ._, ._ },
102228105073 .{ ._, ._, .call, .tmp5d, ._, ._, ._ },
102229 .{ ._, ._, .lea, .tmp1p, .leaa(.tmp1, .add_dst0_elem_size), ._, ._ },
102230 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
102231 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
105074 .{ ._, ._, .lea, .tmp1p, .leaa(.tmp1, .sub_dst0_elem_size), ._, ._ },
105075 .{ ._, ._, .sub, .tmp0d, .si(4), ._, ._ },
105076 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
102232105077 } },
102233105078 }, .{
102234105079 .required_features = .{ .@"64bit", .avx, null, null },
......@@ -102239,11 +105084,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
102239105084 },
102240105085 .call_frame = .{ .alignment = .@"16" },
102241105086 .extra_temps = .{
102242 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
105087 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
102243105088 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
102244 .{ .type = .usize, .kind = .{ .reg = .rdi } },
102245 .{ .type = .usize, .kind = .{ .reg = .rsi } },
102246 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
105089 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
105090 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
105091 .{ .type = .f32, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 2 } } },
102247105092 .{ .type = .usize, .kind = .{ .extern_func = "__fixunssfei" } },
102248105093 .unused,
102249105094 .unused,
......@@ -102254,15 +105099,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
102254105099 .dst_temps = .{ .mem, .unused },
102255105100 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
102256105101 .each = .{ .once = &.{
102257 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
102258 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
105102 .{ ._, ._, .mov, .tmp0d, .sia(-4, .src0, .add_unaligned_size), ._, ._ },
105103 .{ ._, ._, .lea, .tmp1p, .mema(.dst0, .add_unaligned_size_sub_elem_size), ._, ._ },
102259105104 .{ .@"0:", ._, .mov, .tmp2p, .tmp1p, ._, ._ },
102260105105 .{ ._, ._, .mov, .tmp3d, .sa(.dst0, .add_bit_size), ._, ._ },
102261 .{ ._, .v_ss, .mov, .tmp4x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
105106 .{ ._, .v_ss, .mov, .tmp4x, .memi(.src0d, .tmp0), ._, ._ },
102262105107 .{ ._, ._, .call, .tmp5d, ._, ._, ._ },
102263 .{ ._, ._, .lea, .tmp1p, .leaa(.tmp1, .add_dst0_elem_size), ._, ._ },
102264 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
102265 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
105108 .{ ._, ._, .lea, .tmp1p, .leaa(.tmp1, .sub_dst0_elem_size), ._, ._ },
105109 .{ ._, ._, .sub, .tmp0d, .si(4), ._, ._ },
105110 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
102266105111 } },
102267105112 }, .{
102268105113 .required_features = .{ .@"64bit", .sse, null, null },
......@@ -102273,11 +105118,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
102273105118 },
102274105119 .call_frame = .{ .alignment = .@"16" },
102275105120 .extra_temps = .{
102276 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
105121 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
102277105122 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
102278 .{ .type = .usize, .kind = .{ .reg = .rdi } },
102279 .{ .type = .usize, .kind = .{ .reg = .rsi } },
102280 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
105123 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
105124 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
105125 .{ .type = .f32, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 2 } } },
102281105126 .{ .type = .usize, .kind = .{ .extern_func = "__fixsfei" } },
102282105127 .unused,
102283105128 .unused,
......@@ -102288,15 +105133,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
102288105133 .dst_temps = .{ .mem, .unused },
102289105134 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
102290105135 .each = .{ .once = &.{
102291 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
102292 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
105136 .{ ._, ._, .mov, .tmp0d, .sia(-4, .src0, .add_unaligned_size), ._, ._ },
105137 .{ ._, ._, .lea, .tmp1p, .mema(.dst0, .add_unaligned_size_sub_elem_size), ._, ._ },
102293105138 .{ .@"0:", ._, .mov, .tmp2p, .tmp1p, ._, ._ },
102294105139 .{ ._, ._, .mov, .tmp3d, .sa(.dst0, .add_bit_size), ._, ._ },
102295 .{ ._, ._ss, .mov, .tmp4x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
105140 .{ ._, ._ss, .mov, .tmp4x, .memi(.src0d, .tmp0), ._, ._ },
102296105141 .{ ._, ._, .call, .tmp5d, ._, ._, ._ },
102297 .{ ._, ._, .lea, .tmp1p, .leaa(.tmp1, .add_dst0_elem_size), ._, ._ },
102298 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
102299 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
105142 .{ ._, ._, .lea, .tmp1p, .leaa(.tmp1, .sub_dst0_elem_size), ._, ._ },
105143 .{ ._, ._, .sub, .tmp0d, .si(4), ._, ._ },
105144 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
102300105145 } },
102301105146 }, .{
102302105147 .required_features = .{ .@"64bit", .sse, null, null },
......@@ -102307,11 +105152,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
102307105152 },
102308105153 .call_frame = .{ .alignment = .@"16" },
102309105154 .extra_temps = .{
102310 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
105155 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
102311105156 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
102312 .{ .type = .usize, .kind = .{ .reg = .rdi } },
102313 .{ .type = .usize, .kind = .{ .reg = .rsi } },
102314 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
105157 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
105158 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
105159 .{ .type = .f32, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 2 } } },
102315105160 .{ .type = .usize, .kind = .{ .extern_func = "__fixunssfei" } },
102316105161 .unused,
102317105162 .unused,
......@@ -102322,15 +105167,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
102322105167 .dst_temps = .{ .mem, .unused },
102323105168 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
102324105169 .each = .{ .once = &.{
102325 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
102326 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
105170 .{ ._, ._, .mov, .tmp0d, .sia(-4, .src0, .add_unaligned_size), ._, ._ },
105171 .{ ._, ._, .lea, .tmp1p, .mema(.dst0, .add_unaligned_size_sub_elem_size), ._, ._ },
102327105172 .{ .@"0:", ._, .mov, .tmp2p, .tmp1p, ._, ._ },
102328105173 .{ ._, ._, .mov, .tmp3d, .sa(.dst0, .add_bit_size), ._, ._ },
102329 .{ ._, ._ss, .mov, .tmp4x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
105174 .{ ._, ._ss, .mov, .tmp4x, .memi(.src0d, .tmp0), ._, ._ },
102330105175 .{ ._, ._, .call, .tmp5d, ._, ._, ._ },
102331 .{ ._, ._, .lea, .tmp1p, .leaa(.tmp1, .add_dst0_elem_size), ._, ._ },
102332 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
102333 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
105176 .{ ._, ._, .lea, .tmp1p, .leaa(.tmp1, .sub_dst0_elem_size), ._, ._ },
105177 .{ ._, ._, .sub, .tmp0d, .si(4), ._, ._ },
105178 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
102334105179 } },
102335105180 }, .{
102336105181 .required_features = .{ .avx, null, null, null },
......@@ -102643,11 +105488,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
102643105488 .{ ._, ._, .@"or", .dst0q, .tmp5q, ._, ._ },
102644105489 } },
102645105490 }, .{
102646 .required_features = .{ .@"64bit", .sse, null, null },
105491 .required_cc_abi = .sysv64,
105492 .required_features = .{ .sse, null, null, null },
102647105493 .src_constraints = .{ .{ .float = .qword }, .any, .any },
102648105494 .dst_constraints = .{ .{ .signed_int = .xword }, .any },
102649105495 .patterns = &.{
102650 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },
105496 .{ .src = .{ .{ .to_param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .none, .none } },
102651105497 },
102652105498 .call_frame = .{ .alignment = .@"16" },
102653105499 .extra_temps = .{
......@@ -102663,17 +105509,45 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
102663105509 .unused,
102664105510 .unused,
102665105511 },
102666 .dst_temps = .{ .{ .reg_pair = .{ .rax, .rdx } }, .unused },
105512 .dst_temps = .{ .{ .ret_gpr_pair = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
102667105513 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
102668105514 .each = .{ .once = &.{
102669105515 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
102670105516 } },
102671105517 }, .{
102672 .required_features = .{ .@"64bit", .sse, null, null },
105518 .required_cc_abi = .win64,
105519 .required_features = .{ .sse, null, null, null },
105520 .src_constraints = .{ .{ .float = .qword }, .any, .any },
105521 .dst_constraints = .{ .{ .signed_int = .xword }, .any },
105522 .patterns = &.{
105523 .{ .src = .{ .{ .to_param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .none, .none } },
105524 },
105525 .call_frame = .{ .alignment = .@"16" },
105526 .extra_temps = .{
105527 .{ .type = .usize, .kind = .{ .extern_func = "__fixdfti" } },
105528 .unused,
105529 .unused,
105530 .unused,
105531 .unused,
105532 .unused,
105533 .unused,
105534 .unused,
105535 .unused,
105536 .unused,
105537 .unused,
105538 },
105539 .dst_temps = .{ .{ .ref = .src0 }, .unused },
105540 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
105541 .each = .{ .once = &.{
105542 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
105543 } },
105544 }, .{
105545 .required_cc_abi = .sysv64,
105546 .required_features = .{ .sse, null, null, null },
102673105547 .src_constraints = .{ .{ .float = .qword }, .any, .any },
102674105548 .dst_constraints = .{ .{ .unsigned_int = .xword }, .any },
102675105549 .patterns = &.{
102676 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },
105550 .{ .src = .{ .{ .to_param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .none, .none } },
102677105551 },
102678105552 .call_frame = .{ .alignment = .@"16" },
102679105553 .extra_temps = .{
......@@ -102689,7 +105563,34 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
102689105563 .unused,
102690105564 .unused,
102691105565 },
102692 .dst_temps = .{ .{ .reg_pair = .{ .rax, .rdx } }, .unused },
105566 .dst_temps = .{ .{ .ret_gpr_pair = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
105567 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
105568 .each = .{ .once = &.{
105569 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
105570 } },
105571 }, .{
105572 .required_cc_abi = .win64,
105573 .required_features = .{ .sse, null, null, null },
105574 .src_constraints = .{ .{ .float = .qword }, .any, .any },
105575 .dst_constraints = .{ .{ .unsigned_int = .xword }, .any },
105576 .patterns = &.{
105577 .{ .src = .{ .{ .to_param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .none, .none } },
105578 },
105579 .call_frame = .{ .alignment = .@"16" },
105580 .extra_temps = .{
105581 .{ .type = .usize, .kind = .{ .extern_func = "__fixunsdfti" } },
105582 .unused,
105583 .unused,
105584 .unused,
105585 .unused,
105586 .unused,
105587 .unused,
105588 .unused,
105589 .unused,
105590 .unused,
105591 .unused,
105592 },
105593 .dst_temps = .{ .{ .ref = .src0 }, .unused },
102693105594 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
102694105595 .each = .{ .once = &.{
102695105596 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
......@@ -102699,12 +105600,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
102699105600 .src_constraints = .{ .{ .float = .qword }, .any, .any },
102700105601 .dst_constraints = .{ .{ .remainder_signed_int = .{ .of = .dword, .is = .dword } }, .any },
102701105602 .patterns = &.{
102702 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },
105603 .{ .src = .{ .{ .to_param_sse = .{ .cc = .ccc, .after = 0, .at = 2 } }, .none, .none } },
102703105604 },
102704105605 .call_frame = .{ .alignment = .@"16" },
102705105606 .extra_temps = .{
102706 .{ .type = .usize, .kind = .{ .reg = .rdi } },
102707 .{ .type = .usize, .kind = .{ .reg = .rsi } },
105607 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
105608 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
102708105609 .{ .type = .usize, .kind = .{ .extern_func = "__fixdfei" } },
102709105610 .unused,
102710105611 .unused,
......@@ -102727,12 +105628,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
102727105628 .src_constraints = .{ .{ .float = .qword }, .any, .any },
102728105629 .dst_constraints = .{ .{ .remainder_unsigned_int = .{ .of = .dword, .is = .dword } }, .any },
102729105630 .patterns = &.{
102730 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },
105631 .{ .src = .{ .{ .to_param_sse = .{ .cc = .ccc, .after = 0, .at = 2 } }, .none, .none } },
102731105632 },
102732105633 .call_frame = .{ .alignment = .@"16" },
102733105634 .extra_temps = .{
102734 .{ .type = .usize, .kind = .{ .reg = .rdi } },
102735 .{ .type = .usize, .kind = .{ .reg = .rsi } },
105635 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
105636 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
102736105637 .{ .type = .usize, .kind = .{ .extern_func = "__fixunsdfei" } },
102737105638 .unused,
102738105639 .unused,
......@@ -102839,7 +105740,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
102839105740 .{ .src = .{ .to_mem, .none, .none } },
102840105741 },
102841105742 .extra_temps = .{
102842 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
105743 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
102843105744 .{ .type = .vector_16_u8, .kind = .{ .pshufb_trunc_mem = .{ .from = .dword, .to = .byte } } },
102844105745 .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } },
102845105746 .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } },
......@@ -102856,22 +105757,22 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
102856105757 .each = .{ .once = &.{
102857105758 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
102858105759 .{ ._, .v_dqa, .mov, .tmp2x, .lea(.tmp0x), ._, ._ },
102859 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
102860 .{ .@"0:", .v_, .cvttpd2dq, .tmp3x, .memsia(.src0y, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
105760 .{ ._, ._, .mov, .tmp0d, .sia(-4, .dst0, .add_size), ._, ._ },
105761 .{ .@"0:", .v_, .cvttpd2dq, .tmp3x, .memsi(.src0y, .@"8", .tmp0), ._, ._ },
102861105762 .{ ._, .vp_b, .shuf, .tmp3x, .tmp3x, .tmp2x, ._ },
102862 .{ ._, .v_d, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
102863 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
102864 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
105763 .{ ._, .v_d, .mov, .memi(.dst0d, .tmp0), .tmp3x, ._, ._ },
105764 .{ ._, ._, .sub, .tmp0d, .si(4), ._, ._ },
105765 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
102865105766 } },
102866105767 }, .{
102867 .required_features = .{ .ssse3, null, null, null },
105768 .required_features = .{ .sse4_1, null, null, null },
102868105769 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } }, .any, .any },
102869105770 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .word, .is = .byte } }, .any },
102870105771 .patterns = &.{
102871105772 .{ .src = .{ .to_mem, .none, .none } },
102872105773 },
102873105774 .extra_temps = .{
102874 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
105775 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
102875105776 .{ .type = .vector_16_u8, .kind = .{ .pshufb_trunc_mem = .{ .from = .dword, .to = .byte } } },
102876105777 .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } },
102877105778 .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } },
......@@ -102888,12 +105789,45 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
102888105789 .each = .{ .once = &.{
102889105790 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
102890105791 .{ ._, ._dqa, .mov, .tmp2x, .lea(.tmp0x), ._, ._ },
102891 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
102892 .{ .@"0:", ._, .cvttpd2dq, .tmp3x, .memsia(.src0x, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
105792 .{ ._, ._, .mov, .tmp0d, .sia(-2, .dst0, .add_size), ._, ._ },
105793 .{ .@"0:", ._, .cvttpd2dq, .tmp3x, .memsi(.src0x, .@"8", .tmp0), ._, ._ },
102893105794 .{ ._, .p_b, .shuf, .tmp3x, .tmp2x, ._, ._ },
102894 .{ ._, ._d, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
102895 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
102896 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
105795 .{ ._, .p_w, .extr, .memi(.dst0w, .tmp0), .tmp3x, .ui(0), ._ },
105796 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
105797 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
105798 } },
105799 }, .{
105800 .required_features = .{ .ssse3, null, null, null },
105801 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } }, .any, .any },
105802 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .word, .is = .byte } }, .any },
105803 .patterns = &.{
105804 .{ .src = .{ .to_mem, .none, .none } },
105805 },
105806 .extra_temps = .{
105807 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
105808 .{ .type = .vector_16_u8, .kind = .{ .pshufb_trunc_mem = .{ .from = .dword, .to = .byte } } },
105809 .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } },
105810 .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } },
105811 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
105812 .unused,
105813 .unused,
105814 .unused,
105815 .unused,
105816 .unused,
105817 .unused,
105818 },
105819 .dst_temps = .{ .mem, .unused },
105820 .clobbers = .{ .eflags = true },
105821 .each = .{ .once = &.{
105822 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
105823 .{ ._, ._dqa, .mov, .tmp2x, .lea(.tmp0x), ._, ._ },
105824 .{ ._, ._, .mov, .tmp0d, .sia(-2, .dst0, .add_size), ._, ._ },
105825 .{ .@"0:", ._, .cvttpd2dq, .tmp3x, .memsi(.src0x, .@"8", .tmp0), ._, ._ },
105826 .{ ._, .p_b, .shuf, .tmp3x, .tmp2x, ._, ._ },
105827 .{ ._, ._d, .mov, .tmp4d, .tmp3x, ._, ._ },
105828 .{ ._, ._, .mov, .memi(.dst0w, .tmp0), .tmp4w, ._, ._ },
105829 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
105830 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
102897105831 } },
102898105832 }, .{
102899105833 .required_features = .{ .sse2, .slow_incdec, null, null },
......@@ -102903,7 +105837,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
102903105837 .{ .src = .{ .to_mem, .none, .none } },
102904105838 },
102905105839 .extra_temps = .{
102906 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
105840 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
102907105841 .{ .type = .i32, .kind = .{ .rc = .general_purpose } },
102908105842 .unused,
102909105843 .unused,
......@@ -102918,11 +105852,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
102918105852 .dst_temps = .{ .mem, .unused },
102919105853 .clobbers = .{ .eflags = true },
102920105854 .each = .{ .once = &.{
102921 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
102922 .{ .@"0:", ._, .cvttsd2si, .tmp1d, .memsia(.src0q, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
102923 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
102924 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
102925 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
105855 .{ ._, ._, .mov, .tmp0d, .sia(-1, .dst0, .add_unaligned_size), ._, ._ },
105856 .{ .@"0:", ._, .cvttsd2si, .tmp1d, .memsi(.src0q, .@"8", .tmp0), ._, ._ },
105857 .{ ._, ._, .mov, .memi(.dst0b, .tmp0), .tmp1b, ._, ._ },
105858 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
105859 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
102926105860 } },
102927105861 }, .{
102928105862 .required_features = .{ .sse2, null, null, null },
......@@ -102932,7 +105866,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
102932105866 .{ .src = .{ .to_mem, .none, .none } },
102933105867 },
102934105868 .extra_temps = .{
102935 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
105869 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
102936105870 .{ .type = .i32, .kind = .{ .rc = .general_purpose } },
102937105871 .unused,
102938105872 .unused,
......@@ -102947,11 +105881,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
102947105881 .dst_temps = .{ .mem, .unused },
102948105882 .clobbers = .{ .eflags = true },
102949105883 .each = .{ .once = &.{
102950 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
102951 .{ .@"0:", ._, .cvttsd2si, .tmp1d, .memsia(.src0q, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
102952 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
102953 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
102954 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
105884 .{ ._, ._, .mov, .tmp0d, .sia(-1, .dst0, .add_unaligned_size), ._, ._ },
105885 .{ .@"0:", ._, .cvttsd2si, .tmp1d, .memsi(.src0q, .@"8", .tmp0), ._, ._ },
105886 .{ ._, ._, .mov, .memi(.dst0b, .tmp0), .tmp1b, ._, ._ },
105887 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
105888 .{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
102955105889 } },
102956105890 }, .{
102957105891 .required_features = .{ .x87, .slow_incdec, null, null },
......@@ -102961,7 +105895,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
102961105895 .{ .src = .{ .to_mem, .none, .none } },
102962105896 },
102963105897 .extra_temps = .{
102964 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
105898 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
102965105899 .{ .type = .u16, .kind = .mem },
102966105900 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
102967105901 .{ .type = .f64, .kind = .{ .reg = .st7 } },
......@@ -102976,18 +105910,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
102976105910 .dst_temps = .{ .mem, .unused },
102977105911 .clobbers = .{ .eflags = true },
102978105912 .each = .{ .once = &.{
102979 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
105913 .{ ._, ._, .mov, .tmp0d, .sia(-1, .dst0, .add_unaligned_size), ._, ._ },
102980105914 .{ ._, .fn_cw, .st, .tmp1w, ._, ._, ._ },
102981105915 .{ ._, ._, .movzx, .tmp2d, .memd(.tmp1b, 1), ._, ._ },
102982105916 .{ ._, ._, .@"or", .memd(.tmp1b, 1), .ui(0b000_0_11_00), ._, ._ },
102983105917 .{ ._, .f_cw, .ld, .tmp1w, ._, ._, ._ },
102984105918 .{ ._, ._, .mov, .memd(.tmp1b, 1), .tmp2b, ._, ._ },
102985 .{ .@"0:", .f_, .ld, .memsia(.src0q, .@"8", .tmp0, .add_unaligned_size), ._, ._, ._ },
105919 .{ .@"0:", .f_, .ld, .memsi(.src0q, .@"8", .tmp0), ._, ._, ._ },
102986105920 .{ ._, .fi_p, .st, .tmp4w, ._, ._, ._ },
102987105921 .{ ._, ._, .movzx, .tmp2d, .tmp4b, ._, ._ },
102988 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp2b, ._, ._ },
102989 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
102990 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
105922 .{ ._, ._, .mov, .memi(.dst0b, .tmp0), .tmp2b, ._, ._ },
105923 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
105924 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
102991105925 .{ ._, .f_cw, .ld, .tmp1w, ._, ._, ._ },
102992105926 } },
102993105927 }, .{
......@@ -102998,7 +105932,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
102998105932 .{ .src = .{ .to_mem, .none, .none } },
102999105933 },
103000105934 .extra_temps = .{
103001 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
105935 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
103002105936 .{ .type = .u16, .kind = .mem },
103003105937 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
103004105938 .{ .type = .f64, .kind = .{ .reg = .st7 } },
......@@ -103013,18 +105947,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
103013105947 .dst_temps = .{ .mem, .unused },
103014105948 .clobbers = .{ .eflags = true },
103015105949 .each = .{ .once = &.{
103016 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
105950 .{ ._, ._, .mov, .tmp0d, .sia(-1, .dst0, .add_unaligned_size), ._, ._ },
103017105951 .{ ._, .fn_cw, .st, .tmp1w, ._, ._, ._ },
103018105952 .{ ._, ._, .movzx, .tmp2d, .memd(.tmp1b, 1), ._, ._ },
103019105953 .{ ._, ._, .@"or", .memd(.tmp1b, 1), .ui(0b000_0_11_00), ._, ._ },
103020105954 .{ ._, .f_cw, .ld, .tmp1w, ._, ._, ._ },
103021105955 .{ ._, ._, .mov, .memd(.tmp1b, 1), .tmp2b, ._, ._ },
103022 .{ .@"0:", .f_, .ld, .memsia(.src0q, .@"8", .tmp0, .add_unaligned_size), ._, ._, ._ },
105956 .{ .@"0:", .f_, .ld, .memsi(.src0q, .@"8", .tmp0), ._, ._, ._ },
103023105957 .{ ._, .fi_p, .st, .tmp4w, ._, ._, ._ },
103024105958 .{ ._, ._, .movzx, .tmp2d, .tmp4b, ._, ._ },
103025 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp2b, ._, ._ },
103026 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
103027 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
105959 .{ ._, ._, .mov, .memi(.dst0b, .tmp0), .tmp2b, ._, ._ },
105960 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
105961 .{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
103028105962 .{ ._, .f_cw, .ld, .tmp1w, ._, ._, ._ },
103029105963 } },
103030105964 }, .{
......@@ -103036,10 +105970,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
103036105970 },
103037105971 .call_frame = .{ .alignment = .@"16" },
103038105972 .extra_temps = .{
103039 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
103040 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
105973 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
105974 .{ .type = .f64, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
103041105975 .{ .type = .usize, .kind = .{ .extern_func = "__fixdfsi" } },
103042 .{ .type = .i32, .kind = .{ .reg = .eax } },
105976 .{ .type = .i32, .kind = .{ .ret_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
103043105977 .unused,
103044105978 .unused,
103045105979 .unused,
......@@ -103051,12 +105985,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
103051105985 .dst_temps = .{ .mem, .unused },
103052105986 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
103053105987 .each = .{ .once = &.{
103054 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
103055 .{ .@"0:", .v_sd, .mov, .tmp1x, .memsia(.src0q, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
105988 .{ ._, ._, .mov, .tmp0d, .sia(-1, .dst0, .add_unaligned_size), ._, ._ },
105989 .{ .@"0:", .v_sd, .mov, .tmp1x, .memsi(.src0q, .@"8", .tmp0), ._, ._ },
103056105990 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
103057 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp3b, ._, ._ },
103058 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
103059 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
105991 .{ ._, ._, .mov, .memi(.dst0b, .tmp0), .tmp3b, ._, ._ },
105992 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
105993 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
103060105994 } },
103061105995 }, .{
103062105996 .required_features = .{ .avx, null, null, null },
......@@ -103067,10 +106001,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
103067106001 },
103068106002 .call_frame = .{ .alignment = .@"16" },
103069106003 .extra_temps = .{
103070 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
103071 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
106004 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
106005 .{ .type = .f64, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
103072106006 .{ .type = .usize, .kind = .{ .extern_func = "__fixdfsi" } },
103073 .{ .type = .i32, .kind = .{ .reg = .eax } },
106007 .{ .type = .i32, .kind = .{ .ret_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
103074106008 .unused,
103075106009 .unused,
103076106010 .unused,
......@@ -103082,12 +106016,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
103082106016 .dst_temps = .{ .mem, .unused },
103083106017 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
103084106018 .each = .{ .once = &.{
103085 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
103086 .{ .@"0:", .v_sd, .mov, .tmp1x, .memsia(.src0q, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
106019 .{ ._, ._, .mov, .tmp0d, .sia(-1, .dst0, .add_unaligned_size), ._, ._ },
106020 .{ .@"0:", .v_sd, .mov, .tmp1x, .memsi(.src0q, .@"8", .tmp0), ._, ._ },
103087106021 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
103088 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp3b, ._, ._ },
103089 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
103090 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
106022 .{ ._, ._, .mov, .memi(.dst0b, .tmp0), .tmp3b, ._, ._ },
106023 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
106024 .{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
103091106025 } },
103092106026 }, .{
103093106027 .required_features = .{ .sse2, .slow_incdec, null, null },
......@@ -103098,10 +106032,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
103098106032 },
103099106033 .call_frame = .{ .alignment = .@"16" },
103100106034 .extra_temps = .{
103101 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
103102 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
106035 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
106036 .{ .type = .f64, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
103103106037 .{ .type = .usize, .kind = .{ .extern_func = "__fixdfsi" } },
103104 .{ .type = .i32, .kind = .{ .reg = .eax } },
106038 .{ .type = .i32, .kind = .{ .ret_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
103105106039 .unused,
103106106040 .unused,
103107106041 .unused,
......@@ -103113,12 +106047,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
103113106047 .dst_temps = .{ .mem, .unused },
103114106048 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
103115106049 .each = .{ .once = &.{
103116 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
103117 .{ .@"0:", ._sd, .mov, .tmp1x, .memsia(.src0q, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
106050 .{ ._, ._, .mov, .tmp0d, .sia(-1, .dst0, .add_unaligned_size), ._, ._ },
106051 .{ .@"0:", ._sd, .mov, .tmp1x, .memsi(.src0q, .@"8", .tmp0), ._, ._ },
103118106052 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
103119 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp3b, ._, ._ },
103120 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
103121 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
106053 .{ ._, ._, .mov, .memi(.dst0b, .tmp0), .tmp3b, ._, ._ },
106054 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
106055 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
103122106056 } },
103123106057 }, .{
103124106058 .required_features = .{ .sse2, null, null, null },
......@@ -103129,10 +106063,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
103129106063 },
103130106064 .call_frame = .{ .alignment = .@"16" },
103131106065 .extra_temps = .{
103132 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
103133 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
106066 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
106067 .{ .type = .f64, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
103134106068 .{ .type = .usize, .kind = .{ .extern_func = "__fixsfsi" } },
103135 .{ .type = .i32, .kind = .{ .reg = .eax } },
106069 .{ .type = .i32, .kind = .{ .ret_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
103136106070 .unused,
103137106071 .unused,
103138106072 .unused,
......@@ -103144,12 +106078,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
103144106078 .dst_temps = .{ .mem, .unused },
103145106079 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
103146106080 .each = .{ .once = &.{
103147 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
103148 .{ .@"0:", ._sd, .mov, .tmp1x, .memsia(.src0q, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
106081 .{ ._, ._, .mov, .tmp0d, .sia(-1, .dst0, .add_unaligned_size), ._, ._ },
106082 .{ .@"0:", ._sd, .mov, .tmp1x, .memsi(.src0q, .@"8", .tmp0), ._, ._ },
103149106083 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
103150 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp3b, ._, ._ },
103151 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
103152 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
106084 .{ ._, ._, .mov, .memi(.dst0b, .tmp0), .tmp3b, ._, ._ },
106085 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
106086 .{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
103153106087 } },
103154106088 }, .{
103155106089 .required_features = .{ .sse, .slow_incdec, null, null },
......@@ -103160,10 +106094,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
103160106094 },
103161106095 .call_frame = .{ .alignment = .@"16" },
103162106096 .extra_temps = .{
103163 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
103164 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
106097 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
106098 .{ .type = .f64, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
103165106099 .{ .type = .usize, .kind = .{ .extern_func = "__fixdfsi" } },
103166 .{ .type = .i32, .kind = .{ .reg = .eax } },
106100 .{ .type = .i32, .kind = .{ .ret_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
103167106101 .unused,
103168106102 .unused,
103169106103 .unused,
......@@ -103175,13 +106109,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
103175106109 .dst_temps = .{ .mem, .unused },
103176106110 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
103177106111 .each = .{ .once = &.{
103178 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
106112 .{ ._, ._, .mov, .tmp0d, .sia(-1, .dst0, .add_unaligned_size), ._, ._ },
103179106113 .{ .@"0:", ._ps, .xor, .tmp1x, .tmp1x, ._, ._ },
103180 .{ ._, ._ps, .movl, .tmp1x, .memsia(.src0q, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
106114 .{ ._, ._ps, .movl, .tmp1x, .memsi(.src0q, .@"8", .tmp0), ._, ._ },
103181106115 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
103182 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp3b, ._, ._ },
103183 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
103184 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
106116 .{ ._, ._, .mov, .memi(.dst0b, .tmp0), .tmp3b, ._, ._ },
106117 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
106118 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
103185106119 } },
103186106120 }, .{
103187106121 .required_features = .{ .sse, null, null, null },
......@@ -103192,10 +106126,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
103192106126 },
103193106127 .call_frame = .{ .alignment = .@"16" },
103194106128 .extra_temps = .{
103195 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
103196 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
106129 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
106130 .{ .type = .f64, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
103197106131 .{ .type = .usize, .kind = .{ .extern_func = "__fixsfsi" } },
103198 .{ .type = .i32, .kind = .{ .reg = .eax } },
106132 .{ .type = .i32, .kind = .{ .ret_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
103199106133 .unused,
103200106134 .unused,
103201106135 .unused,
......@@ -103207,13 +106141,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
103207106141 .dst_temps = .{ .mem, .unused },
103208106142 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
103209106143 .each = .{ .once = &.{
103210 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
106144 .{ ._, ._, .mov, .tmp0d, .sia(-1, .dst0, .add_unaligned_size), ._, ._ },
103211106145 .{ .@"0:", ._ps, .xor, .tmp1x, .tmp1x, ._, ._ },
103212 .{ ._, ._ps, .movl, .tmp1x, .memsia(.src0q, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
106146 .{ ._, ._ps, .movl, .tmp1x, .memsi(.src0q, .@"8", .tmp0), ._, ._ },
103213106147 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
103214 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp3b, ._, ._ },
103215 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
103216 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
106148 .{ ._, ._, .mov, .memi(.dst0b, .tmp0), .tmp3b, ._, ._ },
106149 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
106150 .{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
103217106151 } },
103218106152 }, .{
103219106153 .required_features = .{ .avx, null, null, null },
......@@ -103301,7 +106235,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
103301106235 .{ .src = .{ .to_mem, .none, .none } },
103302106236 },
103303106237 .extra_temps = .{
103304 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
106238 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
103305106239 .{ .type = .vector_8_i16, .kind = .{ .rc = .sse } },
103306106240 .unused,
103307106241 .unused,
......@@ -103316,12 +106250,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
103316106250 .dst_temps = .{ .mem, .unused },
103317106251 .clobbers = .{ .eflags = true },
103318106252 .each = .{ .once = &.{
103319 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
103320 .{ .@"0:", .v_, .cvttpd2dq, .tmp1x, .memsia(.src0y, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
106253 .{ ._, ._, .mov, .tmp0d, .sia(-8, .dst0, .add_size), ._, ._ },
106254 .{ .@"0:", .v_, .cvttpd2dq, .tmp1x, .memsi(.src0y, .@"4", .tmp0), ._, ._ },
103321106255 .{ ._, .vp_w, .ackssd, .tmp1x, .tmp1x, .tmp1x, ._ },
103322 .{ ._, .v_q, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
103323 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
103324 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
106256 .{ ._, .v_q, .mov, .memi(.dst0q, .tmp0), .tmp1x, ._, ._ },
106257 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
106258 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
103325106259 } },
103326106260 }, .{
103327106261 .required_features = .{ .sse2, null, null, null },
......@@ -103331,7 +106265,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
103331106265 .{ .src = .{ .to_mem, .none, .none } },
103332106266 },
103333106267 .extra_temps = .{
103334 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
106268 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
103335106269 .{ .type = .vector_8_i16, .kind = .{ .rc = .sse } },
103336106270 .unused,
103337106271 .unused,
......@@ -103346,12 +106280,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
103346106280 .dst_temps = .{ .mem, .unused },
103347106281 .clobbers = .{ .eflags = true },
103348106282 .each = .{ .once = &.{
103349 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
103350 .{ .@"0:", ._, .cvttpd2dq, .tmp1x, .memsia(.src0x, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
106283 .{ ._, ._, .mov, .tmp0d, .sia(-4, .dst0, .add_size), ._, ._ },
106284 .{ .@"0:", ._, .cvttpd2dq, .tmp1x, .memsi(.src0x, .@"4", .tmp0), ._, ._ },
103351106285 .{ ._, .p_w, .ackssd, .tmp1x, .tmp1x, ._, ._ },
103352 .{ ._, ._d, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
103353 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
103354 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
106286 .{ ._, ._d, .mov, .memi(.dst0d, .tmp0), .tmp1x, ._, ._ },
106287 .{ ._, ._, .sub, .tmp0d, .si(4), ._, ._ },
106288 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
103355106289 } },
103356106290 }, .{
103357106291 .required_features = .{ .avx, null, null, null },
......@@ -103361,7 +106295,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
103361106295 .{ .src = .{ .to_mem, .none, .none } },
103362106296 },
103363106297 .extra_temps = .{
103364 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
106298 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
103365106299 .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } },
103366106300 .unused,
103367106301 .unused,
......@@ -103376,12 +106310,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
103376106310 .dst_temps = .{ .mem, .unused },
103377106311 .clobbers = .{ .eflags = true },
103378106312 .each = .{ .once = &.{
103379 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
103380 .{ .@"0:", .v_, .cvttpd2dq, .tmp1x, .memsia(.src0y, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
106313 .{ ._, ._, .mov, .tmp0d, .sia(-8, .dst0, .add_size), ._, ._ },
106314 .{ .@"0:", .v_, .cvttpd2dq, .tmp1x, .memsi(.src0y, .@"4", .tmp0), ._, ._ },
103381106315 .{ ._, .vp_w, .ackusd, .tmp1x, .tmp1x, .tmp1x, ._ },
103382 .{ ._, .v_q, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
103383 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
103384 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
106316 .{ ._, .v_q, .mov, .memi(.dst0q, .tmp0), .tmp1x, ._, ._ },
106317 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
106318 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
103385106319 } },
103386106320 }, .{
103387106321 .required_features = .{ .sse4_1, null, null, null },
......@@ -103391,7 +106325,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
103391106325 .{ .src = .{ .to_mem, .none, .none } },
103392106326 },
103393106327 .extra_temps = .{
103394 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
106328 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
103395106329 .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } },
103396106330 .unused,
103397106331 .unused,
......@@ -103406,12 +106340,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
103406106340 .dst_temps = .{ .mem, .unused },
103407106341 .clobbers = .{ .eflags = true },
103408106342 .each = .{ .once = &.{
103409 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
103410 .{ .@"0:", ._, .cvttpd2dq, .tmp1x, .memsia(.src0x, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
106343 .{ ._, ._, .mov, .tmp0d, .sia(-4, .dst0, .add_size), ._, ._ },
106344 .{ .@"0:", ._, .cvttpd2dq, .tmp1x, .memsi(.src0x, .@"4", .tmp0), ._, ._ },
103411106345 .{ ._, .p_w, .ackusd, .tmp1x, .tmp1x, ._, ._ },
103412 .{ ._, ._d, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
103413 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
103414 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
106346 .{ ._, ._d, .mov, .memi(.dst0d, .tmp0), .tmp1x, ._, ._ },
106347 .{ ._, ._, .sub, .tmp0d, .si(4), ._, ._ },
106348 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
103415106349 } },
103416106350 }, .{
103417106351 .required_features = .{ .sse2, null, null, null },
......@@ -103421,7 +106355,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
103421106355 .{ .src = .{ .to_mem, .none, .none } },
103422106356 },
103423106357 .extra_temps = .{
103424 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
106358 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
103425106359 .{ .type = .i32, .kind = .{ .rc = .general_purpose } },
103426106360 .unused,
103427106361 .unused,
......@@ -103436,11 +106370,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
103436106370 .dst_temps = .{ .mem, .unused },
103437106371 .clobbers = .{ .eflags = true },
103438106372 .each = .{ .once = &.{
103439 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
103440 .{ .@"0:", ._, .cvttsd2si, .tmp1d, .memsia(.src0q, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
103441 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
103442 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
103443 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
106373 .{ ._, ._, .mov, .tmp0d, .sia(-2, .dst0, .add_unaligned_size), ._, ._ },
106374 .{ .@"0:", ._, .cvttsd2si, .tmp1d, .memsi(.src0q, .@"4", .tmp0), ._, ._ },
106375 .{ ._, ._, .mov, .memi(.dst0w, .tmp0), .tmp1w, ._, ._ },
106376 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
106377 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
103444106378 } },
103445106379 }, .{
103446106380 .required_features = .{ .x87, null, null, null },
......@@ -103450,7 +106384,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
103450106384 .{ .src = .{ .to_mem, .none, .none } },
103451106385 },
103452106386 .extra_temps = .{
103453 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
106387 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
103454106388 .{ .type = .u16, .kind = .mem },
103455106389 .{ .type = .f64, .kind = .{ .reg = .st7 } },
103456106390 .unused,
......@@ -103470,11 +106404,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
103470106404 .{ ._, ._, .@"or", .memd(.tmp1b, 1), .ui(0b000_0_11_00), ._, ._ },
103471106405 .{ ._, .f_cw, .ld, .tmp1w, ._, ._, ._ },
103472106406 .{ ._, ._, .mov, .memd(.tmp1b, 1), .tmp0b, ._, ._ },
103473 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
103474 .{ .@"0:", .f_, .ld, .memsia(.src0q, .@"4", .tmp0, .add_unaligned_size), ._, ._, ._ },
103475 .{ ._, .fi_p, .st, .memia(.dst0w, .tmp0, .add_unaligned_size), ._, ._, ._ },
103476 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
103477 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
106407 .{ ._, ._, .mov, .tmp0d, .sia(-2, .dst0, .add_unaligned_size), ._, ._ },
106408 .{ .@"0:", .f_, .ld, .memsi(.src0q, .@"4", .tmp0), ._, ._, ._ },
106409 .{ ._, .fi_p, .st, .memi(.dst0w, .tmp0), ._, ._, ._ },
106410 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
106411 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
103478106412 .{ ._, .f_cw, .ld, .tmp1w, ._, ._, ._ },
103479106413 } },
103480106414 }, .{
......@@ -103485,7 +106419,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
103485106419 .{ .src = .{ .to_mem, .none, .none } },
103486106420 },
103487106421 .extra_temps = .{
103488 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
106422 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
103489106423 .{ .type = .u16, .kind = .mem },
103490106424 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
103491106425 .{ .type = .f64, .kind = .{ .reg = .st7 } },
......@@ -103500,18 +106434,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
103500106434 .dst_temps = .{ .mem, .unused },
103501106435 .clobbers = .{ .eflags = true },
103502106436 .each = .{ .once = &.{
103503 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
106437 .{ ._, ._, .mov, .tmp0d, .sia(-2, .dst0, .add_unaligned_size), ._, ._ },
103504106438 .{ ._, .fn_cw, .st, .tmp1w, ._, ._, ._ },
103505106439 .{ ._, ._, .movzx, .tmp2d, .memd(.tmp1b, 1), ._, ._ },
103506106440 .{ ._, ._, .@"or", .memd(.tmp1b, 1), .ui(0b000_0_11_00), ._, ._ },
103507106441 .{ ._, .f_cw, .ld, .tmp1w, ._, ._, ._ },
103508106442 .{ ._, ._, .mov, .memd(.tmp1b, 1), .tmp2b, ._, ._ },
103509 .{ .@"0:", .f_, .ld, .memsia(.src0q, .@"4", .tmp0, .add_unaligned_size), ._, ._, ._ },
106443 .{ .@"0:", .f_, .ld, .memsi(.src0q, .@"4", .tmp0), ._, ._, ._ },
103510106444 .{ ._, .fi_p, .st, .tmp4d, ._, ._, ._ },
103511106445 .{ ._, ._, .mov, .tmp2d, .tmp4d, ._, ._ },
103512 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp2w, ._, ._ },
103513 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
103514 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
106446 .{ ._, ._, .mov, .memi(.dst0w, .tmp0), .tmp2w, ._, ._ },
106447 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
106448 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
103515106449 .{ ._, .f_cw, .ld, .tmp1w, ._, ._, ._ },
103516106450 } },
103517106451 }, .{
......@@ -103523,10 +106457,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
103523106457 },
103524106458 .call_frame = .{ .alignment = .@"16" },
103525106459 .extra_temps = .{
103526 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
103527 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
106460 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
106461 .{ .type = .f64, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
103528106462 .{ .type = .usize, .kind = .{ .extern_func = "__fixdfsi" } },
103529 .{ .type = .i32, .kind = .{ .reg = .eax } },
106463 .{ .type = .i32, .kind = .{ .ret_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
103530106464 .unused,
103531106465 .unused,
103532106466 .unused,
......@@ -103538,12 +106472,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
103538106472 .dst_temps = .{ .mem, .unused },
103539106473 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
103540106474 .each = .{ .once = &.{
103541 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
103542 .{ .@"0:", .v_sd, .mov, .tmp1x, .memsia(.src0q, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
106475 .{ ._, ._, .mov, .tmp0d, .sia(-2, .dst0, .add_unaligned_size), ._, ._ },
106476 .{ .@"0:", .v_sd, .mov, .tmp1x, .memsi(.src0q, .@"4", .tmp0), ._, ._ },
103543106477 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
103544 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp3w, ._, ._ },
103545 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
103546 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
106478 .{ ._, ._, .mov, .memi(.dst0w, .tmp0), .tmp3w, ._, ._ },
106479 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
106480 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
103547106481 } },
103548106482 }, .{
103549106483 .required_features = .{ .sse2, null, null, null },
......@@ -103554,10 +106488,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
103554106488 },
103555106489 .call_frame = .{ .alignment = .@"16" },
103556106490 .extra_temps = .{
103557 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
103558 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
106491 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
106492 .{ .type = .f64, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
103559106493 .{ .type = .usize, .kind = .{ .extern_func = "__fixdfsi" } },
103560 .{ .type = .i32, .kind = .{ .reg = .eax } },
106494 .{ .type = .i32, .kind = .{ .ret_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
103561106495 .unused,
103562106496 .unused,
103563106497 .unused,
......@@ -103569,12 +106503,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
103569106503 .dst_temps = .{ .mem, .unused },
103570106504 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
103571106505 .each = .{ .once = &.{
103572 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
103573 .{ .@"0:", ._sd, .mov, .tmp1x, .memsia(.src0q, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
106506 .{ ._, ._, .mov, .tmp0d, .sia(-2, .dst0, .add_unaligned_size), ._, ._ },
106507 .{ .@"0:", ._sd, .mov, .tmp1x, .memsi(.src0q, .@"4", .tmp0), ._, ._ },
103574106508 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
103575 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp3w, ._, ._ },
103576 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
103577 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
106509 .{ ._, ._, .mov, .memi(.dst0w, .tmp0), .tmp3w, ._, ._ },
106510 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
106511 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
103578106512 } },
103579106513 }, .{
103580106514 .required_features = .{ .sse, null, null, null },
......@@ -103585,10 +106519,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
103585106519 },
103586106520 .call_frame = .{ .alignment = .@"16" },
103587106521 .extra_temps = .{
103588 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
103589 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
106522 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
106523 .{ .type = .f64, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
103590106524 .{ .type = .usize, .kind = .{ .extern_func = "__fixdfsi" } },
103591 .{ .type = .i32, .kind = .{ .reg = .eax } },
106525 .{ .type = .i32, .kind = .{ .ret_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
103592106526 .unused,
103593106527 .unused,
103594106528 .unused,
......@@ -103600,13 +106534,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
103600106534 .dst_temps = .{ .mem, .unused },
103601106535 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
103602106536 .each = .{ .once = &.{
103603 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
106537 .{ ._, ._, .mov, .tmp0d, .sia(-2, .dst0, .add_unaligned_size), ._, ._ },
103604106538 .{ .@"0:", ._ps, .xor, .tmp1x, .tmp1x, ._, ._ },
103605 .{ ._, ._ps, .movl, .tmp1x, .memsia(.src0q, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
106539 .{ ._, ._ps, .movl, .tmp1x, .memsi(.src0q, .@"4", .tmp0), ._, ._ },
103606106540 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
103607 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp3w, ._, ._ },
103608 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
103609 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
106541 .{ ._, ._, .mov, .memi(.dst0w, .tmp0), .tmp3w, ._, ._ },
106542 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
106543 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
103610106544 } },
103611106545 }, .{
103612106546 .required_features = .{ .avx, null, null, null },
......@@ -103652,7 +106586,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
103652106586 .{ .src = .{ .to_mem, .none, .none } },
103653106587 },
103654106588 .extra_temps = .{
103655 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
106589 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
103656106590 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },
103657106591 .unused,
103658106592 .unused,
......@@ -103667,11 +106601,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
103667106601 .dst_temps = .{ .mem, .unused },
103668106602 .clobbers = .{ .eflags = true },
103669106603 .each = .{ .once = &.{
103670 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
103671 .{ .@"0:", .v_, .cvttpd2dq, .tmp1x, .memsia(.src0y, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
103672 .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
103673 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
103674 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
106604 .{ ._, ._, .mov, .tmp0d, .sia(-16, .dst0, .add_size), ._, ._ },
106605 .{ .@"0:", .v_, .cvttpd2dq, .tmp1x, .memsi(.src0y, .@"2", .tmp0), ._, ._ },
106606 .{ ._, .v_dqa, .mov, .memi(.dst0x, .tmp0), .tmp1x, ._, ._ },
106607 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
106608 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
103675106609 } },
103676106610 }, .{
103677106611 .required_features = .{ .sse2, null, null, null },
......@@ -103681,7 +106615,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
103681106615 .{ .src = .{ .to_mem, .none, .none } },
103682106616 },
103683106617 .extra_temps = .{
103684 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
106618 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
103685106619 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },
103686106620 .unused,
103687106621 .unused,
......@@ -103696,11 +106630,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
103696106630 .dst_temps = .{ .mem, .unused },
103697106631 .clobbers = .{ .eflags = true },
103698106632 .each = .{ .once = &.{
103699 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
103700 .{ .@"0:", ._, .cvttpd2dq, .tmp1x, .memsia(.src0x, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
103701 .{ ._, ._q, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1q, ._, ._ },
103702 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
103703 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
106633 .{ ._, ._, .mov, .tmp0d, .sia(-8, .dst0, .add_size), ._, ._ },
106634 .{ .@"0:", ._, .cvttpd2dq, .tmp1x, .memsi(.src0x, .@"2", .tmp0), ._, ._ },
106635 .{ ._, ._q, .mov, .memi(.dst0q, .tmp0), .tmp1q, ._, ._ },
106636 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
106637 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
103704106638 } },
103705106639 }, .{
103706106640 .required_features = .{ .x87, null, null, null },
......@@ -103710,7 +106644,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
103710106644 .{ .src = .{ .to_mem, .none, .none } },
103711106645 },
103712106646 .extra_temps = .{
103713 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
106647 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
103714106648 .{ .type = .u16, .kind = .mem },
103715106649 .{ .type = .f64, .kind = .{ .reg = .st7 } },
103716106650 .unused,
......@@ -103730,11 +106664,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
103730106664 .{ ._, ._, .@"or", .memd(.tmp1b, 1), .ui(0b000_0_11_00), ._, ._ },
103731106665 .{ ._, .f_cw, .ld, .tmp1w, ._, ._, ._ },
103732106666 .{ ._, ._, .mov, .memd(.tmp1b, 1), .tmp0b, ._, ._ },
103733 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
103734 .{ .@"0:", .f_, .ld, .memsia(.src0q, .@"2", .tmp0, .add_unaligned_size), ._, ._, ._ },
103735 .{ ._, .fi_p, .st, .memia(.dst0d, .tmp0, .add_unaligned_size), ._, ._, ._ },
103736 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
103737 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
106667 .{ ._, ._, .mov, .tmp0d, .sia(-4, .dst0, .add_unaligned_size), ._, ._ },
106668 .{ .@"0:", .f_, .ld, .memsi(.src0q, .@"2", .tmp0), ._, ._, ._ },
106669 .{ ._, .fi_p, .st, .memi(.dst0d, .tmp0), ._, ._, ._ },
106670 .{ ._, ._, .sub, .tmp0d, .si(4), ._, ._ },
106671 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
103738106672 .{ ._, .f_cw, .ld, .tmp1w, ._, ._, ._ },
103739106673 } },
103740106674 }, .{
......@@ -103745,7 +106679,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
103745106679 .{ .src = .{ .to_mem, .none, .none } },
103746106680 },
103747106681 .extra_temps = .{
103748 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
106682 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
103749106683 .{ .type = .u16, .kind = .mem },
103750106684 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
103751106685 .{ .type = .f64, .kind = .{ .reg = .st7 } },
......@@ -103760,18 +106694,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
103760106694 .dst_temps = .{ .mem, .unused },
103761106695 .clobbers = .{ .eflags = true },
103762106696 .each = .{ .once = &.{
103763 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
106697 .{ ._, ._, .mov, .tmp0d, .sia(-4, .dst0, .add_unaligned_size), ._, ._ },
103764106698 .{ ._, .fn_cw, .st, .tmp1w, ._, ._, ._ },
103765106699 .{ ._, ._, .movzx, .tmp2d, .memd(.tmp1b, 1), ._, ._ },
103766106700 .{ ._, ._, .@"or", .memd(.tmp1b, 1), .ui(0b000_0_11_00), ._, ._ },
103767106701 .{ ._, .f_cw, .ld, .tmp1w, ._, ._, ._ },
103768106702 .{ ._, ._, .mov, .memd(.tmp1b, 1), .tmp2b, ._, ._ },
103769 .{ .@"0:", .f_, .ld, .memsia(.src0q, .@"2", .tmp0, .add_unaligned_size), ._, ._, ._ },
106703 .{ .@"0:", .f_, .ld, .memsi(.src0q, .@"2", .tmp0), ._, ._, ._ },
103770106704 .{ ._, .fi_p, .st, .tmp4q, ._, ._, ._ },
103771106705 .{ ._, ._, .mov, .tmp2d, .tmp4d, ._, ._ },
103772 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp2d, ._, ._ },
103773 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
103774 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
106706 .{ ._, ._, .mov, .memi(.dst0d, .tmp0), .tmp2d, ._, ._ },
106707 .{ ._, ._, .sub, .tmp0d, .si(4), ._, ._ },
106708 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
103775106709 .{ ._, .f_cw, .ld, .tmp1w, ._, ._, ._ },
103776106710 } },
103777106711 }, .{
......@@ -103783,10 +106717,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
103783106717 },
103784106718 .call_frame = .{ .alignment = .@"16" },
103785106719 .extra_temps = .{
103786 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
103787 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
106720 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
106721 .{ .type = .f64, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
103788106722 .{ .type = .usize, .kind = .{ .extern_func = "__fixdfsi" } },
103789 .{ .type = .i32, .kind = .{ .reg = .eax } },
106723 .{ .type = .i32, .kind = .{ .ret_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
103790106724 .unused,
103791106725 .unused,
103792106726 .unused,
......@@ -103798,12 +106732,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
103798106732 .dst_temps = .{ .mem, .unused },
103799106733 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
103800106734 .each = .{ .once = &.{
103801 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
103802 .{ .@"0:", .v_sd, .mov, .tmp1x, .memsia(.src0q, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
106735 .{ ._, ._, .mov, .tmp0d, .sia(-4, .dst0, .add_unaligned_size), ._, ._ },
106736 .{ .@"0:", .v_sd, .mov, .tmp1x, .memsi(.src0q, .@"2", .tmp0), ._, ._ },
103803106737 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
103804 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp3d, ._, ._ },
103805 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
103806 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
106738 .{ ._, ._, .mov, .memi(.dst0d, .tmp0), .tmp3d, ._, ._ },
106739 .{ ._, ._, .sub, .tmp0d, .si(4), ._, ._ },
106740 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
103807106741 } },
103808106742 }, .{
103809106743 .required_features = .{ .avx, null, null, null },
......@@ -103814,10 +106748,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
103814106748 },
103815106749 .call_frame = .{ .alignment = .@"16" },
103816106750 .extra_temps = .{
103817 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
103818 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
106751 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
106752 .{ .type = .f64, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
103819106753 .{ .type = .usize, .kind = .{ .extern_func = "__fixunsdfsi" } },
103820 .{ .type = .u32, .kind = .{ .reg = .eax } },
106754 .{ .type = .u32, .kind = .{ .ret_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
103821106755 .unused,
103822106756 .unused,
103823106757 .unused,
......@@ -103829,12 +106763,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
103829106763 .dst_temps = .{ .mem, .unused },
103830106764 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
103831106765 .each = .{ .once = &.{
103832 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
103833 .{ .@"0:", .v_sd, .mov, .tmp1x, .memsia(.src0q, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
106766 .{ ._, ._, .mov, .tmp0d, .sia(-4, .dst0, .add_unaligned_size), ._, ._ },
106767 .{ .@"0:", .v_sd, .mov, .tmp1x, .memsi(.src0q, .@"2", .tmp0), ._, ._ },
103834106768 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
103835 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp3d, ._, ._ },
103836 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
103837 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
106769 .{ ._, ._, .mov, .memi(.dst0d, .tmp0), .tmp3d, ._, ._ },
106770 .{ ._, ._, .sub, .tmp0d, .si(4), ._, ._ },
106771 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
103838106772 } },
103839106773 }, .{
103840106774 .required_features = .{ .sse2, null, null, null },
......@@ -103845,10 +106779,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
103845106779 },
103846106780 .call_frame = .{ .alignment = .@"16" },
103847106781 .extra_temps = .{
103848 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
103849 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
106782 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
106783 .{ .type = .f64, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
103850106784 .{ .type = .usize, .kind = .{ .extern_func = "__fixdfsi" } },
103851 .{ .type = .i32, .kind = .{ .reg = .eax } },
106785 .{ .type = .i32, .kind = .{ .ret_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
103852106786 .unused,
103853106787 .unused,
103854106788 .unused,
......@@ -103860,12 +106794,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
103860106794 .dst_temps = .{ .mem, .unused },
103861106795 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
103862106796 .each = .{ .once = &.{
103863 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
103864 .{ .@"0:", ._sd, .mov, .tmp1x, .memsia(.src0q, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
106797 .{ ._, ._, .mov, .tmp0d, .sia(-4, .dst0, .add_unaligned_size), ._, ._ },
106798 .{ .@"0:", ._sd, .mov, .tmp1x, .memsi(.src0q, .@"2", .tmp0), ._, ._ },
103865106799 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
103866 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp3d, ._, ._ },
103867 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
103868 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
106800 .{ ._, ._, .mov, .memi(.dst0d, .tmp0), .tmp3d, ._, ._ },
106801 .{ ._, ._, .sub, .tmp0d, .si(4), ._, ._ },
106802 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
103869106803 } },
103870106804 }, .{
103871106805 .required_features = .{ .sse2, null, null, null },
......@@ -103876,10 +106810,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
103876106810 },
103877106811 .call_frame = .{ .alignment = .@"16" },
103878106812 .extra_temps = .{
103879 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
103880 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
106813 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
106814 .{ .type = .f64, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
103881106815 .{ .type = .usize, .kind = .{ .extern_func = "__fixunsdfsi" } },
103882 .{ .type = .u32, .kind = .{ .reg = .eax } },
106816 .{ .type = .u32, .kind = .{ .ret_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
103883106817 .unused,
103884106818 .unused,
103885106819 .unused,
......@@ -103891,12 +106825,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
103891106825 .dst_temps = .{ .mem, .unused },
103892106826 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
103893106827 .each = .{ .once = &.{
103894 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
103895 .{ .@"0:", ._sd, .mov, .tmp1x, .memsia(.src0q, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
106828 .{ ._, ._, .mov, .tmp0d, .sia(-4, .dst0, .add_unaligned_size), ._, ._ },
106829 .{ .@"0:", ._sd, .mov, .tmp1x, .memsi(.src0q, .@"2", .tmp0), ._, ._ },
103896106830 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
103897 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp3d, ._, ._ },
103898 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
103899 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
106831 .{ ._, ._, .mov, .memi(.dst0d, .tmp0), .tmp3d, ._, ._ },
106832 .{ ._, ._, .sub, .tmp0d, .si(4), ._, ._ },
106833 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
103900106834 } },
103901106835 }, .{
103902106836 .required_features = .{ .sse, null, null, null },
......@@ -103907,10 +106841,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
103907106841 },
103908106842 .call_frame = .{ .alignment = .@"16" },
103909106843 .extra_temps = .{
103910 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
103911 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
106844 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
106845 .{ .type = .f64, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
103912106846 .{ .type = .usize, .kind = .{ .extern_func = "__fixdfsi" } },
103913 .{ .type = .i32, .kind = .{ .reg = .eax } },
106847 .{ .type = .i32, .kind = .{ .ret_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
103914106848 .unused,
103915106849 .unused,
103916106850 .unused,
......@@ -103922,13 +106856,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
103922106856 .dst_temps = .{ .mem, .unused },
103923106857 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
103924106858 .each = .{ .once = &.{
103925 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
106859 .{ ._, ._, .mov, .tmp0d, .sia(-4, .dst0, .add_unaligned_size), ._, ._ },
103926106860 .{ .@"0:", ._ps, .xor, .tmp1x, .tmp1x, ._, ._ },
103927 .{ ._, ._ps, .movl, .tmp1x, .memsia(.src0q, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
106861 .{ ._, ._ps, .movl, .tmp1x, .memsi(.src0q, .@"2", .tmp0), ._, ._ },
103928106862 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
103929 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp3d, ._, ._ },
103930 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
103931 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
106863 .{ ._, ._, .mov, .memi(.dst0d, .tmp0), .tmp3d, ._, ._ },
106864 .{ ._, ._, .sub, .tmp0d, .si(4), ._, ._ },
106865 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
103932106866 } },
103933106867 }, .{
103934106868 .required_features = .{ .sse, null, null, null },
......@@ -103939,10 +106873,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
103939106873 },
103940106874 .call_frame = .{ .alignment = .@"16" },
103941106875 .extra_temps = .{
103942 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
103943 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
106876 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
106877 .{ .type = .f64, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
103944106878 .{ .type = .usize, .kind = .{ .extern_func = "__fixunsdfsi" } },
103945 .{ .type = .u32, .kind = .{ .reg = .eax } },
106879 .{ .type = .u32, .kind = .{ .ret_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
103946106880 .unused,
103947106881 .unused,
103948106882 .unused,
......@@ -103954,13 +106888,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
103954106888 .dst_temps = .{ .mem, .unused },
103955106889 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
103956106890 .each = .{ .once = &.{
103957 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
106891 .{ ._, ._, .mov, .tmp0d, .sia(-4, .dst0, .add_unaligned_size), ._, ._ },
103958106892 .{ .@"0:", ._ps, .xor, .tmp1x, .tmp1x, ._, ._ },
103959 .{ ._, ._ps, .movl, .tmp1x, .memsia(.src0q, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
106893 .{ ._, ._ps, .movl, .tmp1x, .memsi(.src0q, .@"2", .tmp0), ._, ._ },
103960106894 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
103961 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp3d, ._, ._ },
103962 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
103963 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
106895 .{ ._, ._, .mov, .memi(.dst0d, .tmp0), .tmp3d, ._, ._ },
106896 .{ ._, ._, .sub, .tmp0d, .si(4), ._, ._ },
106897 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
103964106898 } },
103965106899 }, .{
103966106900 .required_features = .{ .@"64bit", .avx, null, null },
......@@ -103970,7 +106904,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
103970106904 .{ .src = .{ .to_mem, .none, .none } },
103971106905 },
103972106906 .extra_temps = .{
103973 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
106907 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
103974106908 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
103975106909 .unused,
103976106910 .unused,
......@@ -103985,11 +106919,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
103985106919 .dst_temps = .{ .mem, .unused },
103986106920 .clobbers = .{ .eflags = true },
103987106921 .each = .{ .once = &.{
103988 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
103989 .{ .@"0:", .v_, .cvttsd2si, .tmp1q, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
103990 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1q, ._, ._ },
103991 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
103992 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
106922 .{ ._, ._, .mov, .tmp0d, .sia(-8, .src0, .add_unaligned_size), ._, ._ },
106923 .{ .@"0:", .v_, .cvttsd2si, .tmp1q, .memi(.src0q, .tmp0), ._, ._ },
106924 .{ ._, ._, .mov, .memi(.dst0q, .tmp0), .tmp1q, ._, ._ },
106925 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
106926 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
103993106927 } },
103994106928 }, .{
103995106929 .required_features = .{ .@"64bit", .sse2, null, null },
......@@ -103999,7 +106933,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
103999106933 .{ .src = .{ .to_mem, .none, .none } },
104000106934 },
104001106935 .extra_temps = .{
104002 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
106936 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
104003106937 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
104004106938 .unused,
104005106939 .unused,
......@@ -104014,11 +106948,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
104014106948 .dst_temps = .{ .mem, .unused },
104015106949 .clobbers = .{ .eflags = true },
104016106950 .each = .{ .once = &.{
104017 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
104018 .{ .@"0:", ._, .cvttsd2si, .tmp1q, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
104019 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1q, ._, ._ },
104020 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
104021 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
106951 .{ ._, ._, .mov, .tmp0d, .sia(-8, .src0, .add_unaligned_size), ._, ._ },
106952 .{ .@"0:", ._, .cvttsd2si, .tmp1q, .memi(.src0q, .tmp0), ._, ._ },
106953 .{ ._, ._, .mov, .memi(.dst0q, .tmp0), .tmp1q, ._, ._ },
106954 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
106955 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
104022106956 } },
104023106957 }, .{
104024106958 .required_features = .{ .x87, null, null, null },
......@@ -104028,7 +106962,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
104028106962 .{ .src = .{ .to_mem, .none, .none } },
104029106963 },
104030106964 .extra_temps = .{
104031 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
106965 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
104032106966 .{ .type = .u16, .kind = .mem },
104033106967 .{ .type = .f64, .kind = .{ .reg = .st7 } },
104034106968 .unused,
......@@ -104048,11 +106982,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
104048106982 .{ ._, ._, .@"or", .memd(.tmp1b, 1), .ui(0b000_0_11_00), ._, ._ },
104049106983 .{ ._, .f_cw, .ld, .tmp1w, ._, ._, ._ },
104050106984 .{ ._, ._, .mov, .memd(.tmp1b, 1), .tmp0b, ._, ._ },
104051 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
104052 .{ .@"0:", .f_, .ld, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._, ._ },
104053 .{ ._, .fi_p, .st, .memia(.dst0q, .tmp0, .add_unaligned_size), ._, ._, ._ },
104054 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
104055 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
106985 .{ ._, ._, .mov, .tmp0d, .sia(-8, .dst0, .add_unaligned_size), ._, ._ },
106986 .{ .@"0:", .f_, .ld, .memi(.src0q, .tmp0), ._, ._, ._ },
106987 .{ ._, .fi_p, .st, .memi(.dst0q, .tmp0), ._, ._, ._ },
106988 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
106989 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
104056106990 .{ ._, .f_cw, .ld, .tmp1w, ._, ._, ._ },
104057106991 } },
104058106992 }, .{
......@@ -104064,10 +106998,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
104064106998 },
104065106999 .call_frame = .{ .alignment = .@"16" },
104066107000 .extra_temps = .{
104067 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
104068 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
107001 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
107002 .{ .type = .f64, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
104069107003 .{ .type = .usize, .kind = .{ .extern_func = "__fixdfdi" } },
104070 .{ .type = .i64, .kind = .{ .reg = .rax } },
107004 .{ .type = .i64, .kind = .{ .ret_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
104071107005 .unused,
104072107006 .unused,
104073107007 .unused,
......@@ -104079,12 +107013,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
104079107013 .dst_temps = .{ .mem, .unused },
104080107014 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
104081107015 .each = .{ .once = &.{
104082 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
104083 .{ .@"0:", .v_sd, .mov, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
107016 .{ ._, ._, .mov, .tmp0d, .sia(-8, .src0, .add_unaligned_size), ._, ._ },
107017 .{ .@"0:", .v_sd, .mov, .tmp1x, .memi(.src0q, .tmp0), ._, ._ },
104084107018 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
104085 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },
104086 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
104087 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
107019 .{ ._, ._, .mov, .memi(.dst0q, .tmp0), .tmp3q, ._, ._ },
107020 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
107021 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
104088107022 } },
104089107023 }, .{
104090107024 .required_features = .{ .avx, null, null, null },
......@@ -104095,10 +107029,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
104095107029 },
104096107030 .call_frame = .{ .alignment = .@"16" },
104097107031 .extra_temps = .{
104098 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
104099 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
107032 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
107033 .{ .type = .f64, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
104100107034 .{ .type = .usize, .kind = .{ .extern_func = "__fixunsdfdi" } },
104101 .{ .type = .u64, .kind = .{ .reg = .rax } },
107035 .{ .type = .u64, .kind = .{ .ret_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
104102107036 .unused,
104103107037 .unused,
104104107038 .unused,
......@@ -104110,12 +107044,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
104110107044 .dst_temps = .{ .mem, .unused },
104111107045 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
104112107046 .each = .{ .once = &.{
104113 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
104114 .{ .@"0:", .v_sd, .mov, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
107047 .{ ._, ._, .mov, .tmp0d, .sia(-8, .src0, .add_unaligned_size), ._, ._ },
107048 .{ .@"0:", .v_sd, .mov, .tmp1x, .memi(.src0q, .tmp0), ._, ._ },
104115107049 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
104116 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },
104117 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
104118 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
107050 .{ ._, ._, .mov, .memi(.dst0q, .tmp0), .tmp3q, ._, ._ },
107051 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
107052 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
104119107053 } },
104120107054 }, .{
104121107055 .required_features = .{ .sse2, null, null, null },
......@@ -104126,10 +107060,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
104126107060 },
104127107061 .call_frame = .{ .alignment = .@"16" },
104128107062 .extra_temps = .{
104129 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
104130 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
107063 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
107064 .{ .type = .f64, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
104131107065 .{ .type = .usize, .kind = .{ .extern_func = "__fixdfdi" } },
104132 .{ .type = .i64, .kind = .{ .reg = .rax } },
107066 .{ .type = .i64, .kind = .{ .ret_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
104133107067 .unused,
104134107068 .unused,
104135107069 .unused,
......@@ -104141,12 +107075,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
104141107075 .dst_temps = .{ .mem, .unused },
104142107076 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
104143107077 .each = .{ .once = &.{
104144 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
104145 .{ .@"0:", ._sd, .mov, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
107078 .{ ._, ._, .mov, .tmp0d, .sia(-8, .src0, .add_unaligned_size), ._, ._ },
107079 .{ .@"0:", ._sd, .mov, .tmp1x, .memi(.src0q, .tmp0), ._, ._ },
104146107080 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
104147 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },
104148 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
104149 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
107081 .{ ._, ._, .mov, .memi(.dst0q, .tmp0), .tmp3q, ._, ._ },
107082 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
107083 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
104150107084 } },
104151107085 }, .{
104152107086 .required_features = .{ .sse2, null, null, null },
......@@ -104157,10 +107091,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
104157107091 },
104158107092 .call_frame = .{ .alignment = .@"16" },
104159107093 .extra_temps = .{
104160 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
104161 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
107094 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
107095 .{ .type = .f64, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
104162107096 .{ .type = .usize, .kind = .{ .extern_func = "__fixunsdfdi" } },
104163 .{ .type = .u64, .kind = .{ .reg = .rax } },
107097 .{ .type = .u64, .kind = .{ .ret_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
104164107098 .unused,
104165107099 .unused,
104166107100 .unused,
......@@ -104172,12 +107106,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
104172107106 .dst_temps = .{ .mem, .unused },
104173107107 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
104174107108 .each = .{ .once = &.{
104175 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
104176 .{ .@"0:", ._sd, .mov, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
107109 .{ ._, ._, .mov, .tmp0d, .sia(-8, .src0, .add_unaligned_size), ._, ._ },
107110 .{ .@"0:", ._sd, .mov, .tmp1x, .memi(.src0q, .tmp0), ._, ._ },
104177107111 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
104178 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },
104179 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
104180 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
107112 .{ ._, ._, .mov, .memi(.dst0q, .tmp0), .tmp3q, ._, ._ },
107113 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
107114 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
104181107115 } },
104182107116 }, .{
104183107117 .required_features = .{ .sse, null, null, null },
......@@ -104188,10 +107122,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
104188107122 },
104189107123 .call_frame = .{ .alignment = .@"16" },
104190107124 .extra_temps = .{
104191 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
104192 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
107125 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
107126 .{ .type = .f64, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
104193107127 .{ .type = .usize, .kind = .{ .extern_func = "__fixdfdi" } },
104194 .{ .type = .i64, .kind = .{ .reg = .rax } },
107128 .{ .type = .i64, .kind = .{ .ret_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
104195107129 .unused,
104196107130 .unused,
104197107131 .unused,
......@@ -104203,13 +107137,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
104203107137 .dst_temps = .{ .mem, .unused },
104204107138 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
104205107139 .each = .{ .once = &.{
104206 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
107140 .{ ._, ._, .mov, .tmp0d, .sia(-8, .src0, .add_unaligned_size), ._, ._ },
104207107141 .{ .@"0:", ._ps, .xor, .tmp1x, .tmp1x, ._, ._ },
104208 .{ ._, ._ps, .movl, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
107142 .{ ._, ._ps, .movl, .tmp1x, .memi(.src0q, .tmp0), ._, ._ },
104209107143 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
104210 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },
104211 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
104212 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
107144 .{ ._, ._, .mov, .memi(.dst0q, .tmp0), .tmp3q, ._, ._ },
107145 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
107146 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
104213107147 } },
104214107148 }, .{
104215107149 .required_features = .{ .sse, null, null, null },
......@@ -104220,10 +107154,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
104220107154 },
104221107155 .call_frame = .{ .alignment = .@"16" },
104222107156 .extra_temps = .{
104223 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
104224 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
107157 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
107158 .{ .type = .f64, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
104225107159 .{ .type = .usize, .kind = .{ .extern_func = "__fixunsdfdi" } },
104226 .{ .type = .u64, .kind = .{ .reg = .rax } },
107160 .{ .type = .u64, .kind = .{ .ret_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
104227107161 .unused,
104228107162 .unused,
104229107163 .unused,
......@@ -104235,15 +107169,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
104235107169 .dst_temps = .{ .mem, .unused },
104236107170 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
104237107171 .each = .{ .once = &.{
104238 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
107172 .{ ._, ._, .mov, .tmp0d, .sia(-8, .src0, .add_unaligned_size), ._, ._ },
104239107173 .{ .@"0:", ._ps, .xor, .tmp1x, .tmp1x, ._, ._ },
104240 .{ ._, ._ps, .movl, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
107174 .{ ._, ._ps, .movl, .tmp1x, .memi(.src0q, .tmp0), ._, ._ },
104241107175 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
104242 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },
104243 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
104244 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
107176 .{ ._, ._, .mov, .memi(.dst0q, .tmp0), .tmp3q, ._, ._ },
107177 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
107178 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
104245107179 } },
104246107180 }, .{
107181 .required_cc_abi = .sysv64,
104247107182 .required_features = .{ .avx, null, null, null },
104248107183 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
104249107184 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any },
......@@ -104252,11 +107187,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
104252107187 },
104253107188 .call_frame = .{ .alignment = .@"16" },
104254107189 .extra_temps = .{
104255 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
104256 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
107190 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
107191 .{ .type = .f64, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
104257107192 .{ .type = .usize, .kind = .{ .extern_func = "__fixdfti" } },
104258 .{ .type = .u64, .kind = .{ .reg = .rax } },
104259 .{ .type = .i64, .kind = .{ .reg = .rdx } },
107193 .{ .type = .i128, .kind = .{ .ret_gpr_pair = .{ .cc = .ccc, .after = 0, .at = 0 } } },
107194 .unused,
104260107195 .unused,
104261107196 .unused,
104262107197 .unused,
......@@ -104267,15 +107202,48 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
104267107202 .dst_temps = .{ .mem, .unused },
104268107203 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
104269107204 .each = .{ .once = &.{
104270 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
104271 .{ .@"0:", .v_sd, .mov, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
107205 .{ ._, ._, .mov, .tmp0d, .sia(-8, .src0, .add_unaligned_size), ._, ._ },
107206 .{ .@"0:", .v_sd, .mov, .tmp1x, .memi(.src0q, .tmp0), ._, ._ },
104272107207 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
104273 .{ ._, ._, .mov, .memsia(.dst0q, .@"2", .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },
104274 .{ ._, ._, .mov, .memsiad(.dst0q, .@"2", .tmp0, .add_unaligned_size, 8), .tmp4q, ._, ._ },
104275 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
104276 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
107208 .{ ._, ._, .mov, .memsi(.dst0q, .@"2", .tmp0), .tmp3q0, ._, ._ },
107209 .{ ._, ._, .mov, .memsid(.dst0q, .@"2", .tmp0, 8), .tmp3q1, ._, ._ },
107210 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
107211 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
107212 } },
107213 }, .{
107214 .required_cc_abi = .win64,
107215 .required_features = .{ .avx, null, null, null },
107216 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
107217 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any },
107218 .patterns = &.{
107219 .{ .src = .{ .to_mem, .none, .none } },
107220 },
107221 .call_frame = .{ .alignment = .@"16" },
107222 .extra_temps = .{
107223 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
107224 .{ .type = .f64, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
107225 .{ .type = .usize, .kind = .{ .extern_func = "__fixdfti" } },
107226 .unused,
107227 .unused,
107228 .unused,
107229 .unused,
107230 .unused,
107231 .unused,
107232 .unused,
107233 .unused,
107234 },
107235 .dst_temps = .{ .mem, .unused },
107236 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
107237 .each = .{ .once = &.{
107238 .{ ._, ._, .mov, .tmp0d, .sia(-8, .src0, .add_unaligned_size), ._, ._ },
107239 .{ .@"0:", .v_sd, .mov, .tmp1x, .memi(.src0q, .tmp0), ._, ._ },
107240 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
107241 .{ ._, .v_dqa, .mov, .memsi(.dst0x, .@"2", .tmp0), .tmp1x, ._, ._ },
107242 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
107243 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
104277107244 } },
104278107245 }, .{
107246 .required_cc_abi = .sysv64,
104279107247 .required_features = .{ .avx, null, null, null },
104280107248 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
104281107249 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any },
......@@ -104284,11 +107252,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
104284107252 },
104285107253 .call_frame = .{ .alignment = .@"16" },
104286107254 .extra_temps = .{
104287 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
104288 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
107255 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
107256 .{ .type = .f64, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
104289107257 .{ .type = .usize, .kind = .{ .extern_func = "__fixunsdfti" } },
104290 .{ .type = .u64, .kind = .{ .reg = .rax } },
104291 .{ .type = .u64, .kind = .{ .reg = .rdx } },
107258 .{ .type = .u128, .kind = .{ .ret_gpr_pair = .{ .cc = .ccc, .after = 0, .at = 0 } } },
107259 .unused,
104292107260 .unused,
104293107261 .unused,
104294107262 .unused,
......@@ -104299,15 +107267,48 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
104299107267 .dst_temps = .{ .mem, .unused },
104300107268 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
104301107269 .each = .{ .once = &.{
104302 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
104303 .{ .@"0:", .v_sd, .mov, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
107270 .{ ._, ._, .mov, .tmp0d, .sia(-8, .src0, .add_unaligned_size), ._, ._ },
107271 .{ .@"0:", .v_sd, .mov, .tmp1x, .memi(.src0q, .tmp0), ._, ._ },
104304107272 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
104305 .{ ._, ._, .mov, .memsia(.dst0q, .@"2", .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },
104306 .{ ._, ._, .mov, .memsiad(.dst0q, .@"2", .tmp0, .add_unaligned_size, 8), .tmp4q, ._, ._ },
104307 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
104308 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
107273 .{ ._, ._, .mov, .memsi(.dst0q, .@"2", .tmp0), .tmp3q0, ._, ._ },
107274 .{ ._, ._, .mov, .memsid(.dst0q, .@"2", .tmp0, 8), .tmp3q1, ._, ._ },
107275 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
107276 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
107277 } },
107278 }, .{
107279 .required_cc_abi = .win64,
107280 .required_features = .{ .avx, null, null, null },
107281 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
107282 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any },
107283 .patterns = &.{
107284 .{ .src = .{ .to_mem, .none, .none } },
107285 },
107286 .call_frame = .{ .alignment = .@"16" },
107287 .extra_temps = .{
107288 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
107289 .{ .type = .f64, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
107290 .{ .type = .usize, .kind = .{ .extern_func = "__fixunsdfti" } },
107291 .unused,
107292 .unused,
107293 .unused,
107294 .unused,
107295 .unused,
107296 .unused,
107297 .unused,
107298 .unused,
107299 },
107300 .dst_temps = .{ .mem, .unused },
107301 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
107302 .each = .{ .once = &.{
107303 .{ ._, ._, .mov, .tmp0d, .sia(-8, .src0, .add_unaligned_size), ._, ._ },
107304 .{ .@"0:", .v_sd, .mov, .tmp1x, .memi(.src0q, .tmp0), ._, ._ },
107305 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
107306 .{ ._, .v_dqa, .mov, .memsi(.dst0x, .@"2", .tmp0), .tmp1x, ._, ._ },
107307 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
107308 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
104309107309 } },
104310107310 }, .{
107311 .required_cc_abi = .sysv64,
104311107312 .required_features = .{ .sse2, null, null, null },
104312107313 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
104313107314 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any },
......@@ -104316,11 +107317,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
104316107317 },
104317107318 .call_frame = .{ .alignment = .@"16" },
104318107319 .extra_temps = .{
104319 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
104320 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
107320 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
107321 .{ .type = .f64, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
104321107322 .{ .type = .usize, .kind = .{ .extern_func = "__fixdfti" } },
104322 .{ .type = .u64, .kind = .{ .reg = .rax } },
104323 .{ .type = .i64, .kind = .{ .reg = .rdx } },
107323 .{ .type = .i128, .kind = .{ .ret_gpr_pair = .{ .cc = .ccc, .after = 0, .at = 0 } } },
107324 .unused,
104324107325 .unused,
104325107326 .unused,
104326107327 .unused,
......@@ -104331,15 +107332,48 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
104331107332 .dst_temps = .{ .mem, .unused },
104332107333 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
104333107334 .each = .{ .once = &.{
104334 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
104335 .{ .@"0:", ._sd, .mov, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
107335 .{ ._, ._, .mov, .tmp0d, .sia(-8, .src0, .add_unaligned_size), ._, ._ },
107336 .{ .@"0:", ._sd, .mov, .tmp1x, .memi(.src0q, .tmp0), ._, ._ },
104336107337 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
104337 .{ ._, ._, .mov, .memsia(.dst0q, .@"2", .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },
104338 .{ ._, ._, .mov, .memsiad(.dst0q, .@"2", .tmp0, .add_unaligned_size, 8), .tmp4q, ._, ._ },
104339 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
104340 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
107338 .{ ._, ._, .mov, .memsi(.dst0q, .@"2", .tmp0), .tmp3q0, ._, ._ },
107339 .{ ._, ._, .mov, .memsid(.dst0q, .@"2", .tmp0, 8), .tmp3q1, ._, ._ },
107340 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
107341 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
104341107342 } },
104342107343 }, .{
107344 .required_cc_abi = .win64,
107345 .required_features = .{ .sse2, null, null, null },
107346 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
107347 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any },
107348 .patterns = &.{
107349 .{ .src = .{ .to_mem, .none, .none } },
107350 },
107351 .call_frame = .{ .alignment = .@"16" },
107352 .extra_temps = .{
107353 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
107354 .{ .type = .f64, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
107355 .{ .type = .usize, .kind = .{ .extern_func = "__fixdfti" } },
107356 .unused,
107357 .unused,
107358 .unused,
107359 .unused,
107360 .unused,
107361 .unused,
107362 .unused,
107363 .unused,
107364 },
107365 .dst_temps = .{ .mem, .unused },
107366 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
107367 .each = .{ .once = &.{
107368 .{ ._, ._, .mov, .tmp0d, .sia(-8, .src0, .add_unaligned_size), ._, ._ },
107369 .{ .@"0:", ._sd, .mov, .tmp1x, .memi(.src0q, .tmp0), ._, ._ },
107370 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
107371 .{ ._, ._dqa, .mov, .memsi(.dst0x, .@"2", .tmp0), .tmp1x, ._, ._ },
107372 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
107373 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
107374 } },
107375 }, .{
107376 .required_cc_abi = .sysv64,
104343107377 .required_features = .{ .sse2, null, null, null },
104344107378 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
104345107379 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any },
......@@ -104348,11 +107382,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
104348107382 },
104349107383 .call_frame = .{ .alignment = .@"16" },
104350107384 .extra_temps = .{
104351 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
104352 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
107385 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
107386 .{ .type = .f64, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
104353107387 .{ .type = .usize, .kind = .{ .extern_func = "__fixunsdfti" } },
104354 .{ .type = .u64, .kind = .{ .reg = .rax } },
104355 .{ .type = .u64, .kind = .{ .reg = .rdx } },
107388 .{ .type = .u128, .kind = .{ .ret_gpr_pair = .{ .cc = .ccc, .after = 0, .at = 0 } } },
107389 .unused,
104356107390 .unused,
104357107391 .unused,
104358107392 .unused,
......@@ -104363,15 +107397,48 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
104363107397 .dst_temps = .{ .mem, .unused },
104364107398 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
104365107399 .each = .{ .once = &.{
104366 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
104367 .{ .@"0:", ._sd, .mov, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
107400 .{ ._, ._, .mov, .tmp0d, .sia(-8, .src0, .add_unaligned_size), ._, ._ },
107401 .{ .@"0:", ._sd, .mov, .tmp1x, .memi(.src0q, .tmp0), ._, ._ },
104368107402 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
104369 .{ ._, ._, .mov, .memsia(.dst0q, .@"2", .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },
104370 .{ ._, ._, .mov, .memsiad(.dst0q, .@"2", .tmp0, .add_unaligned_size, 8), .tmp4q, ._, ._ },
104371 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
104372 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
107403 .{ ._, ._, .mov, .memsi(.dst0q, .@"2", .tmp0), .tmp3q0, ._, ._ },
107404 .{ ._, ._, .mov, .memsid(.dst0q, .@"2", .tmp0, 8), .tmp3q1, ._, ._ },
107405 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
107406 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
107407 } },
107408 }, .{
107409 .required_cc_abi = .win64,
107410 .required_features = .{ .sse2, null, null, null },
107411 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
107412 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any },
107413 .patterns = &.{
107414 .{ .src = .{ .to_mem, .none, .none } },
107415 },
107416 .call_frame = .{ .alignment = .@"16" },
107417 .extra_temps = .{
107418 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
107419 .{ .type = .f64, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
107420 .{ .type = .usize, .kind = .{ .extern_func = "__fixunsdfti" } },
107421 .unused,
107422 .unused,
107423 .unused,
107424 .unused,
107425 .unused,
107426 .unused,
107427 .unused,
107428 .unused,
107429 },
107430 .dst_temps = .{ .mem, .unused },
107431 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
107432 .each = .{ .once = &.{
107433 .{ ._, ._, .mov, .tmp0d, .sia(-8, .src0, .add_unaligned_size), ._, ._ },
107434 .{ .@"0:", ._sd, .mov, .tmp1x, .memi(.src0q, .tmp0), ._, ._ },
107435 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
107436 .{ ._, ._dqa, .mov, .memsi(.dst0x, .@"2", .tmp0), .tmp1x, ._, ._ },
107437 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
107438 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
104373107439 } },
104374107440 }, .{
107441 .required_cc_abi = .sysv64,
104375107442 .required_features = .{ .sse, null, null, null },
104376107443 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
104377107444 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any },
......@@ -104380,11 +107447,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
104380107447 },
104381107448 .call_frame = .{ .alignment = .@"16" },
104382107449 .extra_temps = .{
104383 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
104384 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
107450 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
107451 .{ .type = .f64, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
104385107452 .{ .type = .usize, .kind = .{ .extern_func = "__fixdfti" } },
104386 .{ .type = .u64, .kind = .{ .reg = .rax } },
104387 .{ .type = .i64, .kind = .{ .reg = .rdx } },
107453 .{ .type = .i128, .kind = .{ .ret_gpr_pair = .{ .cc = .ccc, .after = 0, .at = 0 } } },
107454 .unused,
104388107455 .unused,
104389107456 .unused,
104390107457 .unused,
......@@ -104395,16 +107462,50 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
104395107462 .dst_temps = .{ .mem, .unused },
104396107463 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
104397107464 .each = .{ .once = &.{
104398 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
107465 .{ ._, ._, .mov, .tmp0d, .sia(-8, .src0, .add_unaligned_size), ._, ._ },
104399107466 .{ .@"0:", ._ps, .xor, .tmp1x, .tmp1x, ._, ._ },
104400 .{ ._, ._ps, .movl, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
107467 .{ ._, ._ps, .movl, .tmp1x, .memi(.src0q, .tmp0), ._, ._ },
104401107468 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
104402 .{ ._, ._, .mov, .memsia(.dst0q, .@"2", .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },
104403 .{ ._, ._, .mov, .memsiad(.dst0q, .@"2", .tmp0, .add_unaligned_size, 8), .tmp4q, ._, ._ },
104404 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
104405 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
107469 .{ ._, ._, .mov, .memsi(.dst0q, .@"2", .tmp0), .tmp3q0, ._, ._ },
107470 .{ ._, ._, .mov, .memsid(.dst0q, .@"2", .tmp0, 8), .tmp3q1, ._, ._ },
107471 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
107472 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
107473 } },
107474 }, .{
107475 .required_cc_abi = .win64,
107476 .required_features = .{ .sse, null, null, null },
107477 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
107478 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any },
107479 .patterns = &.{
107480 .{ .src = .{ .to_mem, .none, .none } },
107481 },
107482 .call_frame = .{ .alignment = .@"16" },
107483 .extra_temps = .{
107484 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
107485 .{ .type = .f64, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
107486 .{ .type = .usize, .kind = .{ .extern_func = "__fixdfti" } },
107487 .unused,
107488 .unused,
107489 .unused,
107490 .unused,
107491 .unused,
107492 .unused,
107493 .unused,
107494 .unused,
107495 },
107496 .dst_temps = .{ .mem, .unused },
107497 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
107498 .each = .{ .once = &.{
107499 .{ ._, ._, .mov, .tmp0d, .sia(-8, .src0, .add_unaligned_size), ._, ._ },
107500 .{ .@"0:", ._ps, .xor, .tmp1x, .tmp1x, ._, ._ },
107501 .{ ._, ._ps, .movl, .tmp1x, .memi(.src0q, .tmp0), ._, ._ },
107502 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
107503 .{ ._, ._ps, .mova, .memsi(.dst0x, .@"2", .tmp0), .tmp1x, ._, ._ },
107504 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
107505 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
104406107506 } },
104407107507 }, .{
107508 .required_cc_abi = .sysv64,
104408107509 .required_features = .{ .sse, null, null, null },
104409107510 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
104410107511 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any },
......@@ -104413,11 +107514,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
104413107514 },
104414107515 .call_frame = .{ .alignment = .@"16" },
104415107516 .extra_temps = .{
104416 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
104417 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
107517 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
107518 .{ .type = .f64, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
104418107519 .{ .type = .usize, .kind = .{ .extern_func = "__fixunsdfti" } },
104419 .{ .type = .u64, .kind = .{ .reg = .rax } },
104420 .{ .type = .u64, .kind = .{ .reg = .rdx } },
107520 .{ .type = .u128, .kind = .{ .ret_gpr_pair = .{ .cc = .ccc, .after = 0, .at = 0 } } },
107521 .unused,
104421107522 .unused,
104422107523 .unused,
104423107524 .unused,
......@@ -104428,14 +107529,47 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
104428107529 .dst_temps = .{ .mem, .unused },
104429107530 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
104430107531 .each = .{ .once = &.{
104431 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
107532 .{ ._, ._, .mov, .tmp0d, .sia(-8, .src0, .add_unaligned_size), ._, ._ },
104432107533 .{ .@"0:", ._ps, .xor, .tmp1x, .tmp1x, ._, ._ },
104433 .{ ._, ._ps, .movl, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
107534 .{ ._, ._ps, .movl, .tmp1x, .memi(.src0q, .tmp0), ._, ._ },
104434107535 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
104435 .{ ._, ._, .mov, .memsia(.dst0q, .@"2", .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },
104436 .{ ._, ._, .mov, .memsiad(.dst0q, .@"2", .tmp0, .add_unaligned_size, 8), .tmp4q, ._, ._ },
104437 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
104438 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
107536 .{ ._, ._, .mov, .memsi(.dst0q, .@"2", .tmp0), .tmp3q0, ._, ._ },
107537 .{ ._, ._, .mov, .memsid(.dst0q, .@"2", .tmp0, 8), .tmp3q1, ._, ._ },
107538 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
107539 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
107540 } },
107541 }, .{
107542 .required_cc_abi = .win64,
107543 .required_features = .{ .sse, null, null, null },
107544 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
107545 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any },
107546 .patterns = &.{
107547 .{ .src = .{ .to_mem, .none, .none } },
107548 },
107549 .call_frame = .{ .alignment = .@"16" },
107550 .extra_temps = .{
107551 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
107552 .{ .type = .f64, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
107553 .{ .type = .usize, .kind = .{ .extern_func = "__fixunsdfti" } },
107554 .unused,
107555 .unused,
107556 .unused,
107557 .unused,
107558 .unused,
107559 .unused,
107560 .unused,
107561 .unused,
107562 },
107563 .dst_temps = .{ .mem, .unused },
107564 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
107565 .each = .{ .once = &.{
107566 .{ ._, ._, .mov, .tmp0d, .sia(-8, .src0, .add_unaligned_size), ._, ._ },
107567 .{ .@"0:", ._ps, .xor, .tmp1x, .tmp1x, ._, ._ },
107568 .{ ._, ._ps, .movl, .tmp1x, .memi(.src0q, .tmp0), ._, ._ },
107569 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
107570 .{ ._, ._ps, .mova, .memsi(.dst0x, .@"2", .tmp0), .tmp1x, ._, ._ },
107571 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
107572 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
104439107573 } },
104440107574 }, .{
104441107575 .required_features = .{ .@"64bit", .avx, null, null },
......@@ -104446,11 +107580,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
104446107580 },
104447107581 .call_frame = .{ .alignment = .@"16" },
104448107582 .extra_temps = .{
104449 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
107583 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
104450107584 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
104451 .{ .type = .usize, .kind = .{ .reg = .rdi } },
104452 .{ .type = .usize, .kind = .{ .reg = .rsi } },
104453 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
107585 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
107586 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
107587 .{ .type = .f64, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 2 } } },
104454107588 .{ .type = .usize, .kind = .{ .extern_func = "__fixdfei" } },
104455107589 .unused,
104456107590 .unused,
......@@ -104461,15 +107595,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
104461107595 .dst_temps = .{ .mem, .unused },
104462107596 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
104463107597 .each = .{ .once = &.{
104464 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
104465 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
107598 .{ ._, ._, .mov, .tmp0d, .sia(-8, .src0, .add_unaligned_size), ._, ._ },
107599 .{ ._, ._, .lea, .tmp1p, .mema(.dst0, .add_unaligned_size_sub_elem_size), ._, ._ },
104466107600 .{ .@"0:", ._, .mov, .tmp2p, .tmp1p, ._, ._ },
104467107601 .{ ._, ._, .mov, .tmp3d, .sa(.dst0, .add_bit_size), ._, ._ },
104468 .{ ._, .v_sd, .mov, .tmp4x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
107602 .{ ._, .v_sd, .mov, .tmp4x, .memi(.src0q, .tmp0), ._, ._ },
104469107603 .{ ._, ._, .call, .tmp5d, ._, ._, ._ },
104470 .{ ._, ._, .lea, .tmp1p, .leaa(.tmp1, .add_dst0_elem_size), ._, ._ },
104471 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
104472 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
107604 .{ ._, ._, .lea, .tmp1p, .leaa(.tmp1, .sub_dst0_elem_size), ._, ._ },
107605 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
107606 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
104473107607 } },
104474107608 }, .{
104475107609 .required_features = .{ .@"64bit", .avx, null, null },
......@@ -104480,11 +107614,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
104480107614 },
104481107615 .call_frame = .{ .alignment = .@"16" },
104482107616 .extra_temps = .{
104483 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
107617 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
104484107618 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
104485 .{ .type = .usize, .kind = .{ .reg = .rdi } },
104486 .{ .type = .usize, .kind = .{ .reg = .rsi } },
104487 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
107619 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
107620 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
107621 .{ .type = .f64, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 2 } } },
104488107622 .{ .type = .usize, .kind = .{ .extern_func = "__fixunsdfei" } },
104489107623 .unused,
104490107624 .unused,
......@@ -104495,15 +107629,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
104495107629 .dst_temps = .{ .mem, .unused },
104496107630 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
104497107631 .each = .{ .once = &.{
104498 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
104499 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
107632 .{ ._, ._, .mov, .tmp0d, .sia(-8, .src0, .add_unaligned_size), ._, ._ },
107633 .{ ._, ._, .lea, .tmp1p, .mema(.dst0, .add_unaligned_size_sub_elem_size), ._, ._ },
104500107634 .{ .@"0:", ._, .mov, .tmp2p, .tmp1p, ._, ._ },
104501107635 .{ ._, ._, .mov, .tmp3d, .sa(.dst0, .add_bit_size), ._, ._ },
104502 .{ ._, .v_sd, .mov, .tmp4x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
107636 .{ ._, .v_sd, .mov, .tmp4x, .memi(.src0q, .tmp0), ._, ._ },
104503107637 .{ ._, ._, .call, .tmp5d, ._, ._, ._ },
104504 .{ ._, ._, .lea, .tmp1p, .leaa(.tmp1, .add_dst0_elem_size), ._, ._ },
104505 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
104506 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
107638 .{ ._, ._, .lea, .tmp1p, .leaa(.tmp1, .sub_dst0_elem_size), ._, ._ },
107639 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
107640 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
104507107641 } },
104508107642 }, .{
104509107643 .required_features = .{ .@"64bit", .sse2, null, null },
......@@ -104514,11 +107648,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
104514107648 },
104515107649 .call_frame = .{ .alignment = .@"16" },
104516107650 .extra_temps = .{
104517 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
107651 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
104518107652 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
104519 .{ .type = .usize, .kind = .{ .reg = .rdi } },
104520 .{ .type = .usize, .kind = .{ .reg = .rsi } },
104521 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
107653 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
107654 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
107655 .{ .type = .f64, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 2 } } },
104522107656 .{ .type = .usize, .kind = .{ .extern_func = "__fixdfei" } },
104523107657 .unused,
104524107658 .unused,
......@@ -104529,15 +107663,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
104529107663 .dst_temps = .{ .mem, .unused },
104530107664 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
104531107665 .each = .{ .once = &.{
104532 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
104533 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
107666 .{ ._, ._, .mov, .tmp0d, .sia(-8, .src0, .add_unaligned_size), ._, ._ },
107667 .{ ._, ._, .lea, .tmp1p, .mema(.dst0, .add_unaligned_size_sub_elem_size), ._, ._ },
104534107668 .{ .@"0:", ._, .mov, .tmp2p, .tmp1p, ._, ._ },
104535107669 .{ ._, ._, .mov, .tmp3d, .sa(.dst0, .add_bit_size), ._, ._ },
104536 .{ ._, ._sd, .mov, .tmp4x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
107670 .{ ._, ._sd, .mov, .tmp4x, .memi(.src0q, .tmp0), ._, ._ },
104537107671 .{ ._, ._, .call, .tmp5d, ._, ._, ._ },
104538 .{ ._, ._, .lea, .tmp1p, .leaa(.tmp1, .add_dst0_elem_size), ._, ._ },
104539 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
104540 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
107672 .{ ._, ._, .lea, .tmp1p, .leaa(.tmp1, .sub_dst0_elem_size), ._, ._ },
107673 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
107674 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
104541107675 } },
104542107676 }, .{
104543107677 .required_features = .{ .@"64bit", .sse2, null, null },
......@@ -104548,11 +107682,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
104548107682 },
104549107683 .call_frame = .{ .alignment = .@"16" },
104550107684 .extra_temps = .{
104551 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
107685 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
104552107686 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
104553 .{ .type = .usize, .kind = .{ .reg = .rdi } },
104554 .{ .type = .usize, .kind = .{ .reg = .rsi } },
104555 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
107687 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
107688 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
107689 .{ .type = .f64, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 2 } } },
104556107690 .{ .type = .usize, .kind = .{ .extern_func = "__fixunsdfei" } },
104557107691 .unused,
104558107692 .unused,
......@@ -104563,15 +107697,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
104563107697 .dst_temps = .{ .mem, .unused },
104564107698 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
104565107699 .each = .{ .once = &.{
104566 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
104567 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
107700 .{ ._, ._, .mov, .tmp0d, .sia(-8, .src0, .add_unaligned_size), ._, ._ },
107701 .{ ._, ._, .lea, .tmp1p, .mema(.dst0, .add_unaligned_size_sub_elem_size), ._, ._ },
104568107702 .{ .@"0:", ._, .mov, .tmp2p, .tmp1p, ._, ._ },
104569107703 .{ ._, ._, .mov, .tmp3d, .sa(.dst0, .add_bit_size), ._, ._ },
104570 .{ ._, ._sd, .mov, .tmp4x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
107704 .{ ._, ._sd, .mov, .tmp4x, .memi(.src0q, .tmp0), ._, ._ },
104571107705 .{ ._, ._, .call, .tmp5d, ._, ._, ._ },
104572 .{ ._, ._, .lea, .tmp1p, .leaa(.tmp1, .add_dst0_elem_size), ._, ._ },
104573 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
104574 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
107706 .{ ._, ._, .lea, .tmp1p, .leaa(.tmp1, .sub_dst0_elem_size), ._, ._ },
107707 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
107708 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
104575107709 } },
104576107710 }, .{
104577107711 .required_features = .{ .@"64bit", .sse, null, null },
......@@ -104582,11 +107716,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
104582107716 },
104583107717 .call_frame = .{ .alignment = .@"16" },
104584107718 .extra_temps = .{
104585 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
107719 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
104586107720 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
104587 .{ .type = .usize, .kind = .{ .reg = .rdi } },
104588 .{ .type = .usize, .kind = .{ .reg = .rsi } },
104589 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
107721 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
107722 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
107723 .{ .type = .f64, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 2 } } },
104590107724 .{ .type = .usize, .kind = .{ .extern_func = "__fixdfei" } },
104591107725 .unused,
104592107726 .unused,
......@@ -104597,16 +107731,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
104597107731 .dst_temps = .{ .mem, .unused },
104598107732 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
104599107733 .each = .{ .once = &.{
104600 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
104601 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
107734 .{ ._, ._, .mov, .tmp0d, .sia(-8, .src0, .add_unaligned_size), ._, ._ },
107735 .{ ._, ._, .lea, .tmp1p, .mema(.dst0, .add_unaligned_size_sub_elem_size), ._, ._ },
104602107736 .{ .@"0:", ._ps, .xor, .tmp4x, .tmp4x, ._, ._ },
104603107737 .{ ._, ._, .mov, .tmp2p, .tmp1p, ._, ._ },
104604107738 .{ ._, ._, .mov, .tmp3d, .sa(.dst0, .add_bit_size), ._, ._ },
104605 .{ ._, ._ps, .movl, .tmp4x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
107739 .{ ._, ._ps, .movl, .tmp4x, .memi(.src0q, .tmp0), ._, ._ },
104606107740 .{ ._, ._, .call, .tmp5d, ._, ._, ._ },
104607 .{ ._, ._, .lea, .tmp1p, .leaa(.tmp1, .add_dst0_elem_size), ._, ._ },
104608 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
104609 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
107741 .{ ._, ._, .lea, .tmp1p, .leaa(.tmp1, .sub_dst0_elem_size), ._, ._ },
107742 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
107743 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
104610107744 } },
104611107745 }, .{
104612107746 .required_features = .{ .@"64bit", .sse, null, null },
......@@ -104617,11 +107751,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
104617107751 },
104618107752 .call_frame = .{ .alignment = .@"16" },
104619107753 .extra_temps = .{
104620 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
107754 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
104621107755 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
104622 .{ .type = .usize, .kind = .{ .reg = .rdi } },
104623 .{ .type = .usize, .kind = .{ .reg = .rsi } },
104624 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
107756 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
107757 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
107758 .{ .type = .f64, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 2 } } },
104625107759 .{ .type = .usize, .kind = .{ .extern_func = "__fixunsdfei" } },
104626107760 .unused,
104627107761 .unused,
......@@ -104632,16 +107766,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
104632107766 .dst_temps = .{ .mem, .unused },
104633107767 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
104634107768 .each = .{ .once = &.{
104635 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
104636 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
107769 .{ ._, ._, .mov, .tmp0d, .sia(-8, .src0, .add_unaligned_size), ._, ._ },
107770 .{ ._, ._, .lea, .tmp1p, .mema(.dst0, .add_unaligned_size_sub_elem_size), ._, ._ },
104637107771 .{ .@"0:", ._ps, .xor, .tmp4x, .tmp4x, ._, ._ },
104638107772 .{ ._, ._, .mov, .tmp2p, .tmp1p, ._, ._ },
104639107773 .{ ._, ._, .mov, .tmp3d, .sa(.dst0, .add_bit_size), ._, ._ },
104640 .{ ._, ._ps, .movl, .tmp4x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
107774 .{ ._, ._ps, .movl, .tmp4x, .memi(.src0q, .tmp0), ._, ._ },
104641107775 .{ ._, ._, .call, .tmp5d, ._, ._, ._ },
104642 .{ ._, ._, .lea, .tmp1p, .leaa(.tmp1, .add_dst0_elem_size), ._, ._ },
104643 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
104644 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
107776 .{ ._, ._, .lea, .tmp1p, .leaa(.tmp1, .sub_dst0_elem_size), ._, ._ },
107777 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
107778 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
104645107779 } },
104646107780 }, .{
104647107781 .required_features = .{ .sse3, .x87, null, null },
......@@ -104772,7 +107906,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
104772107906 },
104773107907 .extra_temps = .{
104774107908 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
104775 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
107909 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
104776107910 .{ .type = .f80, .kind = .{ .reg = .st7 } },
104777107911 .{ .type = .i16, .kind = .mem },
104778107912 .{ .type = .i8, .kind = .{ .rc = .general_purpose } },
......@@ -104786,15 +107920,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
104786107920 .dst_temps = .{ .mem, .unused },
104787107921 .clobbers = .{ .eflags = true },
104788107922 .each = .{ .once = &.{
104789 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
104790 .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
107923 .{ ._, ._, .lea, .tmp0p, .memad(.src0, .add_unaligned_size, -16), ._, ._ },
107924 .{ ._, ._, .mov, .tmp1d, .sia(-1, .dst0, .add_unaligned_size), ._, ._ },
104791107925 .{ .@"0:", .f_, .ld, .lea(.tmp0t), ._, ._, ._ },
104792107926 .{ ._, .fi_p, .stt, .tmp3w, ._, ._, ._ },
104793107927 .{ ._, ._, .movsx, .tmp4d, .tmp3b, ._, ._ },
104794 .{ ._, ._, .mov, .memia(.dst0b, .tmp1, .add_unaligned_size), .tmp4b, ._, ._ },
104795 .{ ._, ._, .lea, .tmp0p, .lead(.tmp0, 16), ._, ._ },
104796 .{ ._, ._, .add, .tmp1p, .si(1), ._, ._ },
104797 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
107928 .{ ._, ._, .mov, .memi(.dst0b, .tmp1), .tmp4b, ._, ._ },
107929 .{ ._, ._, .lea, .tmp0p, .lead(.tmp0, -16), ._, ._ },
107930 .{ ._, ._, .sub, .tmp1d, .si(1), ._, ._ },
107931 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
104798107932 } },
104799107933 }, .{
104800107934 .required_features = .{ .sse3, .x87, null, null },
......@@ -104805,7 +107939,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
104805107939 },
104806107940 .extra_temps = .{
104807107941 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
104808 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
107942 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
104809107943 .{ .type = .f80, .kind = .{ .reg = .st7 } },
104810107944 .{ .type = .i16, .kind = .mem },
104811107945 .{ .type = .i8, .kind = .{ .rc = .general_purpose } },
......@@ -104819,15 +107953,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
104819107953 .dst_temps = .{ .mem, .unused },
104820107954 .clobbers = .{ .eflags = true },
104821107955 .each = .{ .once = &.{
104822 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
104823 .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
107956 .{ ._, ._, .lea, .tmp0p, .memad(.src0, .add_unaligned_size, -16), ._, ._ },
107957 .{ ._, ._, .mov, .tmp1d, .sia(-1, .dst0, .add_unaligned_size), ._, ._ },
104824107958 .{ .@"0:", .f_, .ld, .lea(.tmp0t), ._, ._, ._ },
104825107959 .{ ._, .fi_p, .stt, .tmp3w, ._, ._, ._ },
104826107960 .{ ._, ._, .movsx, .tmp4d, .tmp3b, ._, ._ },
104827 .{ ._, ._, .mov, .memia(.dst0b, .tmp1, .add_unaligned_size), .tmp4b, ._, ._ },
104828 .{ ._, ._, .lea, .tmp0p, .lead(.tmp0, 16), ._, ._ },
104829 .{ ._, ._c, .in, .tmp1p, ._, ._, ._ },
104830 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
107961 .{ ._, ._, .mov, .memi(.dst0b, .tmp1), .tmp4b, ._, ._ },
107962 .{ ._, ._, .lea, .tmp0p, .lead(.tmp0, -16), ._, ._ },
107963 .{ ._, ._c, .de, .tmp1d, ._, ._, ._ },
107964 .{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
104831107965 } },
104832107966 }, .{
104833107967 .required_features = .{ .x87, .slow_incdec, null, null },
......@@ -104838,7 +107972,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
104838107972 },
104839107973 .extra_temps = .{
104840107974 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
104841 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
107975 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
104842107976 .{ .type = .u16, .kind = .mem },
104843107977 .{ .type = .i8, .kind = .{ .rc = .general_purpose } },
104844107978 .{ .type = .f80, .kind = .{ .reg = .st7 } },
......@@ -104852,8 +107986,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
104852107986 .dst_temps = .{ .mem, .unused },
104853107987 .clobbers = .{ .eflags = true },
104854107988 .each = .{ .once = &.{
104855 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
104856 .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
107989 .{ ._, ._, .lea, .tmp0p, .memad(.src0, .add_unaligned_size, -16), ._, ._ },
107990 .{ ._, ._, .mov, .tmp1d, .sia(-1, .dst0, .add_unaligned_size), ._, ._ },
104857107991 .{ ._, .fn_cw, .st, .tmp2w, ._, ._, ._ },
104858107992 .{ ._, ._, .movzx, .tmp3d, .memd(.tmp2b, 1), ._, ._ },
104859107993 .{ ._, ._, .@"or", .memd(.tmp2b, 1), .ui(0b000_0_11_00), ._, ._ },
......@@ -104862,10 +107996,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
104862107996 .{ .@"0:", .f_, .ld, .lea(.tmp0t), ._, ._, ._ },
104863107997 .{ ._, .fi_p, .st, .tmp5w, ._, ._, ._ },
104864107998 .{ ._, ._, .movsx, .tmp3d, .tmp5b, ._, ._ },
104865 .{ ._, ._, .mov, .memia(.dst0b, .tmp1, .add_unaligned_size), .tmp3b, ._, ._ },
104866 .{ ._, ._, .lea, .tmp0p, .lead(.tmp0, 16), ._, ._ },
104867 .{ ._, ._, .add, .tmp1p, .si(1), ._, ._ },
104868 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
107999 .{ ._, ._, .mov, .memi(.dst0b, .tmp1), .tmp3b, ._, ._ },
108000 .{ ._, ._, .lea, .tmp0p, .lead(.tmp0, -16), ._, ._ },
108001 .{ ._, ._, .sub, .tmp1d, .si(1), ._, ._ },
108002 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
104869108003 .{ ._, .f_cw, .ld, .tmp2w, ._, ._, ._ },
104870108004 } },
104871108005 }, .{
......@@ -104877,7 +108011,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
104877108011 },
104878108012 .extra_temps = .{
104879108013 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
104880 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
108014 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
104881108015 .{ .type = .u16, .kind = .mem },
104882108016 .{ .type = .i8, .kind = .{ .rc = .general_purpose } },
104883108017 .{ .type = .f80, .kind = .{ .reg = .st7 } },
......@@ -104891,8 +108025,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
104891108025 .dst_temps = .{ .mem, .unused },
104892108026 .clobbers = .{ .eflags = true },
104893108027 .each = .{ .once = &.{
104894 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
104895 .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
108028 .{ ._, ._, .lea, .tmp0p, .memad(.src0, .add_unaligned_size, -16), ._, ._ },
108029 .{ ._, ._, .mov, .tmp1d, .sia(-1, .dst0, .add_unaligned_size), ._, ._ },
104896108030 .{ ._, .fn_cw, .st, .tmp2w, ._, ._, ._ },
104897108031 .{ ._, ._, .movzx, .tmp3d, .memd(.tmp2b, 1), ._, ._ },
104898108032 .{ ._, ._, .@"or", .memd(.tmp2b, 1), .ui(0b000_0_11_00), ._, ._ },
......@@ -104901,10 +108035,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
104901108035 .{ .@"0:", .f_, .ld, .lea(.tmp0t), ._, ._, ._ },
104902108036 .{ ._, .fi_p, .st, .tmp5w, ._, ._, ._ },
104903108037 .{ ._, ._, .movsx, .tmp3d, .tmp5b, ._, ._ },
104904 .{ ._, ._, .mov, .memia(.dst0b, .tmp1, .add_unaligned_size), .tmp3b, ._, ._ },
104905 .{ ._, ._, .lea, .tmp0p, .lead(.tmp0, 16), ._, ._ },
104906 .{ ._, ._c, .in, .tmp1p, ._, ._, ._ },
104907 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
108038 .{ ._, ._, .mov, .memi(.dst0b, .tmp1), .tmp3b, ._, ._ },
108039 .{ ._, ._, .lea, .tmp0p, .lead(.tmp0, -16), ._, ._ },
108040 .{ ._, ._c, .de, .tmp1d, ._, ._, ._ },
108041 .{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
104908108042 .{ ._, .f_cw, .ld, .tmp2w, ._, ._, ._ },
104909108043 } },
104910108044 }, .{
......@@ -104916,7 +108050,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
104916108050 },
104917108051 .extra_temps = .{
104918108052 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
104919 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
108053 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
104920108054 .{ .type = .f80, .kind = .{ .reg = .st7 } },
104921108055 .{ .type = .i16, .kind = .mem },
104922108056 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
......@@ -104930,15 +108064,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
104930108064 .dst_temps = .{ .mem, .unused },
104931108065 .clobbers = .{ .eflags = true },
104932108066 .each = .{ .once = &.{
104933 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
104934 .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
108067 .{ ._, ._, .lea, .tmp0p, .memad(.src0, .add_unaligned_size, -16), ._, ._ },
108068 .{ ._, ._, .mov, .tmp1d, .sia(-1, .dst0, .add_unaligned_size), ._, ._ },
104935108069 .{ .@"0:", .f_, .ld, .lea(.tmp0t), ._, ._, ._ },
104936108070 .{ ._, .fi_p, .stt, .tmp3w, ._, ._, ._ },
104937108071 .{ ._, ._, .movzx, .tmp4d, .tmp3b, ._, ._ },
104938 .{ ._, ._, .mov, .memia(.dst0b, .tmp1, .add_unaligned_size), .tmp4b, ._, ._ },
104939 .{ ._, ._, .lea, .tmp0p, .lead(.tmp0, 16), ._, ._ },
104940 .{ ._, ._, .add, .tmp1p, .si(1), ._, ._ },
104941 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
108072 .{ ._, ._, .mov, .memi(.dst0b, .tmp1), .tmp4b, ._, ._ },
108073 .{ ._, ._, .lea, .tmp0p, .lead(.tmp0, -16), ._, ._ },
108074 .{ ._, ._, .sub, .tmp1d, .si(1), ._, ._ },
108075 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
104942108076 } },
104943108077 }, .{
104944108078 .required_features = .{ .sse3, .x87, null, null },
......@@ -104949,7 +108083,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
104949108083 },
104950108084 .extra_temps = .{
104951108085 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
104952 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
108086 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
104953108087 .{ .type = .f80, .kind = .{ .reg = .st7 } },
104954108088 .{ .type = .i16, .kind = .mem },
104955108089 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
......@@ -104963,15 +108097,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
104963108097 .dst_temps = .{ .mem, .unused },
104964108098 .clobbers = .{ .eflags = true },
104965108099 .each = .{ .once = &.{
104966 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
104967 .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
108100 .{ ._, ._, .lea, .tmp0p, .memad(.src0, .add_unaligned_size, -16), ._, ._ },
108101 .{ ._, ._, .mov, .tmp1d, .sia(-1, .dst0, .add_unaligned_size), ._, ._ },
104968108102 .{ .@"0:", .f_, .ld, .lea(.tmp0t), ._, ._, ._ },
104969108103 .{ ._, .fi_p, .stt, .tmp3w, ._, ._, ._ },
104970108104 .{ ._, ._, .movzx, .tmp4d, .tmp3b, ._, ._ },
104971 .{ ._, ._, .mov, .memia(.dst0b, .tmp1, .add_unaligned_size), .tmp4b, ._, ._ },
104972 .{ ._, ._, .lea, .tmp0p, .lead(.tmp0, 16), ._, ._ },
104973 .{ ._, ._c, .in, .tmp1p, ._, ._, ._ },
104974 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
108105 .{ ._, ._, .mov, .memi(.dst0b, .tmp1), .tmp4b, ._, ._ },
108106 .{ ._, ._, .lea, .tmp0p, .lead(.tmp0, -16), ._, ._ },
108107 .{ ._, ._c, .de, .tmp1d, ._, ._, ._ },
108108 .{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
104975108109 } },
104976108110 }, .{
104977108111 .required_features = .{ .x87, .slow_incdec, null, null },
......@@ -104982,7 +108116,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
104982108116 },
104983108117 .extra_temps = .{
104984108118 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
104985 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
108119 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
104986108120 .{ .type = .u16, .kind = .mem },
104987108121 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
104988108122 .{ .type = .f80, .kind = .{ .reg = .st7 } },
......@@ -104996,8 +108130,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
104996108130 .dst_temps = .{ .mem, .unused },
104997108131 .clobbers = .{ .eflags = true },
104998108132 .each = .{ .once = &.{
104999 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
105000 .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
108133 .{ ._, ._, .lea, .tmp0p, .memad(.src0, .add_unaligned_size, -16), ._, ._ },
108134 .{ ._, ._, .mov, .tmp1d, .sia(-1, .dst0, .add_unaligned_size), ._, ._ },
105001108135 .{ ._, .fn_cw, .st, .tmp2w, ._, ._, ._ },
105002108136 .{ ._, ._, .movzx, .tmp3d, .memd(.tmp2b, 1), ._, ._ },
105003108137 .{ ._, ._, .@"or", .memd(.tmp2b, 1), .ui(0b000_0_11_00), ._, ._ },
......@@ -105006,10 +108140,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
105006108140 .{ .@"0:", .f_, .ld, .lea(.tmp0t), ._, ._, ._ },
105007108141 .{ ._, .fi_p, .st, .tmp5w, ._, ._, ._ },
105008108142 .{ ._, ._, .movzx, .tmp3d, .tmp5b, ._, ._ },
105009 .{ ._, ._, .mov, .memia(.dst0b, .tmp1, .add_unaligned_size), .tmp3b, ._, ._ },
105010 .{ ._, ._, .lea, .tmp0p, .lead(.tmp0, 16), ._, ._ },
105011 .{ ._, ._, .add, .tmp1p, .si(1), ._, ._ },
105012 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
108143 .{ ._, ._, .mov, .memi(.dst0b, .tmp1), .tmp3b, ._, ._ },
108144 .{ ._, ._, .lea, .tmp0p, .lead(.tmp0, -16), ._, ._ },
108145 .{ ._, ._, .sub, .tmp1d, .si(1), ._, ._ },
108146 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
105013108147 .{ ._, .f_cw, .ld, .tmp2w, ._, ._, ._ },
105014108148 } },
105015108149 }, .{
......@@ -105021,7 +108155,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
105021108155 },
105022108156 .extra_temps = .{
105023108157 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
105024 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
108158 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
105025108159 .{ .type = .u16, .kind = .mem },
105026108160 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
105027108161 .{ .type = .f80, .kind = .{ .reg = .st7 } },
......@@ -105035,8 +108169,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
105035108169 .dst_temps = .{ .mem, .unused },
105036108170 .clobbers = .{ .eflags = true },
105037108171 .each = .{ .once = &.{
105038 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
105039 .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
108172 .{ ._, ._, .lea, .tmp0p, .memad(.src0, .add_unaligned_size, -16), ._, ._ },
108173 .{ ._, ._, .mov, .tmp1d, .sia(-1, .dst0, .add_unaligned_size), ._, ._ },
105040108174 .{ ._, .fn_cw, .st, .tmp2w, ._, ._, ._ },
105041108175 .{ ._, ._, .movzx, .tmp3d, .memd(.tmp2b, 1), ._, ._ },
105042108176 .{ ._, ._, .@"or", .memd(.tmp2b, 1), .ui(0b000_0_11_00), ._, ._ },
......@@ -105045,10 +108179,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
105045108179 .{ .@"0:", .f_, .ld, .lea(.tmp0t), ._, ._, ._ },
105046108180 .{ ._, .fi_p, .st, .tmp5w, ._, ._, ._ },
105047108181 .{ ._, ._, .movzx, .tmp3d, .tmp5b, ._, ._ },
105048 .{ ._, ._, .mov, .memia(.dst0b, .tmp1, .add_unaligned_size), .tmp3b, ._, ._ },
105049 .{ ._, ._, .lea, .tmp0p, .lead(.tmp0, 16), ._, ._ },
105050 .{ ._, ._c, .in, .tmp1p, ._, ._, ._ },
105051 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
108182 .{ ._, ._, .mov, .memi(.dst0b, .tmp1), .tmp3b, ._, ._ },
108183 .{ ._, ._, .lea, .tmp0p, .lead(.tmp0, -16), ._, ._ },
108184 .{ ._, ._c, .de, .tmp1d, ._, ._, ._ },
108185 .{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
105052108186 .{ ._, .f_cw, .ld, .tmp2w, ._, ._, ._ },
105053108187 } },
105054108188 }, .{
......@@ -105117,7 +108251,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
105117108251 .{ .src = .{ .to_mem, .none, .none } },
105118108252 },
105119108253 .extra_temps = .{
105120 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
108254 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
105121108255 .{ .type = .f80, .kind = .{ .reg = .st7 } },
105122108256 .unused,
105123108257 .unused,
......@@ -105132,11 +108266,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
105132108266 .dst_temps = .{ .mem, .unused },
105133108267 .clobbers = .{ .eflags = true },
105134108268 .each = .{ .once = &.{
105135 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
105136 .{ .@"0:", .f_, .ld, .memsia(.src0t, .@"8", .tmp0, .add_unaligned_size), ._, ._, ._ },
105137 .{ ._, .fi_p, .stt, .memia(.dst0w, .tmp0, .add_unaligned_size), ._, ._, ._ },
105138 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
105139 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
108269 .{ ._, ._, .mov, .tmp0d, .sia(-2, .dst0, .add_unaligned_size), ._, ._ },
108270 .{ .@"0:", .f_, .ld, .memsi(.src0t, .@"8", .tmp0), ._, ._, ._ },
108271 .{ ._, .fi_p, .stt, .memi(.dst0w, .tmp0), ._, ._, ._ },
108272 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
108273 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
105140108274 } },
105141108275 }, .{
105142108276 .required_features = .{ .x87, null, null, null },
......@@ -105146,7 +108280,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
105146108280 .{ .src = .{ .to_mem, .none, .none } },
105147108281 },
105148108282 .extra_temps = .{
105149 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
108283 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
105150108284 .{ .type = .u16, .kind = .mem },
105151108285 .{ .type = .f80, .kind = .{ .reg = .st7 } },
105152108286 .unused,
......@@ -105166,11 +108300,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
105166108300 .{ ._, ._, .@"or", .memd(.tmp1b, 1), .ui(0b000_0_11_00), ._, ._ },
105167108301 .{ ._, .f_cw, .ld, .tmp1w, ._, ._, ._ },
105168108302 .{ ._, ._, .mov, .memd(.tmp1b, 1), .tmp0b, ._, ._ },
105169 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
105170 .{ .@"0:", .f_, .ld, .memsia(.src0t, .@"8", .tmp0, .add_unaligned_size), ._, ._, ._ },
105171 .{ ._, .fi_p, .st, .memia(.dst0w, .tmp0, .add_unaligned_size), ._, ._, ._ },
105172 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
105173 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
108303 .{ ._, ._, .mov, .tmp0d, .sia(-2, .dst0, .add_unaligned_size), ._, ._ },
108304 .{ .@"0:", .f_, .ld, .memsi(.src0t, .@"8", .tmp0), ._, ._, ._ },
108305 .{ ._, .fi_p, .st, .memi(.dst0w, .tmp0), ._, ._, ._ },
108306 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
108307 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
105174108308 .{ ._, .f_cw, .ld, .tmp1w, ._, ._, ._ },
105175108309 } },
105176108310 }, .{
......@@ -105181,7 +108315,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
105181108315 .{ .src = .{ .to_mem, .none, .none } },
105182108316 },
105183108317 .extra_temps = .{
105184 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
108318 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
105185108319 .{ .type = .f80, .kind = .{ .reg = .st7 } },
105186108320 .{ .type = .i32, .kind = .mem },
105187108321 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
......@@ -105196,13 +108330,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
105196108330 .dst_temps = .{ .mem, .unused },
105197108331 .clobbers = .{ .eflags = true },
105198108332 .each = .{ .once = &.{
105199 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
105200 .{ .@"0:", .f_, .ld, .memsia(.src0t, .@"8", .tmp0, .add_unaligned_size), ._, ._, ._ },
108333 .{ ._, ._, .mov, .tmp0d, .sia(-2, .dst0, .add_unaligned_size), ._, ._ },
108334 .{ .@"0:", .f_, .ld, .memsi(.src0t, .@"8", .tmp0), ._, ._, ._ },
105201108335 .{ ._, .fi_p, .stt, .tmp2d, ._, ._, ._ },
105202108336 .{ ._, ._, .mov, .tmp3d, .tmp2d, ._, ._ },
105203 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp3w, ._, ._ },
105204 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
105205 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
108337 .{ ._, ._, .mov, .memi(.dst0w, .tmp0), .tmp3w, ._, ._ },
108338 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
108339 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
105206108340 } },
105207108341 }, .{
105208108342 .required_features = .{ .x87, null, null, null },
......@@ -105212,7 +108346,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
105212108346 .{ .src = .{ .to_mem, .none, .none } },
105213108347 },
105214108348 .extra_temps = .{
105215 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
108349 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
105216108350 .{ .type = .u16, .kind = .mem },
105217108351 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
105218108352 .{ .type = .f80, .kind = .{ .reg = .st7 } },
......@@ -105227,18 +108361,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
105227108361 .dst_temps = .{ .mem, .unused },
105228108362 .clobbers = .{ .eflags = true },
105229108363 .each = .{ .once = &.{
105230 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
108364 .{ ._, ._, .mov, .tmp0d, .sia(-2, .dst0, .add_unaligned_size), ._, ._ },
105231108365 .{ ._, .fn_cw, .st, .tmp1w, ._, ._, ._ },
105232108366 .{ ._, ._, .movzx, .tmp2d, .memd(.tmp1b, 1), ._, ._ },
105233108367 .{ ._, ._, .@"or", .memd(.tmp1b, 1), .ui(0b000_0_11_00), ._, ._ },
105234108368 .{ ._, .f_cw, .ld, .tmp1w, ._, ._, ._ },
105235108369 .{ ._, ._, .mov, .memd(.tmp1b, 1), .tmp2b, ._, ._ },
105236 .{ .@"0:", .f_, .ld, .memsia(.src0t, .@"8", .tmp0, .add_unaligned_size), ._, ._, ._ },
108370 .{ .@"0:", .f_, .ld, .memsi(.src0t, .@"8", .tmp0), ._, ._, ._ },
105237108371 .{ ._, .fi_p, .st, .tmp4d, ._, ._, ._ },
105238108372 .{ ._, ._, .mov, .tmp2d, .tmp4d, ._, ._ },
105239 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp2w, ._, ._ },
105240 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
105241 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
108373 .{ ._, ._, .mov, .memi(.dst0w, .tmp0), .tmp2w, ._, ._ },
108374 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
108375 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
105242108376 .{ ._, .f_cw, .ld, .tmp1w, ._, ._, ._ },
105243108377 } },
105244108378 }, .{
......@@ -105307,7 +108441,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
105307108441 .{ .src = .{ .to_mem, .none, .none } },
105308108442 },
105309108443 .extra_temps = .{
105310 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
108444 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
105311108445 .{ .type = .f80, .kind = .{ .reg = .st7 } },
105312108446 .unused,
105313108447 .unused,
......@@ -105322,11 +108456,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
105322108456 .dst_temps = .{ .mem, .unused },
105323108457 .clobbers = .{ .eflags = true },
105324108458 .each = .{ .once = &.{
105325 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
105326 .{ .@"0:", .f_, .ld, .memsia(.src0t, .@"4", .tmp0, .add_unaligned_size), ._, ._, ._ },
105327 .{ ._, .fi_p, .stt, .memia(.dst0d, .tmp0, .add_unaligned_size), ._, ._, ._ },
105328 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
105329 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
108459 .{ ._, ._, .mov, .tmp0d, .sia(-4, .dst0, .add_unaligned_size), ._, ._ },
108460 .{ .@"0:", .f_, .ld, .memsi(.src0t, .@"4", .tmp0), ._, ._, ._ },
108461 .{ ._, .fi_p, .stt, .memi(.dst0d, .tmp0), ._, ._, ._ },
108462 .{ ._, ._, .sub, .tmp0d, .si(4), ._, ._ },
108463 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
105330108464 } },
105331108465 }, .{
105332108466 .required_features = .{ .x87, null, null, null },
......@@ -105336,7 +108470,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
105336108470 .{ .src = .{ .to_mem, .none, .none } },
105337108471 },
105338108472 .extra_temps = .{
105339 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
108473 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
105340108474 .{ .type = .u16, .kind = .mem },
105341108475 .{ .type = .f80, .kind = .{ .reg = .st7 } },
105342108476 .unused,
......@@ -105356,11 +108490,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
105356108490 .{ ._, ._, .@"or", .memd(.tmp1b, 1), .ui(0b000_0_11_00), ._, ._ },
105357108491 .{ ._, .f_cw, .ld, .tmp1w, ._, ._, ._ },
105358108492 .{ ._, ._, .mov, .memd(.tmp1b, 1), .tmp0b, ._, ._ },
105359 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
105360 .{ .@"0:", .f_, .ld, .memsia(.src0t, .@"4", .tmp0, .add_unaligned_size), ._, ._, ._ },
105361 .{ ._, .fi_p, .st, .memia(.dst0d, .tmp0, .add_unaligned_size), ._, ._, ._ },
105362 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
105363 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
108493 .{ ._, ._, .mov, .tmp0d, .sia(-4, .dst0, .add_unaligned_size), ._, ._ },
108494 .{ .@"0:", .f_, .ld, .memsi(.src0t, .@"4", .tmp0), ._, ._, ._ },
108495 .{ ._, .fi_p, .st, .memi(.dst0d, .tmp0), ._, ._, ._ },
108496 .{ ._, ._, .sub, .tmp0d, .si(4), ._, ._ },
108497 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
105364108498 .{ ._, .f_cw, .ld, .tmp1w, ._, ._, ._ },
105365108499 } },
105366108500 }, .{
......@@ -105371,7 +108505,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
105371108505 .{ .src = .{ .to_mem, .none, .none } },
105372108506 },
105373108507 .extra_temps = .{
105374 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
108508 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
105375108509 .{ .type = .f80, .kind = .{ .reg = .st7 } },
105376108510 .{ .type = .i64, .kind = .mem },
105377108511 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
......@@ -105386,13 +108520,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
105386108520 .dst_temps = .{ .mem, .unused },
105387108521 .clobbers = .{ .eflags = true },
105388108522 .each = .{ .once = &.{
105389 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
105390 .{ .@"0:", .f_, .ld, .memsia(.src0t, .@"4", .tmp0, .add_unaligned_size), ._, ._, ._ },
108523 .{ ._, ._, .mov, .tmp0d, .sia(-4, .dst0, .add_unaligned_size), ._, ._ },
108524 .{ .@"0:", .f_, .ld, .memsi(.src0t, .@"4", .tmp0), ._, ._, ._ },
105391108525 .{ ._, .fi_p, .stt, .tmp2q, ._, ._, ._ },
105392108526 .{ ._, ._, .mov, .tmp3d, .tmp2d, ._, ._ },
105393 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp3d, ._, ._ },
105394 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
105395 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
108527 .{ ._, ._, .mov, .memi(.dst0d, .tmp0), .tmp3d, ._, ._ },
108528 .{ ._, ._, .sub, .tmp0d, .si(4), ._, ._ },
108529 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
105396108530 } },
105397108531 }, .{
105398108532 .required_features = .{ .x87, null, null, null },
......@@ -105402,7 +108536,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
105402108536 .{ .src = .{ .to_mem, .none, .none } },
105403108537 },
105404108538 .extra_temps = .{
105405 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
108539 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
105406108540 .{ .type = .u16, .kind = .mem },
105407108541 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
105408108542 .{ .type = .f80, .kind = .{ .reg = .st7 } },
......@@ -105417,18 +108551,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
105417108551 .dst_temps = .{ .mem, .unused },
105418108552 .clobbers = .{ .eflags = true },
105419108553 .each = .{ .once = &.{
105420 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
108554 .{ ._, ._, .mov, .tmp0d, .sia(-4, .dst0, .add_unaligned_size), ._, ._ },
105421108555 .{ ._, .fn_cw, .st, .tmp1w, ._, ._, ._ },
105422108556 .{ ._, ._, .movzx, .tmp2d, .memd(.tmp1b, 1), ._, ._ },
105423108557 .{ ._, ._, .@"or", .memd(.tmp1b, 1), .ui(0b000_0_11_00), ._, ._ },
105424108558 .{ ._, .f_cw, .ld, .tmp1w, ._, ._, ._ },
105425108559 .{ ._, ._, .mov, .memd(.tmp1b, 1), .tmp2b, ._, ._ },
105426 .{ .@"0:", .f_, .ld, .memsia(.src0t, .@"4", .tmp0, .add_unaligned_size), ._, ._, ._ },
108560 .{ .@"0:", .f_, .ld, .memsi(.src0t, .@"4", .tmp0), ._, ._, ._ },
105427108561 .{ ._, .fi_p, .st, .tmp4q, ._, ._, ._ },
105428108562 .{ ._, ._, .mov, .tmp2d, .tmp4d, ._, ._ },
105429 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp2d, ._, ._ },
105430 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
105431 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
108563 .{ ._, ._, .mov, .memi(.dst0d, .tmp0), .tmp2d, ._, ._ },
108564 .{ ._, ._, .sub, .tmp0d, .si(4), ._, ._ },
108565 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
105432108566 .{ ._, .f_cw, .ld, .tmp1w, ._, ._, ._ },
105433108567 } },
105434108568 }, .{
......@@ -105490,6 +108624,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
105490108624 .{ ._, .f_cw, .ld, .tmp1w, ._, ._, ._ },
105491108625 } },
105492108626 }, .{
108627 .required_abi = .gnu,
105493108628 .required_features = .{ .@"64bit", .sse3, .x87, null },
105494108629 .src_constraints = .{ .{ .float = .tbyte }, .any, .any },
105495108630 .dst_constraints = .{ .{ .exact_unsigned_int = 64 }, .any },
......@@ -105526,6 +108661,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
105526108661 .{ ._, ._, .@"or", .dst0q, .tmp0q, ._, ._ },
105527108662 } },
105528108663 }, .{
108664 .required_abi = .gnu,
105529108665 .required_features = .{ .@"64bit", .x87, null, null },
105530108666 .src_constraints = .{ .{ .float = .tbyte }, .any, .any },
105531108667 .dst_constraints = .{ .{ .exact_unsigned_int = 64 }, .any },
......@@ -105567,6 +108703,49 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
105567108703 .{ ._, ._, .@"and", .dst0q, .tmp4q, ._, ._ },
105568108704 .{ ._, ._, .@"or", .dst0q, .tmp5q, ._, ._ },
105569108705 } },
108706 }, .{
108707 .required_abi = .msvc,
108708 .required_features = .{ .@"64bit", .x87, null, null },
108709 .src_constraints = .{ .{ .float = .tbyte }, .any, .any },
108710 .dst_constraints = .{ .{ .exact_unsigned_int = 64 }, .any },
108711 .patterns = &.{
108712 .{ .src = .{ .mem, .none, .none } },
108713 .{ .src = .{ .to_x87, .none, .none } },
108714 },
108715 .extra_temps = .{
108716 .{ .type = .f80, .kind = .{ .reg = .st7 } },
108717 .{ .type = .f80, .kind = .{ .reg = .st6 } },
108718 .{ .type = .u16, .kind = .mem },
108719 .{ .type = .f32, .kind = .{ .@"0x1p63_mem" = .{} } },
108720 .{ .type = .i64, .kind = .mem },
108721 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
108722 .unused,
108723 .unused,
108724 .unused,
108725 .unused,
108726 .unused,
108727 },
108728 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
108729 .clobbers = .{ .eflags = true },
108730 .each = .{ .once = &.{
108731 .{ ._, .f_, .ld, .src0t, ._, ._, ._ },
108732 .{ ._, .f_, .ld, .tmp0t, ._, ._, ._ },
108733 .{ ._, .fn_cw, .st, .tmp2w, ._, ._, ._ },
108734 .{ ._, ._, .movzx, .dst0d, .memd(.tmp2b, 1), ._, ._ },
108735 .{ ._, ._, .@"or", .memd(.tmp2b, 1), .ui(0b000_0_11_11), ._, ._ },
108736 .{ ._, .f_cw, .ld, .tmp2w, ._, ._, ._ },
108737 .{ ._, ._, .mov, .memd(.tmp2b, 1), .dst0b, ._, ._ },
108738 .{ ._, ._, .lea, .dst0q, .mem(.tmp3), ._, ._ },
108739 .{ ._, .fi_p, .st, .tmp4q, ._, ._, ._ },
108740 .{ ._, .f_, .sub, .lea(.dst0d), ._, ._, ._ },
108741 .{ ._, ._, .mov, .tmp5q, .tmp4q, ._, ._ },
108742 .{ ._, .fi_p, .st, .tmp4q, ._, ._, ._ },
108743 .{ ._, .f_cw, .ld, .tmp2w, ._, ._, ._ },
108744 .{ ._, ._, .mov, .dst0q, .tmp5q, ._, ._ },
108745 .{ ._, ._r, .sa, .dst0q, .ui(63), ._, ._ },
108746 .{ ._, ._, .@"and", .dst0q, .tmp4q, ._, ._ },
108747 .{ ._, ._, .@"or", .dst0q, .tmp5q, ._, ._ },
108748 } },
105570108749 }, .{
105571108750 .required_features = .{ .sse3, .x87, null, null },
105572108751 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
......@@ -105575,7 +108754,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
105575108754 .{ .src = .{ .to_mem, .none, .none } },
105576108755 },
105577108756 .extra_temps = .{
105578 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
108757 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
105579108758 .{ .type = .f80, .kind = .{ .reg = .st7 } },
105580108759 .unused,
105581108760 .unused,
......@@ -105590,11 +108769,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
105590108769 .dst_temps = .{ .mem, .unused },
105591108770 .clobbers = .{ .eflags = true },
105592108771 .each = .{ .once = &.{
105593 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
105594 .{ .@"0:", .f_, .ld, .memsia(.src0t, .@"2", .tmp0, .add_unaligned_size), ._, ._, ._ },
105595 .{ ._, .fi_p, .stt, .memia(.dst0q, .tmp0, .add_unaligned_size), ._, ._, ._ },
105596 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
105597 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
108772 .{ ._, ._, .mov, .tmp0d, .sia(-8, .dst0, .add_unaligned_size), ._, ._ },
108773 .{ .@"0:", .f_, .ld, .memsi(.src0t, .@"2", .tmp0), ._, ._, ._ },
108774 .{ ._, .fi_p, .stt, .memi(.dst0q, .tmp0), ._, ._, ._ },
108775 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
108776 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
105598108777 } },
105599108778 }, .{
105600108779 .required_features = .{ .x87, null, null, null },
......@@ -105604,7 +108783,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
105604108783 .{ .src = .{ .to_mem, .none, .none } },
105605108784 },
105606108785 .extra_temps = .{
105607 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
108786 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
105608108787 .{ .type = .u16, .kind = .mem },
105609108788 .{ .type = .f80, .kind = .{ .reg = .st7 } },
105610108789 .unused,
......@@ -105624,15 +108803,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
105624108803 .{ ._, ._, .@"or", .memd(.tmp1b, 1), .ui(0b000_0_11_00), ._, ._ },
105625108804 .{ ._, .f_cw, .ld, .tmp1w, ._, ._, ._ },
105626108805 .{ ._, ._, .mov, .memd(.tmp1b, 1), .tmp0b, ._, ._ },
105627 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
105628 .{ .@"0:", .f_, .ld, .memsia(.src0t, .@"2", .tmp0, .add_unaligned_size), ._, ._, ._ },
105629 .{ ._, .fi_p, .st, .memia(.dst0q, .tmp0, .add_unaligned_size), ._, ._, ._ },
105630 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
105631 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
108806 .{ ._, ._, .mov, .tmp0d, .sia(-8, .dst0, .add_unaligned_size), ._, ._ },
108807 .{ .@"0:", .f_, .ld, .memsi(.src0t, .@"2", .tmp0), ._, ._, ._ },
108808 .{ ._, .fi_p, .st, .memi(.dst0q, .tmp0), ._, ._, ._ },
108809 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
108810 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
105632108811 .{ ._, .f_cw, .ld, .tmp1w, ._, ._, ._ },
105633108812 } },
105634108813 }, .{
105635 .required_features = .{ .@"64bit", .avx, null, null },
108814 .required_cc_abi = .sysv64,
108815 .required_features = .{ .avx, null, null, null },
105636108816 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
105637108817 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any },
105638108818 .patterns = &.{
......@@ -105640,11 +108820,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
105640108820 },
105641108821 .call_frame = .{ .size = 16, .alignment = .@"16" },
105642108822 .extra_temps = .{
105643 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
105644 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
108823 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
108824 .{ .type = .f80, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
105645108825 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
105646 .{ .type = .usize, .kind = .{ .extern_func = "__fixunsxfti" } },
105647 .{ .type = .u64, .kind = .{ .reg = .rax } },
108826 .{ .type = .usize, .kind = .{ .extern_func = "__fixunsxfdi" } },
108827 .{ .type = .u64, .kind = .{ .ret_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
105648108828 .unused,
105649108829 .unused,
105650108830 .unused,
......@@ -105655,16 +108835,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
105655108835 .dst_temps = .{ .mem, .unused },
105656108836 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
105657108837 .each = .{ .once = &.{
105658 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
105659 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memsia(.src0x, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
108838 .{ ._, ._, .mov, .tmp0d, .sia(-8, .dst0, .add_unaligned_size), ._, ._ },
108839 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memsi(.src0x, .@"2", .tmp0), ._, ._ },
105660108840 .{ ._, .v_dqa, .mov, .tmp2x, .tmp1x, ._, ._ },
105661108841 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
105662 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp4q, ._, ._ },
105663 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
105664 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
108842 .{ ._, ._, .mov, .memi(.dst0q, .tmp0), .tmp4q, ._, ._ },
108843 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
108844 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
105665108845 } },
105666108846 }, .{
105667 .required_features = .{ .@"64bit", .sse2, null, null },
108847 .required_cc_abi = .sysv64,
108848 .required_features = .{ .sse2, null, null, null },
105668108849 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
105669108850 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any },
105670108851 .patterns = &.{
......@@ -105672,11 +108853,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
105672108853 },
105673108854 .call_frame = .{ .size = 16, .alignment = .@"16" },
105674108855 .extra_temps = .{
105675 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
105676 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
108856 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
108857 .{ .type = .f80, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
105677108858 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
105678 .{ .type = .usize, .kind = .{ .extern_func = "__fixunsxfti" } },
105679 .{ .type = .u64, .kind = .{ .reg = .rax } },
108859 .{ .type = .usize, .kind = .{ .extern_func = "__fixunsxfdi" } },
108860 .{ .type = .u64, .kind = .{ .ret_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
105680108861 .unused,
105681108862 .unused,
105682108863 .unused,
......@@ -105687,16 +108868,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
105687108868 .dst_temps = .{ .mem, .unused },
105688108869 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
105689108870 .each = .{ .once = &.{
105690 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
105691 .{ .@"0:", ._dqa, .mov, .tmp1x, .memsia(.src0x, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
108871 .{ ._, ._, .mov, .tmp0d, .sia(-8, .dst0, .add_unaligned_size), ._, ._ },
108872 .{ .@"0:", ._dqa, .mov, .tmp1x, .memsi(.src0x, .@"2", .tmp0), ._, ._ },
105692108873 .{ ._, ._dqa, .mov, .tmp2x, .tmp1x, ._, ._ },
105693108874 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
105694 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp4q, ._, ._ },
105695 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
105696 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
108875 .{ ._, ._, .mov, .memi(.dst0q, .tmp0), .tmp4q, ._, ._ },
108876 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
108877 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
105697108878 } },
105698108879 }, .{
105699 .required_features = .{ .@"64bit", .sse, null, null },
108880 .required_cc_abi = .sysv64,
108881 .required_features = .{ .sse, null, null, null },
105700108882 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
105701108883 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any },
105702108884 .patterns = &.{
......@@ -105704,11 +108886,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
105704108886 },
105705108887 .call_frame = .{ .size = 16, .alignment = .@"16" },
105706108888 .extra_temps = .{
105707 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
105708 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
108889 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
108890 .{ .type = .f80, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
105709108891 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
105710 .{ .type = .usize, .kind = .{ .extern_func = "__fixunsxfti" } },
105711 .{ .type = .u64, .kind = .{ .reg = .rax } },
108892 .{ .type = .usize, .kind = .{ .extern_func = "__fixunsxfdi" } },
108893 .{ .type = .u64, .kind = .{ .ret_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
105712108894 .unused,
105713108895 .unused,
105714108896 .unused,
......@@ -105719,16 +108901,48 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
105719108901 .dst_temps = .{ .mem, .unused },
105720108902 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
105721108903 .each = .{ .once = &.{
105722 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
105723 .{ .@"0:", ._ps, .mova, .tmp1x, .memsia(.src0x, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
108904 .{ ._, ._, .mov, .tmp0d, .sia(-8, .dst0, .add_unaligned_size), ._, ._ },
108905 .{ .@"0:", ._ps, .mova, .tmp1x, .memsi(.src0x, .@"2", .tmp0), ._, ._ },
105724108906 .{ ._, ._ps, .mova, .tmp2x, .tmp1x, ._, ._ },
105725108907 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
105726 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp4q, ._, ._ },
105727 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
105728 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
108908 .{ ._, ._, .mov, .memi(.dst0q, .tmp0), .tmp4q, ._, ._ },
108909 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
108910 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
105729108911 } },
105730108912 }, .{
105731 .required_features = .{ .@"64bit", .avx, null, null },
108913 .required_cc_abi = .win64,
108914 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
108915 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any },
108916 .patterns = &.{
108917 .{ .src = .{ .to_mem, .none, .none } },
108918 },
108919 .call_frame = .{ .alignment = .@"16" },
108920 .extra_temps = .{
108921 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
108922 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
108923 .{ .type = .usize, .kind = .{ .extern_func = "__fixunsxfdi" } },
108924 .{ .type = .u64, .kind = .{ .ret_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
108925 .unused,
108926 .unused,
108927 .unused,
108928 .unused,
108929 .unused,
108930 .unused,
108931 .unused,
108932 },
108933 .dst_temps = .{ .mem, .unused },
108934 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
108935 .each = .{ .once = &.{
108936 .{ ._, ._, .mov, .tmp0d, .sia(-8, .dst0, .add_unaligned_size), ._, ._ },
108937 .{ .@"0:", ._, .lea, .tmp1p, .memsi(.src0, .@"2", .tmp0), ._, ._ },
108938 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
108939 .{ ._, ._, .mov, .memi(.dst0q, .tmp0), .tmp3q, ._, ._ },
108940 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
108941 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
108942 } },
108943 }, .{
108944 .required_cc_abi = .sysv64,
108945 .required_features = .{ .avx, null, null, null },
105732108946 .src_constraints = .{ .{ .float = .tbyte }, .any, .any },
105733108947 .dst_constraints = .{ .{ .signed_int = .xword }, .any },
105734108948 .patterns = &.{
......@@ -105736,7 +108950,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
105736108950 },
105737108951 .call_frame = .{ .size = 16, .alignment = .@"16" },
105738108952 .extra_temps = .{
105739 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
108953 .{ .type = .f80, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
105740108954 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
105741108955 .{ .type = .usize, .kind = .{ .extern_func = "__fixxfti" } },
105742108956 .unused,
......@@ -105748,7 +108962,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
105748108962 .unused,
105749108963 .unused,
105750108964 },
105751 .dst_temps = .{ .{ .reg_pair = .{ .rax, .rdx } }, .unused },
108965 .dst_temps = .{ .{ .ret_gpr_pair = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
105752108966 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
105753108967 .each = .{ .once = &.{
105754108968 .{ ._, .v_dqa, .mov, .tmp0x, .src0x, ._, ._ },
......@@ -105756,7 +108970,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
105756108970 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
105757108971 } },
105758108972 }, .{
105759 .required_features = .{ .@"64bit", .avx, null, null },
108973 .required_cc_abi = .sysv64,
108974 .required_features = .{ .avx, null, null, null },
105760108975 .src_constraints = .{ .{ .float = .tbyte }, .any, .any },
105761108976 .dst_constraints = .{ .{ .unsigned_int = .xword }, .any },
105762108977 .patterns = &.{
......@@ -105764,7 +108979,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
105764108979 },
105765108980 .call_frame = .{ .size = 16, .alignment = .@"16" },
105766108981 .extra_temps = .{
105767 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
108982 .{ .type = .f80, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
105768108983 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
105769108984 .{ .type = .usize, .kind = .{ .extern_func = "__fixunsxfti" } },
105770108985 .unused,
......@@ -105776,7 +108991,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
105776108991 .unused,
105777108992 .unused,
105778108993 },
105779 .dst_temps = .{ .{ .reg_pair = .{ .rax, .rdx } }, .unused },
108994 .dst_temps = .{ .{ .ret_gpr_pair = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
105780108995 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
105781108996 .each = .{ .once = &.{
105782108997 .{ ._, .v_dqa, .mov, .tmp0x, .src0x, ._, ._ },
......@@ -105784,7 +108999,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
105784108999 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
105785109000 } },
105786109001 }, .{
105787 .required_features = .{ .@"64bit", .sse2, null, null },
109002 .required_cc_abi = .sysv64,
109003 .required_features = .{ .sse2, null, null, null },
105788109004 .src_constraints = .{ .{ .float = .tbyte }, .any, .any },
105789109005 .dst_constraints = .{ .{ .signed_int = .xword }, .any },
105790109006 .patterns = &.{
......@@ -105792,7 +109008,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
105792109008 },
105793109009 .call_frame = .{ .size = 16, .alignment = .@"16" },
105794109010 .extra_temps = .{
105795 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
109011 .{ .type = .f80, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
105796109012 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
105797109013 .{ .type = .usize, .kind = .{ .extern_func = "__fixxfti" } },
105798109014 .unused,
......@@ -105804,7 +109020,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
105804109020 .unused,
105805109021 .unused,
105806109022 },
105807 .dst_temps = .{ .{ .reg_pair = .{ .rax, .rdx } }, .unused },
109023 .dst_temps = .{ .{ .ret_gpr_pair = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
105808109024 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
105809109025 .each = .{ .once = &.{
105810109026 .{ ._, ._dqa, .mov, .tmp0x, .src0x, ._, ._ },
......@@ -105812,7 +109028,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
105812109028 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
105813109029 } },
105814109030 }, .{
105815 .required_features = .{ .@"64bit", .sse2, null, null },
109031 .required_cc_abi = .sysv64,
109032 .required_features = .{ .sse2, null, null, null },
105816109033 .src_constraints = .{ .{ .float = .tbyte }, .any, .any },
105817109034 .dst_constraints = .{ .{ .unsigned_int = .xword }, .any },
105818109035 .patterns = &.{
......@@ -105820,7 +109037,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
105820109037 },
105821109038 .call_frame = .{ .size = 16, .alignment = .@"16" },
105822109039 .extra_temps = .{
105823 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
109040 .{ .type = .f80, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
105824109041 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
105825109042 .{ .type = .usize, .kind = .{ .extern_func = "__fixunsxfti" } },
105826109043 .unused,
......@@ -105832,7 +109049,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
105832109049 .unused,
105833109050 .unused,
105834109051 },
105835 .dst_temps = .{ .{ .reg_pair = .{ .rax, .rdx } }, .unused },
109052 .dst_temps = .{ .{ .ret_gpr_pair = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
105836109053 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
105837109054 .each = .{ .once = &.{
105838109055 .{ ._, ._dqa, .mov, .tmp0x, .src0x, ._, ._ },
......@@ -105840,7 +109057,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
105840109057 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
105841109058 } },
105842109059 }, .{
105843 .required_features = .{ .@"64bit", .sse, null, null },
109060 .required_cc_abi = .sysv64,
109061 .required_features = .{ .sse, null, null, null },
105844109062 .src_constraints = .{ .{ .float = .tbyte }, .any, .any },
105845109063 .dst_constraints = .{ .{ .signed_int = .xword }, .any },
105846109064 .patterns = &.{
......@@ -105848,7 +109066,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
105848109066 },
105849109067 .call_frame = .{ .size = 16, .alignment = .@"16" },
105850109068 .extra_temps = .{
105851 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
109069 .{ .type = .f80, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
105852109070 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
105853109071 .{ .type = .usize, .kind = .{ .extern_func = "__fixxfti" } },
105854109072 .unused,
......@@ -105860,7 +109078,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
105860109078 .unused,
105861109079 .unused,
105862109080 },
105863 .dst_temps = .{ .{ .reg_pair = .{ .rax, .rdx } }, .unused },
109081 .dst_temps = .{ .{ .ret_gpr_pair = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
105864109082 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
105865109083 .each = .{ .once = &.{
105866109084 .{ ._, ._ps, .mova, .tmp0x, .src0x, ._, ._ },
......@@ -105868,7 +109086,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
105868109086 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
105869109087 } },
105870109088 }, .{
105871 .required_features = .{ .@"64bit", .sse, null, null },
109089 .required_cc_abi = .sysv64,
109090 .required_features = .{ .sse, null, null, null },
105872109091 .src_constraints = .{ .{ .float = .tbyte }, .any, .any },
105873109092 .dst_constraints = .{ .{ .unsigned_int = .xword }, .any },
105874109093 .patterns = &.{
......@@ -105876,7 +109095,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
105876109095 },
105877109096 .call_frame = .{ .size = 16, .alignment = .@"16" },
105878109097 .extra_temps = .{
105879 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
109098 .{ .type = .f80, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
105880109099 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
105881109100 .{ .type = .usize, .kind = .{ .extern_func = "__fixunsxfti" } },
105882109101 .unused,
......@@ -105888,7 +109107,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
105888109107 .unused,
105889109108 .unused,
105890109109 },
105891 .dst_temps = .{ .{ .reg_pair = .{ .rax, .rdx } }, .unused },
109110 .dst_temps = .{ .{ .ret_gpr_pair = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
105892109111 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
105893109112 .each = .{ .once = &.{
105894109113 .{ ._, ._ps, .mova, .tmp0x, .src0x, ._, ._ },
......@@ -105896,7 +109115,62 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
105896109115 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
105897109116 } },
105898109117 }, .{
105899 .required_features = .{ .@"64bit", .avx, null, null },
109118 .required_cc_abi = .win64,
109119 .src_constraints = .{ .{ .float = .tbyte }, .any, .any },
109120 .dst_constraints = .{ .{ .signed_int = .xword }, .any },
109121 .patterns = &.{
109122 .{ .src = .{ .to_mem, .none, .none } },
109123 },
109124 .call_frame = .{ .alignment = .@"16" },
109125 .extra_temps = .{
109126 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
109127 .{ .type = .usize, .kind = .{ .extern_func = "__fixxfti" } },
109128 .unused,
109129 .unused,
109130 .unused,
109131 .unused,
109132 .unused,
109133 .unused,
109134 .unused,
109135 .unused,
109136 .unused,
109137 },
109138 .dst_temps = .{ .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
109139 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
109140 .each = .{ .once = &.{
109141 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
109142 .{ ._, ._, .call, .tmp1d, ._, ._, ._ },
109143 } },
109144 }, .{
109145 .required_cc_abi = .win64,
109146 .src_constraints = .{ .{ .float = .tbyte }, .any, .any },
109147 .dst_constraints = .{ .{ .unsigned_int = .xword }, .any },
109148 .patterns = &.{
109149 .{ .src = .{ .to_mem, .none, .none } },
109150 },
109151 .call_frame = .{ .alignment = .@"16" },
109152 .extra_temps = .{
109153 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
109154 .{ .type = .usize, .kind = .{ .extern_func = "__fixunsxfti" } },
109155 .unused,
109156 .unused,
109157 .unused,
109158 .unused,
109159 .unused,
109160 .unused,
109161 .unused,
109162 .unused,
109163 .unused,
109164 },
109165 .dst_temps = .{ .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
109166 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
109167 .each = .{ .once = &.{
109168 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
109169 .{ ._, ._, .call, .tmp1d, ._, ._, ._ },
109170 } },
109171 }, .{
109172 .required_cc_abi = .sysv64,
109173 .required_features = .{ .avx, null, null, null },
105900109174 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
105901109175 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any },
105902109176 .patterns = &.{
......@@ -105904,12 +109178,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
105904109178 },
105905109179 .call_frame = .{ .size = 16, .alignment = .@"16" },
105906109180 .extra_temps = .{
105907 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
105908 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
109181 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
109182 .{ .type = .f80, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
105909109183 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
105910109184 .{ .type = .usize, .kind = .{ .extern_func = "__fixxfti" } },
105911 .{ .type = .u64, .kind = .{ .reg = .rax } },
105912 .{ .type = .i64, .kind = .{ .reg = .rdx } },
109185 .{ .type = .i128, .kind = .{ .ret_gpr_pair = .{ .cc = .ccc, .after = 0, .at = 0 } } },
109186 .unused,
105913109187 .unused,
105914109188 .unused,
105915109189 .unused,
......@@ -105919,17 +109193,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
105919109193 .dst_temps = .{ .mem, .unused },
105920109194 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
105921109195 .each = .{ .once = &.{
105922 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
105923 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
109196 .{ ._, ._, .mov, .tmp0d, .sia(-16, .src0, .add_unaligned_size), ._, ._ },
109197 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memi(.src0x, .tmp0), ._, ._ },
105924109198 .{ ._, .v_dqa, .mov, .tmp2x, .tmp1x, ._, ._ },
105925109199 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
105926 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp4q, ._, ._ },
105927 .{ ._, ._, .mov, .memiad(.dst0q, .tmp0, .add_unaligned_size, 8), .tmp5q, ._, ._ },
105928 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
105929 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
109200 .{ ._, ._, .mov, .memi(.dst0q, .tmp0), .tmp4q0, ._, ._ },
109201 .{ ._, ._, .mov, .memid(.dst0q, .tmp0, 8), .tmp4q1, ._, ._ },
109202 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
109203 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
105930109204 } },
105931109205 }, .{
105932 .required_features = .{ .@"64bit", .avx, null, null },
109206 .required_cc_abi = .sysv64,
109207 .required_features = .{ .avx, null, null, null },
105933109208 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
105934109209 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any },
105935109210 .patterns = &.{
......@@ -105937,12 +109212,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
105937109212 },
105938109213 .call_frame = .{ .size = 16, .alignment = .@"16" },
105939109214 .extra_temps = .{
105940 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
105941 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
109215 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
109216 .{ .type = .f80, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
105942109217 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
105943109218 .{ .type = .usize, .kind = .{ .extern_func = "__fixunsxfti" } },
105944 .{ .type = .u64, .kind = .{ .reg = .rax } },
105945 .{ .type = .u64, .kind = .{ .reg = .rdx } },
109219 .{ .type = .u128, .kind = .{ .ret_gpr_pair = .{ .cc = .ccc, .after = 0, .at = 0 } } },
109220 .unused,
105946109221 .unused,
105947109222 .unused,
105948109223 .unused,
......@@ -105952,17 +109227,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
105952109227 .dst_temps = .{ .mem, .unused },
105953109228 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
105954109229 .each = .{ .once = &.{
105955 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
105956 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
109230 .{ ._, ._, .mov, .tmp0d, .sia(-16, .src0, .add_unaligned_size), ._, ._ },
109231 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memi(.src0x, .tmp0), ._, ._ },
105957109232 .{ ._, .v_dqa, .mov, .tmp2x, .tmp1x, ._, ._ },
105958109233 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
105959 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp4q, ._, ._ },
105960 .{ ._, ._, .mov, .memiad(.dst0q, .tmp0, .add_unaligned_size, 8), .tmp5q, ._, ._ },
105961 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
105962 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
109234 .{ ._, ._, .mov, .memi(.dst0q, .tmp0), .tmp4q0, ._, ._ },
109235 .{ ._, ._, .mov, .memid(.dst0q, .tmp0, 8), .tmp4q1, ._, ._ },
109236 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
109237 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
105963109238 } },
105964109239 }, .{
105965 .required_features = .{ .@"64bit", .sse2, null, null },
109240 .required_cc_abi = .sysv64,
109241 .required_features = .{ .sse2, null, null, null },
105966109242 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
105967109243 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any },
105968109244 .patterns = &.{
......@@ -105970,12 +109246,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
105970109246 },
105971109247 .call_frame = .{ .size = 16, .alignment = .@"16" },
105972109248 .extra_temps = .{
105973 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
105974 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
109249 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
109250 .{ .type = .f80, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
105975109251 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
105976109252 .{ .type = .usize, .kind = .{ .extern_func = "__fixxfti" } },
105977 .{ .type = .u64, .kind = .{ .reg = .rax } },
105978 .{ .type = .i64, .kind = .{ .reg = .rdx } },
109253 .{ .type = .i128, .kind = .{ .ret_gpr_pair = .{ .cc = .ccc, .after = 0, .at = 0 } } },
109254 .unused,
105979109255 .unused,
105980109256 .unused,
105981109257 .unused,
......@@ -105985,17 +109261,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
105985109261 .dst_temps = .{ .mem, .unused },
105986109262 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
105987109263 .each = .{ .once = &.{
105988 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
105989 .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
109264 .{ ._, ._, .mov, .tmp0d, .sia(-16, .src0, .add_unaligned_size), ._, ._ },
109265 .{ .@"0:", ._dqa, .mov, .tmp1x, .memi(.src0x, .tmp0), ._, ._ },
105990109266 .{ ._, ._dqa, .mov, .tmp2x, .tmp1x, ._, ._ },
105991109267 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
105992 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp4q, ._, ._ },
105993 .{ ._, ._, .mov, .memiad(.dst0q, .tmp0, .add_unaligned_size, 8), .tmp5q, ._, ._ },
105994 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
105995 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
109268 .{ ._, ._, .mov, .memi(.dst0q, .tmp0), .tmp4q0, ._, ._ },
109269 .{ ._, ._, .mov, .memid(.dst0q, .tmp0, 8), .tmp4q1, ._, ._ },
109270 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
109271 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
105996109272 } },
105997109273 }, .{
105998 .required_features = .{ .@"64bit", .sse2, null, null },
109274 .required_cc_abi = .sysv64,
109275 .required_features = .{ .sse2, null, null, null },
105999109276 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
106000109277 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any },
106001109278 .patterns = &.{
......@@ -106003,12 +109280,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106003109280 },
106004109281 .call_frame = .{ .size = 16, .alignment = .@"16" },
106005109282 .extra_temps = .{
106006 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
106007 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
109283 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
109284 .{ .type = .f80, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
106008109285 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
106009109286 .{ .type = .usize, .kind = .{ .extern_func = "__fixunsxfti" } },
106010 .{ .type = .u64, .kind = .{ .reg = .rax } },
106011 .{ .type = .u64, .kind = .{ .reg = .rdx } },
109287 .{ .type = .u128, .kind = .{ .ret_gpr_pair = .{ .cc = .ccc, .after = 0, .at = 0 } } },
109288 .unused,
106012109289 .unused,
106013109290 .unused,
106014109291 .unused,
......@@ -106018,17 +109295,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106018109295 .dst_temps = .{ .mem, .unused },
106019109296 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
106020109297 .each = .{ .once = &.{
106021 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
106022 .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
109298 .{ ._, ._, .mov, .tmp0d, .sia(-16, .src0, .add_unaligned_size), ._, ._ },
109299 .{ .@"0:", ._dqa, .mov, .tmp1x, .memi(.src0x, .tmp0), ._, ._ },
106023109300 .{ ._, ._dqa, .mov, .tmp2x, .tmp1x, ._, ._ },
106024109301 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
106025 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp4q, ._, ._ },
106026 .{ ._, ._, .mov, .memiad(.dst0q, .tmp0, .add_unaligned_size, 8), .tmp5q, ._, ._ },
106027 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
106028 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
109302 .{ ._, ._, .mov, .memi(.dst0q, .tmp0), .tmp4q0, ._, ._ },
109303 .{ ._, ._, .mov, .memid(.dst0q, .tmp0, 8), .tmp4q1, ._, ._ },
109304 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
109305 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
106029109306 } },
106030109307 }, .{
106031 .required_features = .{ .@"64bit", .sse, null, null },
109308 .required_cc_abi = .sysv64,
109309 .required_features = .{ .sse, null, null, null },
106032109310 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
106033109311 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any },
106034109312 .patterns = &.{
......@@ -106036,12 +109314,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106036109314 },
106037109315 .call_frame = .{ .size = 16, .alignment = .@"16" },
106038109316 .extra_temps = .{
106039 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
106040 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
109317 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
109318 .{ .type = .f80, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
106041109319 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
106042109320 .{ .type = .usize, .kind = .{ .extern_func = "__fixxfti" } },
106043 .{ .type = .u64, .kind = .{ .reg = .rax } },
106044 .{ .type = .i64, .kind = .{ .reg = .rdx } },
109321 .{ .type = .i128, .kind = .{ .ret_gpr_pair = .{ .cc = .ccc, .after = 0, .at = 0 } } },
109322 .unused,
106045109323 .unused,
106046109324 .unused,
106047109325 .unused,
......@@ -106051,17 +109329,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106051109329 .dst_temps = .{ .mem, .unused },
106052109330 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
106053109331 .each = .{ .once = &.{
106054 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
106055 .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
109332 .{ ._, ._, .mov, .tmp0d, .sia(-16, .src0, .add_unaligned_size), ._, ._ },
109333 .{ .@"0:", ._ps, .mova, .tmp1x, .memi(.src0x, .tmp0), ._, ._ },
106056109334 .{ ._, ._ps, .mova, .tmp2x, .tmp1x, ._, ._ },
106057109335 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
106058 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp4q, ._, ._ },
106059 .{ ._, ._, .mov, .memiad(.dst0q, .tmp0, .add_unaligned_size, 8), .tmp5q, ._, ._ },
106060 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
106061 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
109336 .{ ._, ._, .mov, .memi(.dst0q, .tmp0), .tmp4q0, ._, ._ },
109337 .{ ._, ._, .mov, .memid(.dst0q, .tmp0, 8), .tmp4q1, ._, ._ },
109338 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
109339 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
106062109340 } },
106063109341 }, .{
106064 .required_features = .{ .@"64bit", .sse, null, null },
109342 .required_cc_abi = .sysv64,
109343 .required_features = .{ .sse, null, null, null },
106065109344 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
106066109345 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any },
106067109346 .patterns = &.{
......@@ -106069,12 +109348,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106069109348 },
106070109349 .call_frame = .{ .size = 16, .alignment = .@"16" },
106071109350 .extra_temps = .{
106072 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
106073 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
109351 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
109352 .{ .type = .f80, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
106074109353 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
106075109354 .{ .type = .usize, .kind = .{ .extern_func = "__fixunsxfti" } },
106076 .{ .type = .u64, .kind = .{ .reg = .rax } },
106077 .{ .type = .u64, .kind = .{ .reg = .rdx } },
109355 .{ .type = .u128, .kind = .{ .ret_gpr_pair = .{ .cc = .ccc, .after = 0, .at = 0 } } },
109356 .unused,
106078109357 .unused,
106079109358 .unused,
106080109359 .unused,
......@@ -106084,17 +109363,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106084109363 .dst_temps = .{ .mem, .unused },
106085109364 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
106086109365 .each = .{ .once = &.{
106087 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
106088 .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
109366 .{ ._, ._, .mov, .tmp0d, .sia(-16, .src0, .add_unaligned_size), ._, ._ },
109367 .{ .@"0:", ._ps, .mova, .tmp1x, .memi(.src0x, .tmp0), ._, ._ },
106089109368 .{ ._, ._ps, .mova, .tmp2x, .tmp1x, ._, ._ },
106090109369 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
106091 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp4q, ._, ._ },
106092 .{ ._, ._, .mov, .memiad(.dst0q, .tmp0, .add_unaligned_size, 8), .tmp5q, ._, ._ },
106093 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
106094 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
109370 .{ ._, ._, .mov, .memi(.dst0q, .tmp0), .tmp4q0, ._, ._ },
109371 .{ ._, ._, .mov, .memid(.dst0q, .tmp0, 8), .tmp4q1, ._, ._ },
109372 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
109373 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
106095109374 } },
106096109375 }, .{
106097 .required_features = .{ .@"64bit", .avx, null, null },
109376 .required_cc_abi = .sysv64,
109377 .required_features = .{ .avx, null, null, null },
106098109378 .src_constraints = .{ .{ .float = .tbyte }, .any, .any },
106099109379 .dst_constraints = .{ .{ .remainder_signed_int = .{ .of = .dword, .is = .dword } }, .any },
106100109380 .patterns = &.{
......@@ -106102,9 +109382,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106102109382 },
106103109383 .call_frame = .{ .size = 16, .alignment = .@"16" },
106104109384 .extra_temps = .{
106105 .{ .type = .usize, .kind = .{ .reg = .rdi } },
106106 .{ .type = .usize, .kind = .{ .reg = .rsi } },
106107 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
109385 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
109386 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
109387 .{ .type = .f80, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 2 } } },
106108109388 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
106109109389 .{ .type = .usize, .kind = .{ .extern_func = "__fixxfei" } },
106110109390 .unused,
......@@ -106124,7 +109404,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106124109404 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
106125109405 } },
106126109406 }, .{
106127 .required_features = .{ .@"64bit", .avx, null, null },
109407 .required_cc_abi = .sysv64,
109408 .required_features = .{ .avx, null, null, null },
106128109409 .src_constraints = .{ .{ .float = .tbyte }, .any, .any },
106129109410 .dst_constraints = .{ .{ .remainder_unsigned_int = .{ .of = .dword, .is = .dword } }, .any },
106130109411 .patterns = &.{
......@@ -106132,9 +109413,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106132109413 },
106133109414 .call_frame = .{ .size = 16, .alignment = .@"16" },
106134109415 .extra_temps = .{
106135 .{ .type = .usize, .kind = .{ .reg = .rdi } },
106136 .{ .type = .usize, .kind = .{ .reg = .rsi } },
106137 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
109416 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
109417 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
109418 .{ .type = .f80, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 2 } } },
106138109419 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
106139109420 .{ .type = .usize, .kind = .{ .extern_func = "__fixunsxfei" } },
106140109421 .unused,
......@@ -106154,7 +109435,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106154109435 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
106155109436 } },
106156109437 }, .{
106157 .required_features = .{ .@"64bit", .sse2, null, null },
109438 .required_cc_abi = .sysv64,
109439 .required_features = .{ .sse2, null, null, null },
106158109440 .src_constraints = .{ .{ .float = .tbyte }, .any, .any },
106159109441 .dst_constraints = .{ .{ .remainder_signed_int = .{ .of = .dword, .is = .dword } }, .any },
106160109442 .patterns = &.{
......@@ -106162,9 +109444,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106162109444 },
106163109445 .call_frame = .{ .size = 16, .alignment = .@"16" },
106164109446 .extra_temps = .{
106165 .{ .type = .usize, .kind = .{ .reg = .rdi } },
106166 .{ .type = .usize, .kind = .{ .reg = .rsi } },
106167 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
109447 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
109448 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
109449 .{ .type = .f80, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 2 } } },
106168109450 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
106169109451 .{ .type = .usize, .kind = .{ .extern_func = "__fixxfei" } },
106170109452 .unused,
......@@ -106184,7 +109466,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106184109466 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
106185109467 } },
106186109468 }, .{
106187 .required_features = .{ .@"64bit", .sse2, null, null },
109469 .required_cc_abi = .sysv64,
109470 .required_features = .{ .sse2, null, null, null },
106188109471 .src_constraints = .{ .{ .float = .tbyte }, .any, .any },
106189109472 .dst_constraints = .{ .{ .remainder_unsigned_int = .{ .of = .dword, .is = .dword } }, .any },
106190109473 .patterns = &.{
......@@ -106192,9 +109475,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106192109475 },
106193109476 .call_frame = .{ .size = 16, .alignment = .@"16" },
106194109477 .extra_temps = .{
106195 .{ .type = .usize, .kind = .{ .reg = .rdi } },
106196 .{ .type = .usize, .kind = .{ .reg = .rsi } },
106197 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
109478 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
109479 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
109480 .{ .type = .f80, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 2 } } },
106198109481 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
106199109482 .{ .type = .usize, .kind = .{ .extern_func = "__fixunsxfei" } },
106200109483 .unused,
......@@ -106214,7 +109497,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106214109497 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
106215109498 } },
106216109499 }, .{
106217 .required_features = .{ .@"64bit", .sse, null, null },
109500 .required_cc_abi = .sysv64,
109501 .required_features = .{ .sse, null, null, null },
106218109502 .src_constraints = .{ .{ .float = .tbyte }, .any, .any },
106219109503 .dst_constraints = .{ .{ .remainder_signed_int = .{ .of = .dword, .is = .dword } }, .any },
106220109504 .patterns = &.{
......@@ -106222,9 +109506,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106222109506 },
106223109507 .call_frame = .{ .size = 16, .alignment = .@"16" },
106224109508 .extra_temps = .{
106225 .{ .type = .usize, .kind = .{ .reg = .rdi } },
106226 .{ .type = .usize, .kind = .{ .reg = .rsi } },
106227 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
109509 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
109510 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
109511 .{ .type = .f80, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 2 } } },
106228109512 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
106229109513 .{ .type = .usize, .kind = .{ .extern_func = "__fixxfei" } },
106230109514 .unused,
......@@ -106244,7 +109528,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106244109528 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
106245109529 } },
106246109530 }, .{
106247 .required_features = .{ .@"64bit", .sse, null, null },
109531 .required_cc_abi = .sysv64,
109532 .required_features = .{ .sse, null, null, null },
106248109533 .src_constraints = .{ .{ .float = .tbyte }, .any, .any },
106249109534 .dst_constraints = .{ .{ .remainder_unsigned_int = .{ .of = .dword, .is = .dword } }, .any },
106250109535 .patterns = &.{
......@@ -106252,9 +109537,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106252109537 },
106253109538 .call_frame = .{ .size = 16, .alignment = .@"16" },
106254109539 .extra_temps = .{
106255 .{ .type = .usize, .kind = .{ .reg = .rdi } },
106256 .{ .type = .usize, .kind = .{ .reg = .rsi } },
106257 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
109540 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
109541 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
109542 .{ .type = .f80, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 2 } } },
106258109543 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
106259109544 .{ .type = .usize, .kind = .{ .extern_func = "__fixunsxfei" } },
106260109545 .unused,
......@@ -106274,7 +109559,66 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106274109559 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
106275109560 } },
106276109561 }, .{
106277 .required_features = .{ .@"64bit", .avx, null, null },
109562 .required_cc_abi = .win64,
109563 .src_constraints = .{ .{ .float = .tbyte }, .any, .any },
109564 .dst_constraints = .{ .{ .remainder_signed_int = .{ .of = .dword, .is = .dword } }, .any },
109565 .patterns = &.{
109566 .{ .src = .{ .to_mem, .none, .none } },
109567 },
109568 .call_frame = .{ .alignment = .@"16" },
109569 .extra_temps = .{
109570 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
109571 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
109572 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 2, .at = 2 } } },
109573 .{ .type = .usize, .kind = .{ .extern_func = "__fixxfei" } },
109574 .unused,
109575 .unused,
109576 .unused,
109577 .unused,
109578 .unused,
109579 .unused,
109580 .unused,
109581 },
109582 .dst_temps = .{ .mem, .unused },
109583 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
109584 .each = .{ .once = &.{
109585 .{ ._, ._, .lea, .tmp0p, .mem(.dst0), ._, ._ },
109586 .{ ._, ._, .mov, .tmp1d, .sa(.dst0, .add_bit_size), ._, ._ },
109587 .{ ._, ._, .lea, .tmp2p, .mem(.src0), ._, ._ },
109588 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
109589 } },
109590 }, .{
109591 .required_cc_abi = .win64,
109592 .src_constraints = .{ .{ .float = .tbyte }, .any, .any },
109593 .dst_constraints = .{ .{ .remainder_unsigned_int = .{ .of = .dword, .is = .dword } }, .any },
109594 .patterns = &.{
109595 .{ .src = .{ .to_mem, .none, .none } },
109596 },
109597 .call_frame = .{ .alignment = .@"16" },
109598 .extra_temps = .{
109599 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
109600 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
109601 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 2, .at = 2 } } },
109602 .{ .type = .usize, .kind = .{ .extern_func = "__fixunsxfei" } },
109603 .unused,
109604 .unused,
109605 .unused,
109606 .unused,
109607 .unused,
109608 .unused,
109609 .unused,
109610 },
109611 .dst_temps = .{ .mem, .unused },
109612 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
109613 .each = .{ .once = &.{
109614 .{ ._, ._, .lea, .tmp0p, .mem(.dst0), ._, ._ },
109615 .{ ._, ._, .mov, .tmp1d, .sa(.dst0, .add_bit_size), ._, ._ },
109616 .{ ._, ._, .lea, .tmp2p, .mem(.src0), ._, ._ },
109617 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
109618 } },
109619 }, .{
109620 .required_cc_abi = .sysv64,
109621 .required_features = .{ .avx, null, null, null },
106278109622 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
106279109623 .dst_constraints = .{ .{ .scalar_remainder_signed_int = .{ .of = .dword, .is = .dword } }, .any },
106280109624 .patterns = &.{
......@@ -106282,11 +109626,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106282109626 },
106283109627 .call_frame = .{ .size = 16, .alignment = .@"16" },
106284109628 .extra_temps = .{
106285 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
109629 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
106286109630 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
106287 .{ .type = .usize, .kind = .{ .reg = .rdi } },
106288 .{ .type = .usize, .kind = .{ .reg = .rsi } },
106289 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
109631 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
109632 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
109633 .{ .type = .f80, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 2 } } },
106290109634 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
106291109635 .{ .type = .usize, .kind = .{ .extern_func = "__fixxfei" } },
106292109636 .unused,
......@@ -106297,19 +109641,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106297109641 .dst_temps = .{ .mem, .unused },
106298109642 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
106299109643 .each = .{ .once = &.{
106300 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
106301 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
106302 .{ .@"0:", .v_dqa, .mov, .tmp4x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
109644 .{ ._, ._, .mov, .tmp0d, .sia(-16, .src0, .add_unaligned_size), ._, ._ },
109645 .{ ._, ._, .lea, .tmp1p, .mema(.dst0, .add_unaligned_size_sub_elem_size), ._, ._ },
109646 .{ .@"0:", .v_dqa, .mov, .tmp4x, .memi(.src0x, .tmp0), ._, ._ },
106303109647 .{ ._, ._, .mov, .tmp2p, .tmp1p, ._, ._ },
106304109648 .{ ._, ._, .mov, .tmp3d, .sa(.dst0, .add_bit_size), ._, ._ },
106305109649 .{ ._, .v_dqa, .mov, .tmp5x, .tmp4x, ._, ._ },
106306109650 .{ ._, ._, .call, .tmp6d, ._, ._, ._ },
106307 .{ ._, ._, .lea, .tmp1p, .leaa(.tmp1, .add_dst0_elem_size), ._, ._ },
106308 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
106309 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
109651 .{ ._, ._, .lea, .tmp1p, .leaa(.tmp1, .sub_dst0_elem_size), ._, ._ },
109652 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
109653 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
106310109654 } },
106311109655 }, .{
106312 .required_features = .{ .@"64bit", .avx, null, null },
109656 .required_cc_abi = .sysv64,
109657 .required_features = .{ .avx, null, null, null },
106313109658 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
106314109659 .dst_constraints = .{ .{ .scalar_remainder_unsigned_int = .{ .of = .dword, .is = .dword } }, .any },
106315109660 .patterns = &.{
......@@ -106317,11 +109662,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106317109662 },
106318109663 .call_frame = .{ .size = 16, .alignment = .@"16" },
106319109664 .extra_temps = .{
106320 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
109665 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
106321109666 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
106322 .{ .type = .usize, .kind = .{ .reg = .rdi } },
106323 .{ .type = .usize, .kind = .{ .reg = .rsi } },
106324 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
109667 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
109668 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
109669 .{ .type = .f80, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 2 } } },
106325109670 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
106326109671 .{ .type = .usize, .kind = .{ .extern_func = "__fixunsxfei" } },
106327109672 .unused,
......@@ -106332,19 +109677,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106332109677 .dst_temps = .{ .mem, .unused },
106333109678 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
106334109679 .each = .{ .once = &.{
106335 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
106336 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
106337 .{ .@"0:", .v_dqa, .mov, .tmp4x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
109680 .{ ._, ._, .mov, .tmp0d, .sia(-16, .src0, .add_unaligned_size), ._, ._ },
109681 .{ ._, ._, .lea, .tmp1p, .mema(.dst0, .add_unaligned_size_sub_elem_size), ._, ._ },
109682 .{ .@"0:", .v_dqa, .mov, .tmp4x, .memi(.src0x, .tmp0), ._, ._ },
106338109683 .{ ._, ._, .mov, .tmp2p, .tmp1p, ._, ._ },
106339109684 .{ ._, ._, .mov, .tmp3d, .sa(.dst0, .add_bit_size), ._, ._ },
106340109685 .{ ._, .v_dqa, .mov, .tmp5x, .tmp4x, ._, ._ },
106341109686 .{ ._, ._, .call, .tmp6d, ._, ._, ._ },
106342 .{ ._, ._, .lea, .tmp1p, .leaa(.tmp1, .add_dst0_elem_size), ._, ._ },
106343 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
106344 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
109687 .{ ._, ._, .lea, .tmp1p, .leaa(.tmp1, .sub_dst0_elem_size), ._, ._ },
109688 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
109689 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
106345109690 } },
106346109691 }, .{
106347 .required_features = .{ .@"64bit", .sse2, null, null },
109692 .required_cc_abi = .sysv64,
109693 .required_features = .{ .sse2, null, null, null },
106348109694 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
106349109695 .dst_constraints = .{ .{ .scalar_remainder_signed_int = .{ .of = .dword, .is = .dword } }, .any },
106350109696 .patterns = &.{
......@@ -106352,11 +109698,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106352109698 },
106353109699 .call_frame = .{ .size = 16, .alignment = .@"16" },
106354109700 .extra_temps = .{
106355 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
109701 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
106356109702 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
106357 .{ .type = .usize, .kind = .{ .reg = .rdi } },
106358 .{ .type = .usize, .kind = .{ .reg = .rsi } },
106359 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
109703 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
109704 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
109705 .{ .type = .f80, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 2 } } },
106360109706 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
106361109707 .{ .type = .usize, .kind = .{ .extern_func = "__fixxfei" } },
106362109708 .unused,
......@@ -106367,19 +109713,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106367109713 .dst_temps = .{ .mem, .unused },
106368109714 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
106369109715 .each = .{ .once = &.{
106370 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
106371 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
106372 .{ .@"0:", ._dqa, .mov, .tmp4x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
109716 .{ ._, ._, .mov, .tmp0d, .sia(-16, .src0, .add_unaligned_size), ._, ._ },
109717 .{ ._, ._, .lea, .tmp1p, .mema(.dst0, .add_unaligned_size_sub_elem_size), ._, ._ },
109718 .{ .@"0:", ._dqa, .mov, .tmp4x, .memi(.src0x, .tmp0), ._, ._ },
106373109719 .{ ._, ._, .mov, .tmp2p, .tmp1p, ._, ._ },
106374109720 .{ ._, ._, .mov, .tmp3d, .sa(.dst0, .add_bit_size), ._, ._ },
106375109721 .{ ._, ._dqa, .mov, .tmp5x, .tmp4x, ._, ._ },
106376109722 .{ ._, ._, .call, .tmp6d, ._, ._, ._ },
106377 .{ ._, ._, .lea, .tmp1p, .leaa(.tmp1, .add_dst0_elem_size), ._, ._ },
106378 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
106379 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
109723 .{ ._, ._, .lea, .tmp1p, .leaa(.tmp1, .sub_dst0_elem_size), ._, ._ },
109724 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
109725 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
106380109726 } },
106381109727 }, .{
106382 .required_features = .{ .@"64bit", .sse2, null, null },
109728 .required_cc_abi = .sysv64,
109729 .required_features = .{ .sse2, null, null, null },
106383109730 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
106384109731 .dst_constraints = .{ .{ .scalar_remainder_unsigned_int = .{ .of = .dword, .is = .dword } }, .any },
106385109732 .patterns = &.{
......@@ -106387,11 +109734,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106387109734 },
106388109735 .call_frame = .{ .size = 16, .alignment = .@"16" },
106389109736 .extra_temps = .{
106390 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
109737 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
106391109738 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
106392 .{ .type = .usize, .kind = .{ .reg = .rdi } },
106393 .{ .type = .usize, .kind = .{ .reg = .rsi } },
106394 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
109739 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
109740 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
109741 .{ .type = .f80, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 2 } } },
106395109742 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
106396109743 .{ .type = .usize, .kind = .{ .extern_func = "__fixunsxfei" } },
106397109744 .unused,
......@@ -106402,19 +109749,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106402109749 .dst_temps = .{ .mem, .unused },
106403109750 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
106404109751 .each = .{ .once = &.{
106405 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
106406 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
106407 .{ .@"0:", ._dqa, .mov, .tmp4x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
109752 .{ ._, ._, .mov, .tmp0d, .sia(-16, .src0, .add_unaligned_size), ._, ._ },
109753 .{ ._, ._, .lea, .tmp1p, .mema(.dst0, .add_unaligned_size_sub_elem_size), ._, ._ },
109754 .{ .@"0:", ._dqa, .mov, .tmp4x, .memi(.src0x, .tmp0), ._, ._ },
106408109755 .{ ._, ._, .mov, .tmp2p, .tmp1p, ._, ._ },
106409109756 .{ ._, ._, .mov, .tmp3d, .sa(.dst0, .add_bit_size), ._, ._ },
106410109757 .{ ._, ._dqa, .mov, .tmp5x, .tmp4x, ._, ._ },
106411109758 .{ ._, ._, .call, .tmp6d, ._, ._, ._ },
106412 .{ ._, ._, .lea, .tmp1p, .leaa(.tmp1, .add_dst0_elem_size), ._, ._ },
106413 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
106414 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
109759 .{ ._, ._, .lea, .tmp1p, .leaa(.tmp1, .sub_dst0_elem_size), ._, ._ },
109760 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
109761 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
106415109762 } },
106416109763 }, .{
106417 .required_features = .{ .@"64bit", .sse, null, null },
109764 .required_cc_abi = .sysv64,
109765 .required_features = .{ .sse, null, null, null },
106418109766 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
106419109767 .dst_constraints = .{ .{ .scalar_remainder_signed_int = .{ .of = .dword, .is = .dword } }, .any },
106420109768 .patterns = &.{
......@@ -106422,11 +109770,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106422109770 },
106423109771 .call_frame = .{ .size = 16, .alignment = .@"16" },
106424109772 .extra_temps = .{
106425 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
109773 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
106426109774 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
106427 .{ .type = .usize, .kind = .{ .reg = .rdi } },
106428 .{ .type = .usize, .kind = .{ .reg = .rsi } },
106429 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
109775 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
109776 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
109777 .{ .type = .f80, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 2 } } },
106430109778 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
106431109779 .{ .type = .usize, .kind = .{ .extern_func = "__fixxfei" } },
106432109780 .unused,
......@@ -106437,19 +109785,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106437109785 .dst_temps = .{ .mem, .unused },
106438109786 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
106439109787 .each = .{ .once = &.{
106440 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
106441 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
106442 .{ .@"0:", ._ps, .mova, .tmp4x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
109788 .{ ._, ._, .mov, .tmp0d, .sia(-16, .src0, .add_unaligned_size), ._, ._ },
109789 .{ ._, ._, .lea, .tmp1p, .mema(.dst0, .add_unaligned_size_sub_elem_size), ._, ._ },
109790 .{ .@"0:", ._ps, .mova, .tmp4x, .memi(.src0x, .tmp0), ._, ._ },
106443109791 .{ ._, ._, .mov, .tmp2p, .tmp1p, ._, ._ },
106444109792 .{ ._, ._, .mov, .tmp3d, .sa(.dst0, .add_bit_size), ._, ._ },
106445109793 .{ ._, ._ps, .mova, .tmp5x, .tmp4x, ._, ._ },
106446109794 .{ ._, ._, .call, .tmp6d, ._, ._, ._ },
106447 .{ ._, ._, .lea, .tmp1p, .leaa(.tmp1, .add_dst0_elem_size), ._, ._ },
106448 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
106449 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
109795 .{ ._, ._, .lea, .tmp1p, .leaa(.tmp1, .sub_dst0_elem_size), ._, ._ },
109796 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
109797 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
106450109798 } },
106451109799 }, .{
106452 .required_features = .{ .@"64bit", .sse, null, null },
109800 .required_cc_abi = .sysv64,
109801 .required_features = .{ .sse, null, null, null },
106453109802 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
106454109803 .dst_constraints = .{ .{ .scalar_remainder_unsigned_int = .{ .of = .dword, .is = .dword } }, .any },
106455109804 .patterns = &.{
......@@ -106457,11 +109806,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106457109806 },
106458109807 .call_frame = .{ .size = 16, .alignment = .@"16" },
106459109808 .extra_temps = .{
106460 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
109809 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
106461109810 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
106462 .{ .type = .usize, .kind = .{ .reg = .rdi } },
106463 .{ .type = .usize, .kind = .{ .reg = .rsi } },
106464 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
109811 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
109812 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
109813 .{ .type = .f80, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 2 } } },
106465109814 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
106466109815 .{ .type = .usize, .kind = .{ .extern_func = "__fixunsxfei" } },
106467109816 .unused,
......@@ -106472,16 +109821,84 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106472109821 .dst_temps = .{ .mem, .unused },
106473109822 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
106474109823 .each = .{ .once = &.{
106475 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
106476 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
106477 .{ .@"0:", ._ps, .mova, .tmp4x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
109824 .{ ._, ._, .mov, .tmp0d, .sia(-16, .src0, .add_unaligned_size), ._, ._ },
109825 .{ ._, ._, .lea, .tmp1p, .mema(.dst0, .add_unaligned_size_sub_elem_size), ._, ._ },
109826 .{ .@"0:", ._ps, .mova, .tmp4x, .memi(.src0x, .tmp0), ._, ._ },
106478109827 .{ ._, ._, .mov, .tmp2p, .tmp1p, ._, ._ },
106479109828 .{ ._, ._, .mov, .tmp3d, .sa(.dst0, .add_bit_size), ._, ._ },
106480109829 .{ ._, ._ps, .mova, .tmp5x, .tmp4x, ._, ._ },
106481109830 .{ ._, ._, .call, .tmp6d, ._, ._, ._ },
106482 .{ ._, ._, .lea, .tmp1p, .leaa(.tmp1, .add_dst0_elem_size), ._, ._ },
106483 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
106484 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
109831 .{ ._, ._, .lea, .tmp1p, .leaa(.tmp1, .sub_dst0_elem_size), ._, ._ },
109832 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
109833 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
109834 } },
109835 }, .{
109836 .required_cc_abi = .win64,
109837 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
109838 .dst_constraints = .{ .{ .scalar_remainder_signed_int = .{ .of = .dword, .is = .dword } }, .any },
109839 .patterns = &.{
109840 .{ .src = .{ .to_mem, .none, .none } },
109841 },
109842 .call_frame = .{ .alignment = .@"16" },
109843 .extra_temps = .{
109844 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
109845 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
109846 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
109847 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
109848 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 2, .at = 2 } } },
109849 .{ .type = .usize, .kind = .{ .extern_func = "__fixxfei" } },
109850 .unused,
109851 .unused,
109852 .unused,
109853 .unused,
109854 .unused,
109855 },
109856 .dst_temps = .{ .mem, .unused },
109857 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
109858 .each = .{ .once = &.{
109859 .{ ._, ._, .mov, .tmp0d, .sia(-16, .src0, .add_unaligned_size), ._, ._ },
109860 .{ ._, ._, .lea, .tmp1p, .mema(.dst0, .add_unaligned_size_sub_elem_size), ._, ._ },
109861 .{ .@"0:", ._, .mov, .tmp2p, .tmp1p, ._, ._ },
109862 .{ ._, ._, .mov, .tmp3d, .sa(.dst0, .add_bit_size), ._, ._ },
109863 .{ ._, ._, .lea, .tmp4p, .memi(.src0, .tmp0), ._, ._ },
109864 .{ ._, ._, .call, .tmp5d, ._, ._, ._ },
109865 .{ ._, ._, .lea, .tmp1p, .leaa(.tmp1, .sub_dst0_elem_size), ._, ._ },
109866 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
109867 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
109868 } },
109869 }, .{
109870 .required_cc_abi = .win64,
109871 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
109872 .dst_constraints = .{ .{ .scalar_remainder_unsigned_int = .{ .of = .dword, .is = .dword } }, .any },
109873 .patterns = &.{
109874 .{ .src = .{ .to_mem, .none, .none } },
109875 },
109876 .call_frame = .{ .alignment = .@"16" },
109877 .extra_temps = .{
109878 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
109879 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
109880 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
109881 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
109882 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 2, .at = 2 } } },
109883 .{ .type = .usize, .kind = .{ .extern_func = "__fixunsxfei" } },
109884 .unused,
109885 .unused,
109886 .unused,
109887 .unused,
109888 .unused,
109889 },
109890 .dst_temps = .{ .mem, .unused },
109891 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
109892 .each = .{ .once = &.{
109893 .{ ._, ._, .mov, .tmp0d, .sia(-16, .src0, .add_unaligned_size), ._, ._ },
109894 .{ ._, ._, .lea, .tmp1p, .mema(.dst0, .add_unaligned_size_sub_elem_size), ._, ._ },
109895 .{ .@"0:", ._, .mov, .tmp2p, .tmp1p, ._, ._ },
109896 .{ ._, ._, .mov, .tmp3d, .sa(.dst0, .add_bit_size), ._, ._ },
109897 .{ ._, ._, .lea, .tmp4p, .memi(.src0, .tmp0), ._, ._ },
109898 .{ ._, ._, .call, .tmp5d, ._, ._, ._ },
109899 .{ ._, ._, .lea, .tmp1p, .leaa(.tmp1, .sub_dst0_elem_size), ._, ._ },
109900 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
109901 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
106485109902 } },
106486109903 }, .{
106487109904 .required_features = .{ .avx, .slow_incdec, null, null },
......@@ -106493,10 +109910,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106493109910 .call_frame = .{ .alignment = .@"16" },
106494109911 .extra_temps = .{
106495109912 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
106496 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
106497 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
109913 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
109914 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
106498109915 .{ .type = .usize, .kind = .{ .extern_func = "__fixtfsi" } },
106499 .{ .type = .i32, .kind = .{ .reg = .eax } },
109916 .{ .type = .i32, .kind = .{ .ret_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
106500109917 .unused,
106501109918 .unused,
106502109919 .unused,
......@@ -106507,14 +109924,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106507109924 .dst_temps = .{ .mem, .unused },
106508109925 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
106509109926 .each = .{ .once = &.{
106510 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
106511 .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
109927 .{ ._, ._, .lea, .tmp0p, .memad(.src0, .add_unaligned_size, -16), ._, ._ },
109928 .{ ._, ._, .mov, .tmp1d, .sia(-1, .dst0, .add_unaligned_size), ._, ._ },
106512109929 .{ .@"0:", .v_dqa, .mov, .tmp2x, .lea(.tmp0x), ._, ._ },
106513109930 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
106514 .{ ._, ._, .mov, .memia(.dst0b, .tmp1, .add_unaligned_size), .tmp4b, ._, ._ },
106515 .{ ._, ._, .lea, .tmp0p, .lead(.tmp0, 16), ._, ._ },
106516 .{ ._, ._, .add, .tmp1p, .si(1), ._, ._ },
106517 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
109931 .{ ._, ._, .mov, .memi(.dst0b, .tmp1), .tmp4b, ._, ._ },
109932 .{ ._, ._, .lea, .tmp0p, .lead(.tmp0, -16), ._, ._ },
109933 .{ ._, ._, .sub, .tmp1d, .si(1), ._, ._ },
109934 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
106518109935 } },
106519109936 }, .{
106520109937 .required_features = .{ .avx, null, null, null },
......@@ -106526,10 +109943,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106526109943 .call_frame = .{ .alignment = .@"16" },
106527109944 .extra_temps = .{
106528109945 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
106529 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
106530 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
109946 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
109947 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
106531109948 .{ .type = .usize, .kind = .{ .extern_func = "__fixtfsi" } },
106532 .{ .type = .i32, .kind = .{ .reg = .eax } },
109949 .{ .type = .i32, .kind = .{ .ret_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
106533109950 .unused,
106534109951 .unused,
106535109952 .unused,
......@@ -106540,14 +109957,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106540109957 .dst_temps = .{ .mem, .unused },
106541109958 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
106542109959 .each = .{ .once = &.{
106543 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
106544 .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
109960 .{ ._, ._, .lea, .tmp0p, .memad(.src0, .add_unaligned_size, -16), ._, ._ },
109961 .{ ._, ._, .mov, .tmp1d, .sia(-1, .dst0, .add_unaligned_size), ._, ._ },
106545109962 .{ .@"0:", .v_dqa, .mov, .tmp2x, .lea(.tmp0x), ._, ._ },
106546109963 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
106547 .{ ._, ._, .mov, .memia(.dst0b, .tmp1, .add_unaligned_size), .tmp4b, ._, ._ },
106548 .{ ._, ._, .lea, .tmp0p, .lead(.tmp0, 16), ._, ._ },
106549 .{ ._, ._c, .in, .tmp1p, ._, ._, ._ },
106550 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
109964 .{ ._, ._, .mov, .memi(.dst0b, .tmp1), .tmp4b, ._, ._ },
109965 .{ ._, ._, .lea, .tmp0p, .lead(.tmp0, -16), ._, ._ },
109966 .{ ._, ._c, .de, .tmp1d, ._, ._, ._ },
109967 .{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
106551109968 } },
106552109969 }, .{
106553109970 .required_features = .{ .sse2, .slow_incdec, null, null },
......@@ -106559,10 +109976,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106559109976 .call_frame = .{ .alignment = .@"16" },
106560109977 .extra_temps = .{
106561109978 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
106562 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
106563 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
109979 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
109980 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
106564109981 .{ .type = .usize, .kind = .{ .extern_func = "__fixtfsi" } },
106565 .{ .type = .i32, .kind = .{ .reg = .eax } },
109982 .{ .type = .i32, .kind = .{ .ret_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
106566109983 .unused,
106567109984 .unused,
106568109985 .unused,
......@@ -106573,14 +109990,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106573109990 .dst_temps = .{ .mem, .unused },
106574109991 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
106575109992 .each = .{ .once = &.{
106576 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
106577 .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
109993 .{ ._, ._, .lea, .tmp0p, .memad(.src0, .add_unaligned_size, -16), ._, ._ },
109994 .{ ._, ._, .mov, .tmp1d, .sia(-1, .dst0, .add_unaligned_size), ._, ._ },
106578109995 .{ .@"0:", ._dqa, .mov, .tmp2x, .lea(.tmp0x), ._, ._ },
106579109996 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
106580 .{ ._, ._, .mov, .memia(.dst0b, .tmp1, .add_unaligned_size), .tmp4b, ._, ._ },
106581 .{ ._, ._, .lea, .tmp0p, .lead(.tmp0, 16), ._, ._ },
106582 .{ ._, ._, .add, .tmp1p, .si(1), ._, ._ },
106583 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
109997 .{ ._, ._, .mov, .memi(.dst0b, .tmp1), .tmp4b, ._, ._ },
109998 .{ ._, ._, .lea, .tmp0p, .lead(.tmp0, -16), ._, ._ },
109999 .{ ._, ._, .sub, .tmp1d, .si(1), ._, ._ },
110000 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
106584110001 } },
106585110002 }, .{
106586110003 .required_features = .{ .sse2, null, null, null },
......@@ -106592,10 +110009,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106592110009 .call_frame = .{ .alignment = .@"16" },
106593110010 .extra_temps = .{
106594110011 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
106595 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
106596 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
110012 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
110013 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
106597110014 .{ .type = .usize, .kind = .{ .extern_func = "__fixtfsi" } },
106598 .{ .type = .i32, .kind = .{ .reg = .eax } },
110015 .{ .type = .i32, .kind = .{ .ret_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
106599110016 .unused,
106600110017 .unused,
106601110018 .unused,
......@@ -106606,14 +110023,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106606110023 .dst_temps = .{ .mem, .unused },
106607110024 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
106608110025 .each = .{ .once = &.{
106609 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
106610 .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
110026 .{ ._, ._, .lea, .tmp0p, .memad(.src0, .add_unaligned_size, -16), ._, ._ },
110027 .{ ._, ._, .mov, .tmp1d, .sia(-1, .dst0, .add_unaligned_size), ._, ._ },
106611110028 .{ .@"0:", ._dqa, .mov, .tmp2x, .lea(.tmp0x), ._, ._ },
106612110029 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
106613 .{ ._, ._, .mov, .memia(.dst0b, .tmp1, .add_unaligned_size), .tmp4b, ._, ._ },
106614 .{ ._, ._, .lea, .tmp0p, .lead(.tmp0, 16), ._, ._ },
106615 .{ ._, ._c, .in, .tmp1p, ._, ._, ._ },
106616 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
110030 .{ ._, ._, .mov, .memi(.dst0b, .tmp1), .tmp4b, ._, ._ },
110031 .{ ._, ._, .lea, .tmp0p, .lead(.tmp0, -16), ._, ._ },
110032 .{ ._, ._c, .de, .tmp1d, ._, ._, ._ },
110033 .{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
106617110034 } },
106618110035 }, .{
106619110036 .required_features = .{ .sse, .slow_incdec, null, null },
......@@ -106625,10 +110042,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106625110042 .call_frame = .{ .alignment = .@"16" },
106626110043 .extra_temps = .{
106627110044 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
106628 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
106629 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
110045 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
110046 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
106630110047 .{ .type = .usize, .kind = .{ .extern_func = "__fixtfsi" } },
106631 .{ .type = .i32, .kind = .{ .reg = .eax } },
110048 .{ .type = .i32, .kind = .{ .ret_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
106632110049 .unused,
106633110050 .unused,
106634110051 .unused,
......@@ -106639,14 +110056,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106639110056 .dst_temps = .{ .mem, .unused },
106640110057 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
106641110058 .each = .{ .once = &.{
106642 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
106643 .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
110059 .{ ._, ._, .lea, .tmp0p, .memad(.src0, .add_unaligned_size, -16), ._, ._ },
110060 .{ ._, ._, .mov, .tmp1d, .sia(-1, .dst0, .add_unaligned_size), ._, ._ },
106644110061 .{ .@"0:", ._ps, .mova, .tmp2x, .lea(.tmp0x), ._, ._ },
106645110062 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
106646 .{ ._, ._, .mov, .memia(.dst0b, .tmp1, .add_unaligned_size), .tmp4b, ._, ._ },
106647 .{ ._, ._, .lea, .tmp0p, .lead(.tmp0, 16), ._, ._ },
106648 .{ ._, ._, .add, .tmp1p, .si(1), ._, ._ },
106649 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
110063 .{ ._, ._, .mov, .memi(.dst0b, .tmp1), .tmp4b, ._, ._ },
110064 .{ ._, ._, .lea, .tmp0p, .lead(.tmp0, -16), ._, ._ },
110065 .{ ._, ._, .sub, .tmp1d, .si(1), ._, ._ },
110066 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
106650110067 } },
106651110068 }, .{
106652110069 .required_features = .{ .sse, null, null, null },
......@@ -106658,10 +110075,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106658110075 .call_frame = .{ .alignment = .@"16" },
106659110076 .extra_temps = .{
106660110077 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
106661 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
106662 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
110078 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
110079 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
106663110080 .{ .type = .usize, .kind = .{ .extern_func = "__fixtfsi" } },
106664 .{ .type = .i32, .kind = .{ .reg = .eax } },
110081 .{ .type = .i32, .kind = .{ .ret_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
106665110082 .unused,
106666110083 .unused,
106667110084 .unused,
......@@ -106672,14 +110089,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106672110089 .dst_temps = .{ .mem, .unused },
106673110090 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
106674110091 .each = .{ .once = &.{
106675 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
106676 .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
110092 .{ ._, ._, .lea, .tmp0p, .memad(.src0, .add_unaligned_size, -16), ._, ._ },
110093 .{ ._, ._, .mov, .tmp1d, .sia(-1, .dst0, .add_unaligned_size), ._, ._ },
106677110094 .{ .@"0:", ._ps, .mova, .tmp2x, .lea(.tmp0x), ._, ._ },
106678110095 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
106679 .{ ._, ._, .mov, .memia(.dst0b, .tmp1, .add_unaligned_size), .tmp4b, ._, ._ },
106680 .{ ._, ._, .lea, .tmp0p, .lead(.tmp0, 16), ._, ._ },
106681 .{ ._, ._c, .in, .tmp1p, ._, ._, ._ },
106682 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
110096 .{ ._, ._, .mov, .memi(.dst0b, .tmp1), .tmp4b, ._, ._ },
110097 .{ ._, ._, .lea, .tmp0p, .lead(.tmp0, -16), ._, ._ },
110098 .{ ._, ._c, .de, .tmp1d, ._, ._, ._ },
110099 .{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
106683110100 } },
106684110101 }, .{
106685110102 .required_features = .{ .avx, null, null, null },
......@@ -106690,10 +110107,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106690110107 },
106691110108 .call_frame = .{ .alignment = .@"16" },
106692110109 .extra_temps = .{
106693 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
106694 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
110110 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
110111 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
106695110112 .{ .type = .usize, .kind = .{ .extern_func = "__fixtfsi" } },
106696 .{ .type = .i32, .kind = .{ .reg = .eax } },
110113 .{ .type = .i32, .kind = .{ .ret_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
106697110114 .unused,
106698110115 .unused,
106699110116 .unused,
......@@ -106705,12 +110122,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106705110122 .dst_temps = .{ .mem, .unused },
106706110123 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
106707110124 .each = .{ .once = &.{
106708 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
106709 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memsia(.src0x, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
110125 .{ ._, ._, .mov, .tmp0d, .sia(-2, .dst0, .add_unaligned_size), ._, ._ },
110126 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memsi(.src0x, .@"8", .tmp0), ._, ._ },
106710110127 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
106711 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp3w, ._, ._ },
106712 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
106713 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
110128 .{ ._, ._, .mov, .memi(.dst0w, .tmp0), .tmp3w, ._, ._ },
110129 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
110130 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
106714110131 } },
106715110132 }, .{
106716110133 .required_features = .{ .sse2, null, null, null },
......@@ -106721,10 +110138,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106721110138 },
106722110139 .call_frame = .{ .alignment = .@"16" },
106723110140 .extra_temps = .{
106724 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
106725 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
110141 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
110142 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
106726110143 .{ .type = .usize, .kind = .{ .extern_func = "__fixtfsi" } },
106727 .{ .type = .i32, .kind = .{ .reg = .eax } },
110144 .{ .type = .i32, .kind = .{ .ret_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
106728110145 .unused,
106729110146 .unused,
106730110147 .unused,
......@@ -106736,12 +110153,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106736110153 .dst_temps = .{ .mem, .unused },
106737110154 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
106738110155 .each = .{ .once = &.{
106739 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
106740 .{ .@"0:", ._dqa, .mov, .tmp1x, .memsia(.src0x, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
110156 .{ ._, ._, .mov, .tmp0d, .sia(-2, .dst0, .add_unaligned_size), ._, ._ },
110157 .{ .@"0:", ._dqa, .mov, .tmp1x, .memsi(.src0x, .@"8", .tmp0), ._, ._ },
106741110158 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
106742 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp3w, ._, ._ },
106743 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
106744 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
110159 .{ ._, ._, .mov, .memi(.dst0w, .tmp0), .tmp3w, ._, ._ },
110160 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
110161 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
106745110162 } },
106746110163 }, .{
106747110164 .required_features = .{ .sse, null, null, null },
......@@ -106752,10 +110169,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106752110169 },
106753110170 .call_frame = .{ .alignment = .@"16" },
106754110171 .extra_temps = .{
106755 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
106756 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
110172 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
110173 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
106757110174 .{ .type = .usize, .kind = .{ .extern_func = "__fixtfsi" } },
106758 .{ .type = .i32, .kind = .{ .reg = .eax } },
110175 .{ .type = .i32, .kind = .{ .ret_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
106759110176 .unused,
106760110177 .unused,
106761110178 .unused,
......@@ -106767,19 +110184,19 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106767110184 .dst_temps = .{ .mem, .unused },
106768110185 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
106769110186 .each = .{ .once = &.{
106770 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
106771 .{ .@"0:", ._ps, .mova, .tmp1x, .memsia(.src0x, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
110187 .{ ._, ._, .mov, .tmp0d, .sia(-2, .dst0, .add_unaligned_size), ._, ._ },
110188 .{ .@"0:", ._ps, .mova, .tmp1x, .memsi(.src0x, .@"8", .tmp0), ._, ._ },
106772110189 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
106773 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp3w, ._, ._ },
106774 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
106775 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
110190 .{ ._, ._, .mov, .memi(.dst0w, .tmp0), .tmp3w, ._, ._ },
110191 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
110192 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
106776110193 } },
106777110194 }, .{
106778110195 .required_features = .{ .sse, null, null, null },
106779110196 .src_constraints = .{ .{ .float = .xword }, .any, .any },
106780110197 .dst_constraints = .{ .{ .signed_int = .dword }, .any },
106781110198 .patterns = &.{
106782 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },
110199 .{ .src = .{ .{ .to_param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .none, .none } },
106783110200 },
106784110201 .call_frame = .{ .alignment = .@"16" },
106785110202 .extra_temps = .{
......@@ -106795,7 +110212,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106795110212 .unused,
106796110213 .unused,
106797110214 },
106798 .dst_temps = .{ .{ .reg = .eax }, .unused },
110215 .dst_temps = .{ .{ .ret_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
106799110216 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
106800110217 .each = .{ .once = &.{
106801110218 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
......@@ -106805,7 +110222,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106805110222 .src_constraints = .{ .{ .float = .xword }, .any, .any },
106806110223 .dst_constraints = .{ .{ .unsigned_int = .dword }, .any },
106807110224 .patterns = &.{
106808 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },
110225 .{ .src = .{ .{ .to_param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .none, .none } },
106809110226 },
106810110227 .call_frame = .{ .alignment = .@"16" },
106811110228 .extra_temps = .{
......@@ -106821,7 +110238,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106821110238 .unused,
106822110239 .unused,
106823110240 },
106824 .dst_temps = .{ .{ .reg = .eax }, .unused },
110241 .dst_temps = .{ .{ .ret_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
106825110242 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
106826110243 .each = .{ .once = &.{
106827110244 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
......@@ -106835,10 +110252,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106835110252 },
106836110253 .call_frame = .{ .alignment = .@"16" },
106837110254 .extra_temps = .{
106838 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
106839 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
110255 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
110256 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
106840110257 .{ .type = .usize, .kind = .{ .extern_func = "__fixtfsi" } },
106841 .{ .type = .i32, .kind = .{ .reg = .eax } },
110258 .{ .type = .i32, .kind = .{ .ret_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
106842110259 .unused,
106843110260 .unused,
106844110261 .unused,
......@@ -106850,12 +110267,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106850110267 .dst_temps = .{ .mem, .unused },
106851110268 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
106852110269 .each = .{ .once = &.{
106853 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
106854 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memsia(.src0x, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
110270 .{ ._, ._, .mov, .tmp0d, .sia(-4, .dst0, .add_unaligned_size), ._, ._ },
110271 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memsi(.src0x, .@"4", .tmp0), ._, ._ },
106855110272 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
106856 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp3d, ._, ._ },
106857 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
106858 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
110273 .{ ._, ._, .mov, .memi(.dst0d, .tmp0), .tmp3d, ._, ._ },
110274 .{ ._, ._, .sub, .tmp0d, .si(4), ._, ._ },
110275 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
106859110276 } },
106860110277 }, .{
106861110278 .required_features = .{ .avx, null, null, null },
......@@ -106866,10 +110283,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106866110283 },
106867110284 .call_frame = .{ .alignment = .@"16" },
106868110285 .extra_temps = .{
106869 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
106870 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
110286 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
110287 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
106871110288 .{ .type = .usize, .kind = .{ .extern_func = "__fixunstfsi" } },
106872 .{ .type = .u32, .kind = .{ .reg = .eax } },
110289 .{ .type = .i32, .kind = .{ .ret_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
106873110290 .unused,
106874110291 .unused,
106875110292 .unused,
......@@ -106881,12 +110298,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106881110298 .dst_temps = .{ .mem, .unused },
106882110299 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
106883110300 .each = .{ .once = &.{
106884 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
106885 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memsia(.src0x, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
110301 .{ ._, ._, .mov, .tmp0d, .sia(-4, .dst0, .add_unaligned_size), ._, ._ },
110302 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memsi(.src0x, .@"4", .tmp0), ._, ._ },
106886110303 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
106887 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp3d, ._, ._ },
106888 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
106889 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
110304 .{ ._, ._, .mov, .memi(.dst0d, .tmp0), .tmp3d, ._, ._ },
110305 .{ ._, ._, .sub, .tmp0d, .si(4), ._, ._ },
110306 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
106890110307 } },
106891110308 }, .{
106892110309 .required_features = .{ .sse2, null, null, null },
......@@ -106897,10 +110314,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106897110314 },
106898110315 .call_frame = .{ .alignment = .@"16" },
106899110316 .extra_temps = .{
106900 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
106901 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
110317 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
110318 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
106902110319 .{ .type = .usize, .kind = .{ .extern_func = "__fixtfsi" } },
106903 .{ .type = .i32, .kind = .{ .reg = .eax } },
110320 .{ .type = .i32, .kind = .{ .ret_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
106904110321 .unused,
106905110322 .unused,
106906110323 .unused,
......@@ -106912,12 +110329,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106912110329 .dst_temps = .{ .mem, .unused },
106913110330 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
106914110331 .each = .{ .once = &.{
106915 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
106916 .{ .@"0:", ._dqa, .mov, .tmp1x, .memsia(.src0x, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
110332 .{ ._, ._, .mov, .tmp0d, .sia(-4, .dst0, .add_unaligned_size), ._, ._ },
110333 .{ .@"0:", ._dqa, .mov, .tmp1x, .memsi(.src0x, .@"4", .tmp0), ._, ._ },
106917110334 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
106918 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp3d, ._, ._ },
106919 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
106920 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
110335 .{ ._, ._, .mov, .memi(.dst0d, .tmp0), .tmp3d, ._, ._ },
110336 .{ ._, ._, .sub, .tmp0d, .si(4), ._, ._ },
110337 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
106921110338 } },
106922110339 }, .{
106923110340 .required_features = .{ .sse2, null, null, null },
......@@ -106928,10 +110345,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106928110345 },
106929110346 .call_frame = .{ .alignment = .@"16" },
106930110347 .extra_temps = .{
106931 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
106932 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
110348 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
110349 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
106933110350 .{ .type = .usize, .kind = .{ .extern_func = "__fixunstfsi" } },
106934 .{ .type = .u32, .kind = .{ .reg = .eax } },
110351 .{ .type = .i32, .kind = .{ .ret_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
106935110352 .unused,
106936110353 .unused,
106937110354 .unused,
......@@ -106943,12 +110360,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106943110360 .dst_temps = .{ .mem, .unused },
106944110361 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
106945110362 .each = .{ .once = &.{
106946 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
106947 .{ .@"0:", ._dqa, .mov, .tmp1x, .memsia(.src0x, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
110363 .{ ._, ._, .mov, .tmp0d, .sia(-4, .dst0, .add_unaligned_size), ._, ._ },
110364 .{ .@"0:", ._dqa, .mov, .tmp1x, .memsi(.src0x, .@"4", .tmp0), ._, ._ },
106948110365 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
106949 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp3d, ._, ._ },
106950 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
106951 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
110366 .{ ._, ._, .mov, .memi(.dst0d, .tmp0), .tmp3d, ._, ._ },
110367 .{ ._, ._, .sub, .tmp0d, .si(4), ._, ._ },
110368 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
106952110369 } },
106953110370 }, .{
106954110371 .required_features = .{ .sse, null, null, null },
......@@ -106959,10 +110376,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106959110376 },
106960110377 .call_frame = .{ .alignment = .@"16" },
106961110378 .extra_temps = .{
106962 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
106963 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
110379 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
110380 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
106964110381 .{ .type = .usize, .kind = .{ .extern_func = "__fixtfsi" } },
106965 .{ .type = .i32, .kind = .{ .reg = .eax } },
110382 .{ .type = .i32, .kind = .{ .ret_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
106966110383 .unused,
106967110384 .unused,
106968110385 .unused,
......@@ -106974,12 +110391,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106974110391 .dst_temps = .{ .mem, .unused },
106975110392 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
106976110393 .each = .{ .once = &.{
106977 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
106978 .{ .@"0:", ._ps, .mova, .tmp1x, .memsia(.src0x, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
110394 .{ ._, ._, .mov, .tmp0d, .sia(-4, .dst0, .add_unaligned_size), ._, ._ },
110395 .{ .@"0:", ._ps, .mova, .tmp1x, .memsi(.src0x, .@"4", .tmp0), ._, ._ },
106979110396 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
106980 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp3d, ._, ._ },
106981 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
106982 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
110397 .{ ._, ._, .mov, .memi(.dst0d, .tmp0), .tmp3d, ._, ._ },
110398 .{ ._, ._, .sub, .tmp0d, .si(4), ._, ._ },
110399 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
106983110400 } },
106984110401 }, .{
106985110402 .required_features = .{ .sse, null, null, null },
......@@ -106990,10 +110407,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106990110407 },
106991110408 .call_frame = .{ .alignment = .@"16" },
106992110409 .extra_temps = .{
106993 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
106994 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
110410 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
110411 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
106995110412 .{ .type = .usize, .kind = .{ .extern_func = "__fixunstfsi" } },
106996 .{ .type = .u32, .kind = .{ .reg = .eax } },
110413 .{ .type = .u32, .kind = .{ .ret_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
106997110414 .unused,
106998110415 .unused,
106999110416 .unused,
......@@ -107005,19 +110422,19 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
107005110422 .dst_temps = .{ .mem, .unused },
107006110423 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
107007110424 .each = .{ .once = &.{
107008 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
107009 .{ .@"0:", ._ps, .mova, .tmp1x, .memsia(.src0x, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
110425 .{ ._, ._, .mov, .tmp0d, .sia(-4, .dst0, .add_unaligned_size), ._, ._ },
110426 .{ .@"0:", ._ps, .mova, .tmp1x, .memsi(.src0x, .@"4", .tmp0), ._, ._ },
107010110427 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
107011 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp3d, ._, ._ },
107012 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
107013 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
110428 .{ ._, ._, .mov, .memi(.dst0d, .tmp0), .tmp3d, ._, ._ },
110429 .{ ._, ._, .sub, .tmp0d, .si(4), ._, ._ },
110430 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
107014110431 } },
107015110432 }, .{
107016110433 .required_features = .{ .@"64bit", .sse, null, null },
107017110434 .src_constraints = .{ .{ .float = .xword }, .any, .any },
107018110435 .dst_constraints = .{ .{ .signed_int = .qword }, .any },
107019110436 .patterns = &.{
107020 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },
110437 .{ .src = .{ .{ .to_param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .none, .none } },
107021110438 },
107022110439 .call_frame = .{ .alignment = .@"16" },
107023110440 .extra_temps = .{
......@@ -107033,7 +110450,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
107033110450 .unused,
107034110451 .unused,
107035110452 },
107036 .dst_temps = .{ .{ .reg = .rax }, .unused },
110453 .dst_temps = .{ .{ .ret_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
107037110454 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
107038110455 .each = .{ .once = &.{
107039110456 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
......@@ -107043,7 +110460,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
107043110460 .src_constraints = .{ .{ .float = .xword }, .any, .any },
107044110461 .dst_constraints = .{ .{ .unsigned_int = .qword }, .any },
107045110462 .patterns = &.{
107046 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },
110463 .{ .src = .{ .{ .to_param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .none, .none } },
107047110464 },
107048110465 .call_frame = .{ .alignment = .@"16" },
107049110466 .extra_temps = .{
......@@ -107059,7 +110476,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
107059110476 .unused,
107060110477 .unused,
107061110478 },
107062 .dst_temps = .{ .{ .reg = .rax }, .unused },
110479 .dst_temps = .{ .{ .ret_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
107063110480 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
107064110481 .each = .{ .once = &.{
107065110482 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
......@@ -107073,10 +110490,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
107073110490 },
107074110491 .call_frame = .{ .alignment = .@"16" },
107075110492 .extra_temps = .{
107076 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
107077 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
110493 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
110494 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
107078110495 .{ .type = .usize, .kind = .{ .extern_func = "__fixtfdi" } },
107079 .{ .type = .i64, .kind = .{ .reg = .rax } },
110496 .{ .type = .i64, .kind = .{ .ret_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
107080110497 .unused,
107081110498 .unused,
107082110499 .unused,
......@@ -107088,12 +110505,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
107088110505 .dst_temps = .{ .mem, .unused },
107089110506 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
107090110507 .each = .{ .once = &.{
107091 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
107092 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memsia(.src0x, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
110508 .{ ._, ._, .mov, .tmp0d, .sia(-8, .dst0, .add_unaligned_size), ._, ._ },
110509 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memsi(.src0x, .@"2", .tmp0), ._, ._ },
107093110510 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
107094 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },
107095 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
107096 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
110511 .{ ._, ._, .mov, .memi(.dst0q, .tmp0), .tmp3q, ._, ._ },
110512 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
110513 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
107097110514 } },
107098110515 }, .{
107099110516 .required_features = .{ .@"64bit", .avx, null, null },
......@@ -107104,10 +110521,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
107104110521 },
107105110522 .call_frame = .{ .alignment = .@"16" },
107106110523 .extra_temps = .{
107107 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
107108 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
110524 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
110525 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
107109110526 .{ .type = .usize, .kind = .{ .extern_func = "__fixunstfdi" } },
107110 .{ .type = .u64, .kind = .{ .reg = .rax } },
110527 .{ .type = .u64, .kind = .{ .ret_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
107111110528 .unused,
107112110529 .unused,
107113110530 .unused,
......@@ -107119,12 +110536,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
107119110536 .dst_temps = .{ .mem, .unused },
107120110537 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
107121110538 .each = .{ .once = &.{
107122 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
107123 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memsia(.src0x, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
110539 .{ ._, ._, .mov, .tmp0d, .sia(-8, .dst0, .add_unaligned_size), ._, ._ },
110540 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memsi(.src0x, .@"2", .tmp0), ._, ._ },
107124110541 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
107125 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },
107126 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
107127 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
110542 .{ ._, ._, .mov, .memi(.dst0q, .tmp0), .tmp3q, ._, ._ },
110543 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
110544 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
107128110545 } },
107129110546 }, .{
107130110547 .required_features = .{ .@"64bit", .sse2, null, null },
......@@ -107135,10 +110552,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
107135110552 },
107136110553 .call_frame = .{ .alignment = .@"16" },
107137110554 .extra_temps = .{
107138 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
107139 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
110555 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
110556 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
107140110557 .{ .type = .usize, .kind = .{ .extern_func = "__fixtfdi" } },
107141 .{ .type = .i64, .kind = .{ .reg = .rax } },
110558 .{ .type = .i64, .kind = .{ .ret_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
107142110559 .unused,
107143110560 .unused,
107144110561 .unused,
......@@ -107150,12 +110567,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
107150110567 .dst_temps = .{ .mem, .unused },
107151110568 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
107152110569 .each = .{ .once = &.{
107153 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
107154 .{ .@"0:", ._dqa, .mov, .tmp1x, .memsia(.src0x, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
110570 .{ ._, ._, .mov, .tmp0d, .sia(-8, .dst0, .add_unaligned_size), ._, ._ },
110571 .{ .@"0:", ._dqa, .mov, .tmp1x, .memsi(.src0x, .@"2", .tmp0), ._, ._ },
107155110572 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
107156 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },
107157 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
107158 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
110573 .{ ._, ._, .mov, .memi(.dst0q, .tmp0), .tmp3q, ._, ._ },
110574 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
110575 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
107159110576 } },
107160110577 }, .{
107161110578 .required_features = .{ .@"64bit", .sse2, null, null },
......@@ -107166,10 +110583,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
107166110583 },
107167110584 .call_frame = .{ .alignment = .@"16" },
107168110585 .extra_temps = .{
107169 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
107170 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
110586 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
110587 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
107171110588 .{ .type = .usize, .kind = .{ .extern_func = "__fixunstfdi" } },
107172 .{ .type = .u64, .kind = .{ .reg = .rax } },
110589 .{ .type = .u64, .kind = .{ .ret_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
107173110590 .unused,
107174110591 .unused,
107175110592 .unused,
......@@ -107181,12 +110598,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
107181110598 .dst_temps = .{ .mem, .unused },
107182110599 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
107183110600 .each = .{ .once = &.{
107184 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
107185 .{ .@"0:", ._dqa, .mov, .tmp1x, .memsia(.src0x, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
110601 .{ ._, ._, .mov, .tmp0d, .sia(-8, .dst0, .add_unaligned_size), ._, ._ },
110602 .{ .@"0:", ._dqa, .mov, .tmp1x, .memsi(.src0x, .@"2", .tmp0), ._, ._ },
107186110603 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
107187 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },
107188 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
107189 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
110604 .{ ._, ._, .mov, .memi(.dst0q, .tmp0), .tmp3q, ._, ._ },
110605 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
110606 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
107190110607 } },
107191110608 }, .{
107192110609 .required_features = .{ .@"64bit", .sse, null, null },
......@@ -107197,10 +110614,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
107197110614 },
107198110615 .call_frame = .{ .alignment = .@"16" },
107199110616 .extra_temps = .{
107200 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
107201 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
110617 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
110618 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
107202110619 .{ .type = .usize, .kind = .{ .extern_func = "__fixtfdi" } },
107203 .{ .type = .i64, .kind = .{ .reg = .rax } },
110620 .{ .type = .i64, .kind = .{ .ret_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
107204110621 .unused,
107205110622 .unused,
107206110623 .unused,
......@@ -107212,12 +110629,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
107212110629 .dst_temps = .{ .mem, .unused },
107213110630 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
107214110631 .each = .{ .once = &.{
107215 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
107216 .{ .@"0:", ._ps, .mova, .tmp1x, .memsia(.src0x, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
110632 .{ ._, ._, .mov, .tmp0d, .sia(-8, .dst0, .add_unaligned_size), ._, ._ },
110633 .{ .@"0:", ._ps, .mova, .tmp1x, .memsi(.src0x, .@"2", .tmp0), ._, ._ },
107217110634 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
107218 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },
107219 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
107220 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
110635 .{ ._, ._, .mov, .memi(.dst0q, .tmp0), .tmp3q, ._, ._ },
110636 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
110637 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
107221110638 } },
107222110639 }, .{
107223110640 .required_features = .{ .@"64bit", .sse, null, null },
......@@ -107228,10 +110645,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
107228110645 },
107229110646 .call_frame = .{ .alignment = .@"16" },
107230110647 .extra_temps = .{
107231 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
107232 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
110648 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
110649 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
107233110650 .{ .type = .usize, .kind = .{ .extern_func = "__fixunstfdi" } },
107234 .{ .type = .u64, .kind = .{ .reg = .rax } },
110651 .{ .type = .u64, .kind = .{ .ret_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
107235110652 .unused,
107236110653 .unused,
107237110654 .unused,
......@@ -107243,19 +110660,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
107243110660 .dst_temps = .{ .mem, .unused },
107244110661 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
107245110662 .each = .{ .once = &.{
107246 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
107247 .{ .@"0:", ._ps, .mova, .tmp1x, .memsia(.src0x, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
110663 .{ ._, ._, .mov, .tmp0d, .sia(-8, .dst0, .add_unaligned_size), ._, ._ },
110664 .{ .@"0:", ._ps, .mova, .tmp1x, .memsi(.src0x, .@"2", .tmp0), ._, ._ },
107248110665 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
107249 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },
107250 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
107251 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
110666 .{ ._, ._, .mov, .memi(.dst0q, .tmp0), .tmp3q, ._, ._ },
110667 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
110668 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
107252110669 } },
107253110670 }, .{
107254 .required_features = .{ .@"64bit", .sse, null, null },
110671 .required_cc_abi = .sysv64,
110672 .required_features = .{ .sse, null, null, null },
107255110673 .src_constraints = .{ .{ .float = .xword }, .any, .any },
107256110674 .dst_constraints = .{ .{ .signed_int = .xword }, .any },
107257110675 .patterns = &.{
107258 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },
110676 .{ .src = .{ .{ .to_param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .none, .none } },
107259110677 },
107260110678 .call_frame = .{ .alignment = .@"16" },
107261110679 .extra_temps = .{
......@@ -107271,17 +110689,45 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
107271110689 .unused,
107272110690 .unused,
107273110691 },
107274 .dst_temps = .{ .{ .reg_pair = .{ .rax, .rdx } }, .unused },
110692 .dst_temps = .{ .{ .ret_gpr_pair = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
107275110693 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
107276110694 .each = .{ .once = &.{
107277110695 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
107278110696 } },
107279110697 }, .{
107280 .required_features = .{ .@"64bit", .sse, null, null },
110698 .required_cc_abi = .win64,
110699 .required_features = .{ .sse, null, null, null },
110700 .src_constraints = .{ .{ .float = .xword }, .any, .any },
110701 .dst_constraints = .{ .{ .signed_int = .xword }, .any },
110702 .patterns = &.{
110703 .{ .src = .{ .{ .to_param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .none, .none } },
110704 },
110705 .call_frame = .{ .alignment = .@"16" },
110706 .extra_temps = .{
110707 .{ .type = .usize, .kind = .{ .extern_func = "__fixtfti" } },
110708 .unused,
110709 .unused,
110710 .unused,
110711 .unused,
110712 .unused,
110713 .unused,
110714 .unused,
110715 .unused,
110716 .unused,
110717 .unused,
110718 },
110719 .dst_temps = .{ .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
110720 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
110721 .each = .{ .once = &.{
110722 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
110723 } },
110724 }, .{
110725 .required_cc_abi = .sysv64,
110726 .required_features = .{ .sse, null, null, null },
107281110727 .src_constraints = .{ .{ .float = .xword }, .any, .any },
107282110728 .dst_constraints = .{ .{ .unsigned_int = .xword }, .any },
107283110729 .patterns = &.{
107284 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },
110730 .{ .src = .{ .{ .to_param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .none, .none } },
107285110731 },
107286110732 .call_frame = .{ .alignment = .@"16" },
107287110733 .extra_temps = .{
......@@ -107297,13 +110743,41 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
107297110743 .unused,
107298110744 .unused,
107299110745 },
107300 .dst_temps = .{ .{ .reg_pair = .{ .rax, .rdx } }, .unused },
110746 .dst_temps = .{ .{ .ret_gpr_pair = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
107301110747 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
107302110748 .each = .{ .once = &.{
107303110749 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
107304110750 } },
107305110751 }, .{
107306 .required_features = .{ .@"64bit", .avx, null, null },
110752 .required_cc_abi = .win64,
110753 .required_features = .{ .sse, null, null, null },
110754 .src_constraints = .{ .{ .float = .xword }, .any, .any },
110755 .dst_constraints = .{ .{ .unsigned_int = .xword }, .any },
110756 .patterns = &.{
110757 .{ .src = .{ .{ .to_param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .none, .none } },
110758 },
110759 .call_frame = .{ .alignment = .@"16" },
110760 .extra_temps = .{
110761 .{ .type = .usize, .kind = .{ .extern_func = "__fixunstfti" } },
110762 .unused,
110763 .unused,
110764 .unused,
110765 .unused,
110766 .unused,
110767 .unused,
110768 .unused,
110769 .unused,
110770 .unused,
110771 .unused,
110772 },
110773 .dst_temps = .{ .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
110774 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
110775 .each = .{ .once = &.{
110776 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
110777 } },
110778 }, .{
110779 .required_cc_abi = .sysv64,
110780 .required_features = .{ .avx, null, null, null },
107307110781 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },
107308110782 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any },
107309110783 .patterns = &.{
......@@ -107311,11 +110785,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
107311110785 },
107312110786 .call_frame = .{ .alignment = .@"16" },
107313110787 .extra_temps = .{
107314 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
107315 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
110788 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
110789 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
107316110790 .{ .type = .usize, .kind = .{ .extern_func = "__fixtfti" } },
107317 .{ .type = .u64, .kind = .{ .reg = .rax } },
107318 .{ .type = .i64, .kind = .{ .reg = .rdx } },
110791 .{ .type = .i128, .kind = .{ .ret_gpr_pair = .{ .cc = .ccc, .after = 0, .at = 0 } } },
110792 .unused,
107319110793 .unused,
107320110794 .unused,
107321110795 .unused,
......@@ -107326,16 +110800,49 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
107326110800 .dst_temps = .{ .mem, .unused },
107327110801 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
107328110802 .each = .{ .once = &.{
107329 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
107330 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
110803 .{ ._, ._, .mov, .tmp0d, .sia(-16, .src0, .add_unaligned_size), ._, ._ },
110804 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memi(.src0x, .tmp0), ._, ._ },
107331110805 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
107332 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },
107333 .{ ._, ._, .mov, .memiad(.dst0q, .tmp0, .add_unaligned_size, 8), .tmp4q, ._, ._ },
107334 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
107335 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
110806 .{ ._, ._, .mov, .memi(.dst0q, .tmp0), .tmp3q0, ._, ._ },
110807 .{ ._, ._, .mov, .memid(.dst0q, .tmp0, 8), .tmp3q1, ._, ._ },
110808 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
110809 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
107336110810 } },
107337110811 }, .{
107338 .required_features = .{ .@"64bit", .avx, null, null },
110812 .required_cc_abi = .win64,
110813 .required_features = .{ .avx, null, null, null },
110814 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },
110815 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any },
110816 .patterns = &.{
110817 .{ .src = .{ .to_mem, .none, .none } },
110818 },
110819 .call_frame = .{ .alignment = .@"16" },
110820 .extra_temps = .{
110821 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
110822 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
110823 .{ .type = .usize, .kind = .{ .extern_func = "__fixtfti" } },
110824 .unused,
110825 .unused,
110826 .unused,
110827 .unused,
110828 .unused,
110829 .unused,
110830 .unused,
110831 .unused,
110832 },
110833 .dst_temps = .{ .mem, .unused },
110834 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
110835 .each = .{ .once = &.{
110836 .{ ._, ._, .mov, .tmp0d, .sia(-16, .src0, .add_unaligned_size), ._, ._ },
110837 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memi(.src0x, .tmp0), ._, ._ },
110838 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
110839 .{ ._, .v_dqa, .mov, .memi(.dst0x, .tmp0), .tmp1x, ._, ._ },
110840 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
110841 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
110842 } },
110843 }, .{
110844 .required_cc_abi = .sysv64,
110845 .required_features = .{ .avx, null, null, null },
107339110846 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },
107340110847 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any },
107341110848 .patterns = &.{
......@@ -107343,11 +110850,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
107343110850 },
107344110851 .call_frame = .{ .alignment = .@"16" },
107345110852 .extra_temps = .{
107346 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
107347 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
110853 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
110854 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
107348110855 .{ .type = .usize, .kind = .{ .extern_func = "__fixunstfti" } },
107349 .{ .type = .u64, .kind = .{ .reg = .rax } },
107350 .{ .type = .u64, .kind = .{ .reg = .rdx } },
110856 .{ .type = .u128, .kind = .{ .ret_gpr_pair = .{ .cc = .ccc, .after = 0, .at = 0 } } },
110857 .unused,
107351110858 .unused,
107352110859 .unused,
107353110860 .unused,
......@@ -107358,16 +110865,49 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
107358110865 .dst_temps = .{ .mem, .unused },
107359110866 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
107360110867 .each = .{ .once = &.{
107361 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
107362 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
110868 .{ ._, ._, .mov, .tmp0d, .sia(-16, .src0, .add_unaligned_size), ._, ._ },
110869 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memi(.src0x, .tmp0), ._, ._ },
107363110870 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
107364 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },
107365 .{ ._, ._, .mov, .memiad(.dst0q, .tmp0, .add_unaligned_size, 8), .tmp4q, ._, ._ },
107366 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
107367 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
110871 .{ ._, ._, .mov, .memi(.dst0q, .tmp0), .tmp3q0, ._, ._ },
110872 .{ ._, ._, .mov, .memid(.dst0q, .tmp0, 8), .tmp3q1, ._, ._ },
110873 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
110874 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
107368110875 } },
107369110876 }, .{
107370 .required_features = .{ .@"64bit", .sse2, null, null },
110877 .required_cc_abi = .win64,
110878 .required_features = .{ .avx, null, null, null },
110879 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },
110880 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any },
110881 .patterns = &.{
110882 .{ .src = .{ .to_mem, .none, .none } },
110883 },
110884 .call_frame = .{ .alignment = .@"16" },
110885 .extra_temps = .{
110886 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
110887 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
110888 .{ .type = .usize, .kind = .{ .extern_func = "__fixunstfti" } },
110889 .unused,
110890 .unused,
110891 .unused,
110892 .unused,
110893 .unused,
110894 .unused,
110895 .unused,
110896 .unused,
110897 },
110898 .dst_temps = .{ .mem, .unused },
110899 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
110900 .each = .{ .once = &.{
110901 .{ ._, ._, .mov, .tmp0d, .sia(-16, .src0, .add_unaligned_size), ._, ._ },
110902 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memi(.src0x, .tmp0), ._, ._ },
110903 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
110904 .{ ._, .v_dqa, .mov, .memi(.dst0x, .tmp0), .tmp1x, ._, ._ },
110905 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
110906 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
110907 } },
110908 }, .{
110909 .required_cc_abi = .sysv64,
110910 .required_features = .{ .sse2, null, null, null },
107371110911 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },
107372110912 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any },
107373110913 .patterns = &.{
......@@ -107375,11 +110915,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
107375110915 },
107376110916 .call_frame = .{ .alignment = .@"16" },
107377110917 .extra_temps = .{
107378 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
107379 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
110918 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
110919 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
107380110920 .{ .type = .usize, .kind = .{ .extern_func = "__fixtfti" } },
107381 .{ .type = .u64, .kind = .{ .reg = .rax } },
107382 .{ .type = .i64, .kind = .{ .reg = .rdx } },
110921 .{ .type = .i128, .kind = .{ .ret_gpr_pair = .{ .cc = .ccc, .after = 0, .at = 0 } } },
110922 .unused,
107383110923 .unused,
107384110924 .unused,
107385110925 .unused,
......@@ -107390,16 +110930,49 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
107390110930 .dst_temps = .{ .mem, .unused },
107391110931 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
107392110932 .each = .{ .once = &.{
107393 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
107394 .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
110933 .{ ._, ._, .mov, .tmp0d, .sia(-16, .src0, .add_unaligned_size), ._, ._ },
110934 .{ .@"0:", ._dqa, .mov, .tmp1x, .memi(.src0x, .tmp0), ._, ._ },
107395110935 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
107396 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },
107397 .{ ._, ._, .mov, .memiad(.dst0q, .tmp0, .add_unaligned_size, 8), .tmp4q, ._, ._ },
107398 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
107399 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
110936 .{ ._, ._, .mov, .memi(.dst0q, .tmp0), .tmp3q0, ._, ._ },
110937 .{ ._, ._, .mov, .memid(.dst0q, .tmp0, 8), .tmp3q1, ._, ._ },
110938 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
110939 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
107400110940 } },
107401110941 }, .{
107402 .required_features = .{ .@"64bit", .sse2, null, null },
110942 .required_cc_abi = .win64,
110943 .required_features = .{ .sse2, null, null, null },
110944 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },
110945 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any },
110946 .patterns = &.{
110947 .{ .src = .{ .to_mem, .none, .none } },
110948 },
110949 .call_frame = .{ .alignment = .@"16" },
110950 .extra_temps = .{
110951 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
110952 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
110953 .{ .type = .usize, .kind = .{ .extern_func = "__fixtfti" } },
110954 .unused,
110955 .unused,
110956 .unused,
110957 .unused,
110958 .unused,
110959 .unused,
110960 .unused,
110961 .unused,
110962 },
110963 .dst_temps = .{ .mem, .unused },
110964 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
110965 .each = .{ .once = &.{
110966 .{ ._, ._, .mov, .tmp0d, .sia(-16, .src0, .add_unaligned_size), ._, ._ },
110967 .{ .@"0:", ._dqa, .mov, .tmp1x, .memi(.src0x, .tmp0), ._, ._ },
110968 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
110969 .{ ._, ._dqa, .mov, .memi(.dst0x, .tmp0), .tmp1x, ._, ._ },
110970 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
110971 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
110972 } },
110973 }, .{
110974 .required_cc_abi = .sysv64,
110975 .required_features = .{ .sse2, null, null, null },
107403110976 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },
107404110977 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any },
107405110978 .patterns = &.{
......@@ -107407,11 +110980,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
107407110980 },
107408110981 .call_frame = .{ .alignment = .@"16" },
107409110982 .extra_temps = .{
107410 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
107411 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
110983 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
110984 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
107412110985 .{ .type = .usize, .kind = .{ .extern_func = "__fixunstfti" } },
107413 .{ .type = .u64, .kind = .{ .reg = .rax } },
107414 .{ .type = .u64, .kind = .{ .reg = .rdx } },
110986 .{ .type = .u128, .kind = .{ .ret_gpr_pair = .{ .cc = .ccc, .after = 0, .at = 0 } } },
110987 .unused,
107415110988 .unused,
107416110989 .unused,
107417110990 .unused,
......@@ -107422,16 +110995,49 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
107422110995 .dst_temps = .{ .mem, .unused },
107423110996 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
107424110997 .each = .{ .once = &.{
107425 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
107426 .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
110998 .{ ._, ._, .mov, .tmp0d, .sia(-16, .src0, .add_unaligned_size), ._, ._ },
110999 .{ .@"0:", ._dqa, .mov, .tmp1x, .memi(.src0x, .tmp0), ._, ._ },
107427111000 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
107428 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },
107429 .{ ._, ._, .mov, .memiad(.dst0q, .tmp0, .add_unaligned_size, 8), .tmp4q, ._, ._ },
107430 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
107431 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
111001 .{ ._, ._, .mov, .memi(.dst0q, .tmp0), .tmp3q0, ._, ._ },
111002 .{ ._, ._, .mov, .memid(.dst0q, .tmp0, 8), .tmp3q1, ._, ._ },
111003 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
111004 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
107432111005 } },
107433111006 }, .{
107434 .required_features = .{ .@"64bit", .sse, null, null },
111007 .required_cc_abi = .win64,
111008 .required_features = .{ .sse2, null, null, null },
111009 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },
111010 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any },
111011 .patterns = &.{
111012 .{ .src = .{ .to_mem, .none, .none } },
111013 },
111014 .call_frame = .{ .alignment = .@"16" },
111015 .extra_temps = .{
111016 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
111017 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
111018 .{ .type = .usize, .kind = .{ .extern_func = "__fixunstfti" } },
111019 .unused,
111020 .unused,
111021 .unused,
111022 .unused,
111023 .unused,
111024 .unused,
111025 .unused,
111026 .unused,
111027 },
111028 .dst_temps = .{ .mem, .unused },
111029 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
111030 .each = .{ .once = &.{
111031 .{ ._, ._, .mov, .tmp0d, .sia(-16, .src0, .add_unaligned_size), ._, ._ },
111032 .{ .@"0:", ._dqa, .mov, .tmp1x, .memi(.src0x, .tmp0), ._, ._ },
111033 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
111034 .{ ._, ._dqa, .mov, .memi(.dst0x, .tmp0), .tmp1x, ._, ._ },
111035 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
111036 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
111037 } },
111038 }, .{
111039 .required_cc_abi = .sysv64,
111040 .required_features = .{ .sse, null, null, null },
107435111041 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },
107436111042 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any },
107437111043 .patterns = &.{
......@@ -107439,11 +111045,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
107439111045 },
107440111046 .call_frame = .{ .alignment = .@"16" },
107441111047 .extra_temps = .{
107442 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
107443 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
111048 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
111049 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
107444111050 .{ .type = .usize, .kind = .{ .extern_func = "__fixtfti" } },
107445 .{ .type = .u64, .kind = .{ .reg = .rax } },
107446 .{ .type = .i64, .kind = .{ .reg = .rdx } },
111051 .{ .type = .i128, .kind = .{ .ret_gpr_pair = .{ .cc = .ccc, .after = 0, .at = 0 } } },
111052 .unused,
107447111053 .unused,
107448111054 .unused,
107449111055 .unused,
......@@ -107454,16 +111060,49 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
107454111060 .dst_temps = .{ .mem, .unused },
107455111061 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
107456111062 .each = .{ .once = &.{
107457 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
107458 .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
111063 .{ ._, ._, .mov, .tmp0d, .sia(-16, .src0, .add_unaligned_size), ._, ._ },
111064 .{ .@"0:", ._ps, .mova, .tmp1x, .memi(.src0x, .tmp0), ._, ._ },
107459111065 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
107460 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },
107461 .{ ._, ._, .mov, .memiad(.dst0q, .tmp0, .add_unaligned_size, 8), .tmp4q, ._, ._ },
107462 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
107463 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
111066 .{ ._, ._, .mov, .memi(.dst0q, .tmp0), .tmp3q0, ._, ._ },
111067 .{ ._, ._, .mov, .memid(.dst0q, .tmp0, 8), .tmp3q1, ._, ._ },
111068 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
111069 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
107464111070 } },
107465111071 }, .{
107466 .required_features = .{ .@"64bit", .sse, null, null },
111072 .required_cc_abi = .win64,
111073 .required_features = .{ .sse, null, null, null },
111074 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },
111075 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any },
111076 .patterns = &.{
111077 .{ .src = .{ .to_mem, .none, .none } },
111078 },
111079 .call_frame = .{ .alignment = .@"16" },
111080 .extra_temps = .{
111081 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
111082 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
111083 .{ .type = .usize, .kind = .{ .extern_func = "__fixtfti" } },
111084 .unused,
111085 .unused,
111086 .unused,
111087 .unused,
111088 .unused,
111089 .unused,
111090 .unused,
111091 .unused,
111092 },
111093 .dst_temps = .{ .mem, .unused },
111094 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
111095 .each = .{ .once = &.{
111096 .{ ._, ._, .mov, .tmp0d, .sia(-16, .src0, .add_unaligned_size), ._, ._ },
111097 .{ .@"0:", ._ps, .mova, .tmp1x, .memi(.src0x, .tmp0), ._, ._ },
111098 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
111099 .{ ._, ._ps, .mova, .memi(.dst0x, .tmp0), .tmp1x, ._, ._ },
111100 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
111101 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
111102 } },
111103 }, .{
111104 .required_cc_abi = .sysv64,
111105 .required_features = .{ .sse, null, null, null },
107467111106 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },
107468111107 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any },
107469111108 .patterns = &.{
......@@ -107471,11 +111110,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
107471111110 },
107472111111 .call_frame = .{ .alignment = .@"16" },
107473111112 .extra_temps = .{
107474 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
107475 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
111113 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
111114 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
107476111115 .{ .type = .usize, .kind = .{ .extern_func = "__fixunstfti" } },
107477 .{ .type = .u64, .kind = .{ .reg = .rax } },
107478 .{ .type = .u64, .kind = .{ .reg = .rdx } },
111116 .{ .type = .u128, .kind = .{ .ret_gpr_pair = .{ .cc = .ccc, .after = 0, .at = 0 } } },
111117 .unused,
107479111118 .unused,
107480111119 .unused,
107481111120 .unused,
......@@ -107486,25 +111125,57 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
107486111125 .dst_temps = .{ .mem, .unused },
107487111126 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
107488111127 .each = .{ .once = &.{
107489 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
107490 .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
111128 .{ ._, ._, .mov, .tmp0d, .sia(-16, .src0, .add_unaligned_size), ._, ._ },
111129 .{ .@"0:", ._ps, .mova, .tmp1x, .memi(.src0x, .tmp0), ._, ._ },
107491111130 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
107492 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },
107493 .{ ._, ._, .mov, .memiad(.dst0q, .tmp0, .add_unaligned_size, 8), .tmp4q, ._, ._ },
107494 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
107495 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
111131 .{ ._, ._, .mov, .memi(.dst0q, .tmp0), .tmp3q0, ._, ._ },
111132 .{ ._, ._, .mov, .memid(.dst0q, .tmp0, 8), .tmp3q1, ._, ._ },
111133 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
111134 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
111135 } },
111136 }, .{
111137 .required_cc_abi = .win64,
111138 .required_features = .{ .sse, null, null, null },
111139 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },
111140 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any },
111141 .patterns = &.{
111142 .{ .src = .{ .to_mem, .none, .none } },
111143 },
111144 .call_frame = .{ .alignment = .@"16" },
111145 .extra_temps = .{
111146 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
111147 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
111148 .{ .type = .usize, .kind = .{ .extern_func = "__fixunstfti" } },
111149 .unused,
111150 .unused,
111151 .unused,
111152 .unused,
111153 .unused,
111154 .unused,
111155 .unused,
111156 .unused,
111157 },
111158 .dst_temps = .{ .mem, .unused },
111159 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
111160 .each = .{ .once = &.{
111161 .{ ._, ._, .mov, .tmp0d, .sia(-16, .src0, .add_unaligned_size), ._, ._ },
111162 .{ .@"0:", ._ps, .mova, .tmp1x, .memi(.src0x, .tmp0), ._, ._ },
111163 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
111164 .{ ._, ._ps, .mova, .memi(.dst0x, .tmp0), .tmp1x, ._, ._ },
111165 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
111166 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
107496111167 } },
107497111168 }, .{
107498111169 .required_features = .{ .@"64bit", .sse, null, null },
107499111170 .src_constraints = .{ .{ .float = .xword }, .any, .any },
107500111171 .dst_constraints = .{ .{ .remainder_signed_int = .{ .of = .dword, .is = .dword } }, .any },
107501111172 .patterns = &.{
107502 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },
111173 .{ .src = .{ .{ .to_param_sse = .{ .cc = .ccc, .after = 0, .at = 2 } }, .none, .none } },
107503111174 },
107504111175 .call_frame = .{ .alignment = .@"16" },
107505111176 .extra_temps = .{
107506 .{ .type = .usize, .kind = .{ .reg = .rdi } },
107507 .{ .type = .usize, .kind = .{ .reg = .rsi } },
111177 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
111178 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
107508111179 .{ .type = .usize, .kind = .{ .extern_func = "__fixtfei" } },
107509111180 .unused,
107510111181 .unused,
......@@ -107527,12 +111198,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
107527111198 .src_constraints = .{ .{ .float = .xword }, .any, .any },
107528111199 .dst_constraints = .{ .{ .remainder_unsigned_int = .{ .of = .dword, .is = .dword } }, .any },
107529111200 .patterns = &.{
107530 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },
111201 .{ .src = .{ .{ .to_param_sse = .{ .cc = .ccc, .after = 0, .at = 2 } }, .none, .none } },
107531111202 },
107532111203 .call_frame = .{ .alignment = .@"16" },
107533111204 .extra_temps = .{
107534 .{ .type = .usize, .kind = .{ .reg = .rdi } },
107535 .{ .type = .usize, .kind = .{ .reg = .rsi } },
111205 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
111206 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
107536111207 .{ .type = .usize, .kind = .{ .extern_func = "__fixunstfei" } },
107537111208 .unused,
107538111209 .unused,
......@@ -107559,11 +111230,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
107559111230 },
107560111231 .call_frame = .{ .alignment = .@"16" },
107561111232 .extra_temps = .{
107562 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
111233 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
107563111234 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
107564 .{ .type = .usize, .kind = .{ .reg = .rdi } },
107565 .{ .type = .usize, .kind = .{ .reg = .rsi } },
107566 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
111235 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
111236 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
111237 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 2 } } },
107567111238 .{ .type = .usize, .kind = .{ .extern_func = "__fixtfei" } },
107568111239 .unused,
107569111240 .unused,
......@@ -107574,15 +111245,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
107574111245 .dst_temps = .{ .mem, .unused },
107575111246 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
107576111247 .each = .{ .once = &.{
107577 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
107578 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
111248 .{ ._, ._, .mov, .tmp0d, .sia(-16, .src0, .add_unaligned_size), ._, ._ },
111249 .{ ._, ._, .lea, .tmp1p, .mema(.dst0, .add_unaligned_size_sub_elem_size), ._, ._ },
107579111250 .{ .@"0:", ._, .mov, .tmp2p, .tmp1p, ._, ._ },
107580111251 .{ ._, ._, .mov, .tmp3d, .sa(.dst0, .add_bit_size), ._, ._ },
107581 .{ ._, .v_dqa, .mov, .tmp4x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
111252 .{ ._, .v_dqa, .mov, .tmp4x, .memi(.src0x, .tmp0), ._, ._ },
107582111253 .{ ._, ._, .call, .tmp5d, ._, ._, ._ },
107583 .{ ._, ._, .lea, .tmp1p, .leaa(.tmp1, .add_dst0_elem_size), ._, ._ },
107584 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
107585 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
111254 .{ ._, ._, .lea, .tmp1p, .leaa(.tmp1, .sub_dst0_elem_size), ._, ._ },
111255 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
111256 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
107586111257 } },
107587111258 }, .{
107588111259 .required_features = .{ .@"64bit", .avx, null, null },
......@@ -107593,11 +111264,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
107593111264 },
107594111265 .call_frame = .{ .alignment = .@"16" },
107595111266 .extra_temps = .{
107596 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
111267 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
107597111268 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
107598 .{ .type = .usize, .kind = .{ .reg = .rdi } },
107599 .{ .type = .usize, .kind = .{ .reg = .rsi } },
107600 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
111269 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
111270 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
111271 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 2 } } },
107601111272 .{ .type = .usize, .kind = .{ .extern_func = "__fixunstfei" } },
107602111273 .unused,
107603111274 .unused,
......@@ -107608,15 +111279,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
107608111279 .dst_temps = .{ .mem, .unused },
107609111280 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
107610111281 .each = .{ .once = &.{
107611 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
107612 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
111282 .{ ._, ._, .mov, .tmp0d, .sia(-16, .src0, .add_unaligned_size), ._, ._ },
111283 .{ ._, ._, .lea, .tmp1p, .mema(.dst0, .add_unaligned_size_sub_elem_size), ._, ._ },
107613111284 .{ .@"0:", ._, .mov, .tmp2p, .tmp1p, ._, ._ },
107614111285 .{ ._, ._, .mov, .tmp3d, .sa(.dst0, .add_bit_size), ._, ._ },
107615 .{ ._, .v_dqa, .mov, .tmp4x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
111286 .{ ._, .v_dqa, .mov, .tmp4x, .memi(.src0x, .tmp0), ._, ._ },
107616111287 .{ ._, ._, .call, .tmp5d, ._, ._, ._ },
107617 .{ ._, ._, .lea, .tmp1p, .leaa(.tmp1, .add_dst0_elem_size), ._, ._ },
107618 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
107619 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
111288 .{ ._, ._, .lea, .tmp1p, .leaa(.tmp1, .sub_dst0_elem_size), ._, ._ },
111289 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
111290 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
107620111291 } },
107621111292 }, .{
107622111293 .required_features = .{ .@"64bit", .sse2, null, null },
......@@ -107627,11 +111298,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
107627111298 },
107628111299 .call_frame = .{ .alignment = .@"16" },
107629111300 .extra_temps = .{
107630 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
111301 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
107631111302 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
107632 .{ .type = .usize, .kind = .{ .reg = .rdi } },
107633 .{ .type = .usize, .kind = .{ .reg = .rsi } },
107634 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
111303 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
111304 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
111305 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 2 } } },
107635111306 .{ .type = .usize, .kind = .{ .extern_func = "__fixtfei" } },
107636111307 .unused,
107637111308 .unused,
......@@ -107642,15 +111313,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
107642111313 .dst_temps = .{ .mem, .unused },
107643111314 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
107644111315 .each = .{ .once = &.{
107645 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
107646 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
111316 .{ ._, ._, .mov, .tmp0d, .sia(-16, .src0, .add_unaligned_size), ._, ._ },
111317 .{ ._, ._, .lea, .tmp1p, .mema(.dst0, .add_unaligned_size_sub_elem_size), ._, ._ },
107647111318 .{ .@"0:", ._, .mov, .tmp2p, .tmp1p, ._, ._ },
107648111319 .{ ._, ._, .mov, .tmp3d, .sa(.dst0, .add_bit_size), ._, ._ },
107649 .{ ._, ._dqa, .mov, .tmp4x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
111320 .{ ._, ._dqa, .mov, .tmp4x, .memi(.src0x, .tmp0), ._, ._ },
107650111321 .{ ._, ._, .call, .tmp5d, ._, ._, ._ },
107651 .{ ._, ._, .lea, .tmp1p, .leaa(.tmp1, .add_dst0_elem_size), ._, ._ },
107652 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
107653 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
111322 .{ ._, ._, .lea, .tmp1p, .leaa(.tmp1, .sub_dst0_elem_size), ._, ._ },
111323 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
111324 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
107654111325 } },
107655111326 }, .{
107656111327 .required_features = .{ .@"64bit", .sse2, null, null },
......@@ -107661,11 +111332,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
107661111332 },
107662111333 .call_frame = .{ .alignment = .@"16" },
107663111334 .extra_temps = .{
107664 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
111335 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
107665111336 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
107666 .{ .type = .usize, .kind = .{ .reg = .rdi } },
107667 .{ .type = .usize, .kind = .{ .reg = .rsi } },
107668 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
111337 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
111338 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
111339 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 2 } } },
107669111340 .{ .type = .usize, .kind = .{ .extern_func = "__fixunstfei" } },
107670111341 .unused,
107671111342 .unused,
......@@ -107676,15 +111347,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
107676111347 .dst_temps = .{ .mem, .unused },
107677111348 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
107678111349 .each = .{ .once = &.{
107679 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
107680 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
111350 .{ ._, ._, .mov, .tmp0d, .sia(-16, .src0, .add_unaligned_size), ._, ._ },
111351 .{ ._, ._, .lea, .tmp1p, .mema(.dst0, .add_unaligned_size_sub_elem_size), ._, ._ },
107681111352 .{ .@"0:", ._, .mov, .tmp2p, .tmp1p, ._, ._ },
107682111353 .{ ._, ._, .mov, .tmp3d, .sa(.dst0, .add_bit_size), ._, ._ },
107683 .{ ._, ._dqa, .mov, .tmp4x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
111354 .{ ._, ._dqa, .mov, .tmp4x, .memi(.src0x, .tmp0), ._, ._ },
107684111355 .{ ._, ._, .call, .tmp5d, ._, ._, ._ },
107685 .{ ._, ._, .lea, .tmp1p, .leaa(.tmp1, .add_dst0_elem_size), ._, ._ },
107686 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
107687 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
111356 .{ ._, ._, .lea, .tmp1p, .leaa(.tmp1, .sub_dst0_elem_size), ._, ._ },
111357 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
111358 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
107688111359 } },
107689111360 }, .{
107690111361 .required_features = .{ .@"64bit", .sse, null, null },
......@@ -107695,11 +111366,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
107695111366 },
107696111367 .call_frame = .{ .alignment = .@"16" },
107697111368 .extra_temps = .{
107698 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
111369 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
107699111370 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
107700 .{ .type = .usize, .kind = .{ .reg = .rdi } },
107701 .{ .type = .usize, .kind = .{ .reg = .rsi } },
107702 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
111371 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
111372 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
111373 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 2 } } },
107703111374 .{ .type = .usize, .kind = .{ .extern_func = "__fixtfei" } },
107704111375 .unused,
107705111376 .unused,
......@@ -107710,15 +111381,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
107710111381 .dst_temps = .{ .mem, .unused },
107711111382 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
107712111383 .each = .{ .once = &.{
107713 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
107714 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
111384 .{ ._, ._, .mov, .tmp0d, .sia(-16, .src0, .add_unaligned_size), ._, ._ },
111385 .{ ._, ._, .lea, .tmp1p, .mema(.dst0, .add_unaligned_size_sub_elem_size), ._, ._ },
107715111386 .{ .@"0:", ._, .mov, .tmp2p, .tmp1p, ._, ._ },
107716111387 .{ ._, ._, .mov, .tmp3d, .sa(.dst0, .add_bit_size), ._, ._ },
107717 .{ ._, ._ps, .mova, .tmp4x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
111388 .{ ._, ._ps, .mova, .tmp4x, .memi(.src0x, .tmp0), ._, ._ },
107718111389 .{ ._, ._, .call, .tmp5d, ._, ._, ._ },
107719 .{ ._, ._, .lea, .tmp1p, .leaa(.tmp1, .add_dst0_elem_size), ._, ._ },
107720 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
107721 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
111390 .{ ._, ._, .lea, .tmp1p, .leaa(.tmp1, .sub_dst0_elem_size), ._, ._ },
111391 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
111392 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
107722111393 } },
107723111394 }, .{
107724111395 .required_features = .{ .@"64bit", .sse, null, null },
......@@ -107729,11 +111400,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
107729111400 },
107730111401 .call_frame = .{ .alignment = .@"16" },
107731111402 .extra_temps = .{
107732 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
111403 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
107733111404 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
107734 .{ .type = .usize, .kind = .{ .reg = .rdi } },
107735 .{ .type = .usize, .kind = .{ .reg = .rsi } },
107736 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
111405 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
111406 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
111407 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 2 } } },
107737111408 .{ .type = .usize, .kind = .{ .extern_func = "__fixunstfei" } },
107738111409 .unused,
107739111410 .unused,
......@@ -107744,15 +111415,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
107744111415 .dst_temps = .{ .mem, .unused },
107745111416 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
107746111417 .each = .{ .once = &.{
107747 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
107748 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
111418 .{ ._, ._, .mov, .tmp0d, .sia(-16, .src0, .add_unaligned_size), ._, ._ },
111419 .{ ._, ._, .lea, .tmp1p, .mema(.dst0, .add_unaligned_size_sub_elem_size), ._, ._ },
107749111420 .{ .@"0:", ._, .mov, .tmp2p, .tmp1p, ._, ._ },
107750111421 .{ ._, ._, .mov, .tmp3d, .sa(.dst0, .add_bit_size), ._, ._ },
107751 .{ ._, ._ps, .mova, .tmp4x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
111422 .{ ._, ._ps, .mova, .tmp4x, .memi(.src0x, .tmp0), ._, ._ },
107752111423 .{ ._, ._, .call, .tmp5d, ._, ._, ._ },
107753 .{ ._, ._, .lea, .tmp1p, .leaa(.tmp1, .add_dst0_elem_size), ._, ._ },
107754 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
107755 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
111424 .{ ._, ._, .lea, .tmp1p, .leaa(.tmp1, .sub_dst0_elem_size), ._, ._ },
111425 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
111426 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
107756111427 } },
107757111428 } }) catch |err| switch (err) {
107758111429 error.SelectFailed => return cg.fail("failed to select {s} {} {} {}", .{
......@@ -107767,7 +111438,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
107767111438 },
107768111439 .int_from_float_safe => unreachable,
107769111440 .int_from_float_optimized_safe => unreachable,
107770 .float_from_int => |air_tag| if (use_old) try cg.airFloatFromInt(inst) else {
111441 .float_from_int => |air_tag| {
107771111442 const ty_op = air_datas[@intFromEnum(inst)].ty_op;
107772111443 var ops = try cg.tempsFromOperands(inst, .{ty_op.operand});
107773111444 var res: [1]Temp = undefined;
......@@ -107980,7 +111651,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
107980111651 .src_constraints = .{ .{ .signed_int = .byte }, .any, .any },
107981111652 .dst_constraints = .{ .{ .float = .word }, .any },
107982111653 .patterns = &.{
107983 .{ .src = .{ .{ .to_reg = .dil }, .none, .none } },
111654 .{ .src = .{ .{ .to_param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } }, .none, .none } },
107984111655 },
107985111656 .call_frame = .{ .alignment = .@"16" },
107986111657 .extra_temps = .{
......@@ -107996,7 +111667,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
107996111667 .unused,
107997111668 .unused,
107998111669 },
107999 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },
111670 .dst_temps = .{ .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
108000111671 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
108001111672 .each = .{ .once = &.{
108002111673 .{ ._, ._, .movsx, .src0d, .src0b, ._, ._ },
......@@ -108007,7 +111678,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108007111678 .src_constraints = .{ .{ .unsigned_int = .byte }, .any, .any },
108008111679 .dst_constraints = .{ .{ .float = .word }, .any },
108009111680 .patterns = &.{
108010 .{ .src = .{ .{ .to_reg = .dil }, .none, .none } },
111681 .{ .src = .{ .{ .to_param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } }, .none, .none } },
108011111682 },
108012111683 .call_frame = .{ .alignment = .@"16" },
108013111684 .extra_temps = .{
......@@ -108023,7 +111694,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108023111694 .unused,
108024111695 .unused,
108025111696 },
108026 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },
111697 .dst_temps = .{ .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
108027111698 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
108028111699 .each = .{ .once = &.{
108029111700 .{ ._, ._, .movzx, .src0d, .src0b, ._, ._ },
......@@ -108034,7 +111705,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108034111705 .src_constraints = .{ .{ .signed_int = .word }, .any, .any },
108035111706 .dst_constraints = .{ .{ .float = .word }, .any },
108036111707 .patterns = &.{
108037 .{ .src = .{ .{ .to_reg = .di }, .none, .none } },
111708 .{ .src = .{ .{ .to_param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } }, .none, .none } },
108038111709 },
108039111710 .call_frame = .{ .alignment = .@"16" },
108040111711 .extra_temps = .{
......@@ -108050,7 +111721,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108050111721 .unused,
108051111722 .unused,
108052111723 },
108053 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },
111724 .dst_temps = .{ .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
108054111725 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
108055111726 .each = .{ .once = &.{
108056111727 .{ ._, ._, .movsx, .src0d, .src0w, ._, ._ },
......@@ -108061,7 +111732,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108061111732 .src_constraints = .{ .{ .unsigned_int = .word }, .any, .any },
108062111733 .dst_constraints = .{ .{ .float = .word }, .any },
108063111734 .patterns = &.{
108064 .{ .src = .{ .{ .to_reg = .di }, .none, .none } },
111735 .{ .src = .{ .{ .to_param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } }, .none, .none } },
108065111736 },
108066111737 .call_frame = .{ .alignment = .@"16" },
108067111738 .extra_temps = .{
......@@ -108077,7 +111748,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108077111748 .unused,
108078111749 .unused,
108079111750 },
108080 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },
111751 .dst_temps = .{ .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
108081111752 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
108082111753 .each = .{ .once = &.{
108083111754 .{ ._, ._, .movzx, .src0d, .src0w, ._, ._ },
......@@ -108088,7 +111759,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108088111759 .src_constraints = .{ .{ .signed_int = .dword }, .any, .any },
108089111760 .dst_constraints = .{ .{ .float = .word }, .any },
108090111761 .patterns = &.{
108091 .{ .src = .{ .{ .to_reg = .edi }, .none, .none } },
111762 .{ .src = .{ .{ .to_param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } }, .none, .none } },
108092111763 },
108093111764 .call_frame = .{ .alignment = .@"16" },
108094111765 .extra_temps = .{
......@@ -108104,7 +111775,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108104111775 .unused,
108105111776 .unused,
108106111777 },
108107 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },
111778 .dst_temps = .{ .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
108108111779 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
108109111780 .each = .{ .once = &.{
108110111781 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
......@@ -108114,7 +111785,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108114111785 .src_constraints = .{ .{ .unsigned_int = .dword }, .any, .any },
108115111786 .dst_constraints = .{ .{ .float = .word }, .any },
108116111787 .patterns = &.{
108117 .{ .src = .{ .{ .to_reg = .edi }, .none, .none } },
111788 .{ .src = .{ .{ .to_param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } }, .none, .none } },
108118111789 },
108119111790 .call_frame = .{ .alignment = .@"16" },
108120111791 .extra_temps = .{
......@@ -108130,7 +111801,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108130111801 .unused,
108131111802 .unused,
108132111803 },
108133 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },
111804 .dst_temps = .{ .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
108134111805 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
108135111806 .each = .{ .once = &.{
108136111807 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
......@@ -108140,7 +111811,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108140111811 .src_constraints = .{ .{ .signed_int = .qword }, .any, .any },
108141111812 .dst_constraints = .{ .{ .float = .word }, .any },
108142111813 .patterns = &.{
108143 .{ .src = .{ .{ .to_reg = .rdi }, .none, .none } },
111814 .{ .src = .{ .{ .to_param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } }, .none, .none } },
108144111815 },
108145111816 .call_frame = .{ .alignment = .@"16" },
108146111817 .extra_temps = .{
......@@ -108156,7 +111827,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108156111827 .unused,
108157111828 .unused,
108158111829 },
108159 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },
111830 .dst_temps = .{ .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
108160111831 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
108161111832 .each = .{ .once = &.{
108162111833 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
......@@ -108166,7 +111837,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108166111837 .src_constraints = .{ .{ .unsigned_int = .qword }, .any, .any },
108167111838 .dst_constraints = .{ .{ .float = .word }, .any },
108168111839 .patterns = &.{
108169 .{ .src = .{ .{ .to_reg = .rdi }, .none, .none } },
111840 .{ .src = .{ .{ .to_param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } }, .none, .none } },
108170111841 },
108171111842 .call_frame = .{ .alignment = .@"16" },
108172111843 .extra_temps = .{
......@@ -108182,17 +111853,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108182111853 .unused,
108183111854 .unused,
108184111855 },
108185 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },
111856 .dst_temps = .{ .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
108186111857 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
108187111858 .each = .{ .once = &.{
108188111859 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
108189111860 } },
108190111861 }, .{
108191 .required_features = .{ .@"64bit", .sse, null, null },
111862 .required_cc_abi = .sysv64,
111863 .required_features = .{ .sse, null, null, null },
108192111864 .src_constraints = .{ .{ .signed_int = .xword }, .any, .any },
108193111865 .dst_constraints = .{ .{ .float = .word }, .any },
108194111866 .patterns = &.{
108195 .{ .src = .{ .{ .to_reg_pair = .{ .rdi, .rsi } }, .none, .none } },
111867 .{ .src = .{ .{ .to_param_gpr_pair = .{ .cc = .ccc, .after = 0, .at = 0 } }, .none, .none } },
108196111868 },
108197111869 .call_frame = .{ .alignment = .@"16" },
108198111870 .extra_temps = .{
......@@ -108208,17 +111880,46 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108208111880 .unused,
108209111881 .unused,
108210111882 },
108211 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },
111883 .dst_temps = .{ .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
108212111884 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
108213111885 .each = .{ .once = &.{
108214111886 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
108215111887 } },
108216111888 }, .{
108217 .required_features = .{ .@"64bit", .sse, null, null },
111889 .required_cc_abi = .win64,
111890 .required_features = .{ .sse, null, null, null },
111891 .src_constraints = .{ .{ .signed_int = .xword }, .any, .any },
111892 .dst_constraints = .{ .{ .float = .word }, .any },
111893 .patterns = &.{
111894 .{ .src = .{ .to_mem, .none, .none } },
111895 },
111896 .call_frame = .{ .alignment = .@"16" },
111897 .extra_temps = .{
111898 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
111899 .{ .type = .usize, .kind = .{ .extern_func = "__floattihf" } },
111900 .unused,
111901 .unused,
111902 .unused,
111903 .unused,
111904 .unused,
111905 .unused,
111906 .unused,
111907 .unused,
111908 .unused,
111909 },
111910 .dst_temps = .{ .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
111911 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
111912 .each = .{ .once = &.{
111913 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
111914 .{ ._, ._, .call, .tmp1d, ._, ._, ._ },
111915 } },
111916 }, .{
111917 .required_cc_abi = .sysv64,
111918 .required_features = .{ .sse, null, null, null },
108218111919 .src_constraints = .{ .{ .unsigned_int = .xword }, .any, .any },
108219111920 .dst_constraints = .{ .{ .float = .word }, .any },
108220111921 .patterns = &.{
108221 .{ .src = .{ .{ .to_reg_pair = .{ .rdi, .rsi } }, .none, .none } },
111922 .{ .src = .{ .{ .to_param_gpr_pair = .{ .cc = .ccc, .after = 0, .at = 0 } }, .none, .none } },
108222111923 },
108223111924 .call_frame = .{ .alignment = .@"16" },
108224111925 .extra_temps = .{
......@@ -108234,11 +111935,39 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108234111935 .unused,
108235111936 .unused,
108236111937 },
108237 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },
111938 .dst_temps = .{ .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
108238111939 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
108239111940 .each = .{ .once = &.{
108240111941 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
108241111942 } },
111943 }, .{
111944 .required_cc_abi = .win64,
111945 .required_features = .{ .sse, null, null, null },
111946 .src_constraints = .{ .{ .unsigned_int = .xword }, .any, .any },
111947 .dst_constraints = .{ .{ .float = .word }, .any },
111948 .patterns = &.{
111949 .{ .src = .{ .to_mem, .none, .none } },
111950 },
111951 .call_frame = .{ .alignment = .@"16" },
111952 .extra_temps = .{
111953 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
111954 .{ .type = .usize, .kind = .{ .extern_func = "__floatuntihf" } },
111955 .unused,
111956 .unused,
111957 .unused,
111958 .unused,
111959 .unused,
111960 .unused,
111961 .unused,
111962 .unused,
111963 .unused,
111964 },
111965 .dst_temps = .{ .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
111966 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
111967 .each = .{ .once = &.{
111968 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
111969 .{ ._, ._, .call, .tmp1d, ._, ._, ._ },
111970 } },
108242111971 }, .{
108243111972 .required_features = .{ .@"64bit", .sse, null, null },
108244111973 .src_constraints = .{ .{ .remainder_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any },
......@@ -108248,8 +111977,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108248111977 },
108249111978 .call_frame = .{ .alignment = .@"16" },
108250111979 .extra_temps = .{
108251 .{ .type = .usize, .kind = .{ .reg = .rdi } },
108252 .{ .type = .usize, .kind = .{ .reg = .rsi } },
111980 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
111981 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
108253111982 .{ .type = .usize, .kind = .{ .extern_func = "__floateihf" } },
108254111983 .unused,
108255111984 .unused,
......@@ -108260,7 +111989,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108260111989 .unused,
108261111990 .unused,
108262111991 },
108263 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },
111992 .dst_temps = .{ .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
108264111993 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
108265111994 .each = .{ .once = &.{
108266111995 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
......@@ -108276,8 +112005,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108276112005 },
108277112006 .call_frame = .{ .alignment = .@"16" },
108278112007 .extra_temps = .{
108279 .{ .type = .usize, .kind = .{ .reg = .rdi } },
108280 .{ .type = .usize, .kind = .{ .reg = .rsi } },
112008 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
112009 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
108281112010 .{ .type = .usize, .kind = .{ .extern_func = "__floatuneihf" } },
108282112011 .unused,
108283112012 .unused,
......@@ -108288,7 +112017,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108288112017 .unused,
108289112018 .unused,
108290112019 },
108291 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },
112020 .dst_temps = .{ .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
108292112021 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
108293112022 .each = .{ .once = &.{
108294112023 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
......@@ -108359,7 +112088,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108359112088 .{ .src = .{ .to_mem, .none, .none } },
108360112089 },
108361112090 .extra_temps = .{
108362 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
112091 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
108363112092 .{ .type = .vector_8_i32, .kind = .{ .rc = .sse } },
108364112093 .unused,
108365112094 .unused,
......@@ -108374,12 +112103,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108374112103 .dst_temps = .{ .mem, .unused },
108375112104 .clobbers = .{ .eflags = true },
108376112105 .each = .{ .once = &.{
108377 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
108378 .{ .@"0:", .vp_d, .movsxb, .tmp1y, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
112106 .{ ._, ._, .mov, .tmp0d, .sia(-8, .src0, .add_size), ._, ._ },
112107 .{ .@"0:", .vp_d, .movsxb, .tmp1y, .memi(.src0q, .tmp0), ._, ._ },
108379112108 .{ ._, .v_ps, .cvtdq2, .tmp1y, .tmp1y, ._, ._ },
108380 .{ ._, .v_, .cvtps2ph, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp1y, .rm(.{}), ._ },
108381 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
108382 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
112109 .{ ._, .v_, .cvtps2ph, .memsi(.dst0x, .@"2", .tmp0), .tmp1y, .rm(.{}), ._ },
112110 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
112111 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
108383112112 } },
108384112113 }, .{
108385112114 .required_features = .{ .f16c, null, null, null },
......@@ -108389,7 +112118,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108389112118 .{ .src = .{ .to_mem, .none, .none } },
108390112119 },
108391112120 .extra_temps = .{
108392 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
112121 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
108393112122 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },
108394112123 .unused,
108395112124 .unused,
......@@ -108404,12 +112133,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108404112133 .dst_temps = .{ .mem, .unused },
108405112134 .clobbers = .{ .eflags = true },
108406112135 .each = .{ .once = &.{
108407 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
108408 .{ .@"0:", .vp_d, .movsxb, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
112136 .{ ._, ._, .mov, .tmp0d, .sia(-4, .src0, .add_size), ._, ._ },
112137 .{ .@"0:", .vp_d, .movsxb, .tmp1x, .memi(.src0d, .tmp0), ._, ._ },
108409112138 .{ ._, .v_ps, .cvtdq2, .tmp1x, .tmp1x, ._, ._ },
108410 .{ ._, .v_, .cvtps2ph, .memsia(.dst0q, .@"2", .tmp0, .add_unaligned_size), .tmp1x, .rm(.{}), ._ },
108411 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
108412 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
112139 .{ ._, .v_, .cvtps2ph, .memsi(.dst0q, .@"2", .tmp0), .tmp1x, .rm(.{}), ._ },
112140 .{ ._, ._, .sub, .tmp0d, .si(4), ._, ._ },
112141 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
108413112142 } },
108414112143 }, .{
108415112144 .required_features = .{ .f16c, .avx2, null, null },
......@@ -108419,7 +112148,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108419112148 .{ .src = .{ .to_mem, .none, .none } },
108420112149 },
108421112150 .extra_temps = .{
108422 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
112151 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
108423112152 .{ .type = .vector_8_i32, .kind = .{ .rc = .sse } },
108424112153 .unused,
108425112154 .unused,
......@@ -108434,12 +112163,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108434112163 .dst_temps = .{ .mem, .unused },
108435112164 .clobbers = .{ .eflags = true },
108436112165 .each = .{ .once = &.{
108437 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
108438 .{ .@"0:", .vp_d, .movzxb, .tmp1y, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
112166 .{ ._, ._, .mov, .tmp0d, .sia(-8, .src0, .add_size), ._, ._ },
112167 .{ .@"0:", .vp_d, .movzxb, .tmp1y, .memi(.src0q, .tmp0), ._, ._ },
108439112168 .{ ._, .v_ps, .cvtdq2, .tmp1y, .tmp1y, ._, ._ },
108440 .{ ._, .v_, .cvtps2ph, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp1y, .rm(.{}), ._ },
108441 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
108442 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
112169 .{ ._, .v_, .cvtps2ph, .memsi(.dst0x, .@"2", .tmp0), .tmp1y, .rm(.{}), ._ },
112170 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
112171 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
108443112172 } },
108444112173 }, .{
108445112174 .required_features = .{ .f16c, null, null, null },
......@@ -108449,7 +112178,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108449112178 .{ .src = .{ .to_mem, .none, .none } },
108450112179 },
108451112180 .extra_temps = .{
108452 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
112181 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
108453112182 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },
108454112183 .unused,
108455112184 .unused,
......@@ -108464,12 +112193,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108464112193 .dst_temps = .{ .mem, .unused },
108465112194 .clobbers = .{ .eflags = true },
108466112195 .each = .{ .once = &.{
108467 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
108468 .{ .@"0:", .vp_d, .movzxb, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
112196 .{ ._, ._, .mov, .tmp0d, .sia(-4, .src0, .add_size), ._, ._ },
112197 .{ .@"0:", .vp_d, .movzxb, .tmp1x, .memi(.src0d, .tmp0), ._, ._ },
108469112198 .{ ._, .v_ps, .cvtdq2, .tmp1x, .tmp1x, ._, ._ },
108470 .{ ._, .v_, .cvtps2ph, .memsia(.dst0q, .@"2", .tmp0, .add_unaligned_size), .tmp1x, .rm(.{}), ._ },
108471 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
108472 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
112199 .{ ._, .v_, .cvtps2ph, .memsi(.dst0q, .@"2", .tmp0), .tmp1x, .rm(.{}), ._ },
112200 .{ ._, ._, .sub, .tmp0d, .si(4), ._, ._ },
112201 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
108473112202 } },
108474112203 }, .{
108475112204 .required_features = .{ .avx, .slow_incdec, null, null },
......@@ -108480,10 +112209,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108480112209 },
108481112210 .call_frame = .{ .alignment = .@"16" },
108482112211 .extra_temps = .{
108483 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
108484 .{ .type = .i32, .kind = .{ .reg = .edi } },
112212 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
112213 .{ .type = .i32, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
108485112214 .{ .type = .usize, .kind = .{ .extern_func = "__floatsihf" } },
108486 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
112215 .{ .type = .f16, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
108487112216 .unused,
108488112217 .unused,
108489112218 .unused,
......@@ -108495,12 +112224,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108495112224 .dst_temps = .{ .mem, .unused },
108496112225 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
108497112226 .each = .{ .once = &.{
108498 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
108499 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
112227 .{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_unaligned_size), ._, ._ },
112228 .{ .@"0:", ._, .movsx, .tmp1d, .memi(.src0b, .tmp0), ._, ._ },
108500112229 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
108501 .{ ._, .vp_w, .extr, .memsia(.dst0w, .@"2", .tmp0, .add_unaligned_size), .tmp3x, .ui(0), ._ },
108502 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
108503 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
112230 .{ ._, .vp_w, .extr, .memsi(.dst0w, .@"2", .tmp0), .tmp3x, .ui(0), ._ },
112231 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
112232 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
108504112233 } },
108505112234 }, .{
108506112235 .required_features = .{ .avx, null, null, null },
......@@ -108511,10 +112240,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108511112240 },
108512112241 .call_frame = .{ .alignment = .@"16" },
108513112242 .extra_temps = .{
108514 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
108515 .{ .type = .i32, .kind = .{ .reg = .edi } },
112243 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
112244 .{ .type = .i32, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
108516112245 .{ .type = .usize, .kind = .{ .extern_func = "__floatsihf" } },
108517 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
112246 .{ .type = .f16, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
108518112247 .unused,
108519112248 .unused,
108520112249 .unused,
......@@ -108526,12 +112255,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108526112255 .dst_temps = .{ .mem, .unused },
108527112256 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
108528112257 .each = .{ .once = &.{
108529 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
108530 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
112258 .{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_unaligned_size), ._, ._ },
112259 .{ .@"0:", ._, .movsx, .tmp1d, .memi(.src0b, .tmp0), ._, ._ },
108531112260 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
108532 .{ ._, .vp_w, .extr, .memsia(.dst0w, .@"2", .tmp0, .add_unaligned_size), .tmp3x, .ui(0), ._ },
108533 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
108534 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
112261 .{ ._, .vp_w, .extr, .memsi(.dst0w, .@"2", .tmp0), .tmp3x, .ui(0), ._ },
112262 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
112263 .{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
108535112264 } },
108536112265 }, .{
108537112266 .required_features = .{ .sse4_1, .slow_incdec, null, null },
......@@ -108542,10 +112271,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108542112271 },
108543112272 .call_frame = .{ .alignment = .@"16" },
108544112273 .extra_temps = .{
108545 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
108546 .{ .type = .i32, .kind = .{ .reg = .edi } },
112274 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
112275 .{ .type = .i32, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
108547112276 .{ .type = .usize, .kind = .{ .extern_func = "__floatsihf" } },
108548 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
112277 .{ .type = .f16, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
108549112278 .unused,
108550112279 .unused,
108551112280 .unused,
......@@ -108557,12 +112286,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108557112286 .dst_temps = .{ .mem, .unused },
108558112287 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
108559112288 .each = .{ .once = &.{
108560 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
108561 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
112289 .{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_unaligned_size), ._, ._ },
112290 .{ .@"0:", ._, .movsx, .tmp1d, .memi(.src0b, .tmp0), ._, ._ },
108562112291 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
108563 .{ ._, .p_w, .extr, .memsia(.dst0w, .@"2", .tmp0, .add_unaligned_size), .tmp3x, .ui(0), ._ },
108564 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
108565 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
112292 .{ ._, .p_w, .extr, .memsi(.dst0w, .@"2", .tmp0), .tmp3x, .ui(0), ._ },
112293 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
112294 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
108566112295 } },
108567112296 }, .{
108568112297 .required_features = .{ .sse4_1, null, null, null },
......@@ -108573,10 +112302,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108573112302 },
108574112303 .call_frame = .{ .alignment = .@"16" },
108575112304 .extra_temps = .{
108576 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
108577 .{ .type = .i32, .kind = .{ .reg = .edi } },
112305 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
112306 .{ .type = .i32, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
108578112307 .{ .type = .usize, .kind = .{ .extern_func = "__floatsihf" } },
108579 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
112308 .{ .type = .f16, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
108580112309 .unused,
108581112310 .unused,
108582112311 .unused,
......@@ -108588,12 +112317,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108588112317 .dst_temps = .{ .mem, .unused },
108589112318 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
108590112319 .each = .{ .once = &.{
108591 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
108592 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
112320 .{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_unaligned_size), ._, ._ },
112321 .{ .@"0:", ._, .movsx, .tmp1d, .memi(.src0b, .tmp0), ._, ._ },
108593112322 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
108594 .{ ._, .p_w, .extr, .memsia(.dst0w, .@"2", .tmp0, .add_unaligned_size), .tmp3x, .ui(0), ._ },
108595 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
108596 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
112323 .{ ._, .p_w, .extr, .memsi(.dst0w, .@"2", .tmp0), .tmp3x, .ui(0), ._ },
112324 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
112325 .{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
108597112326 } },
108598112327 }, .{
108599112328 .required_features = .{ .sse2, .slow_incdec, null, null },
......@@ -108604,10 +112333,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108604112333 },
108605112334 .call_frame = .{ .alignment = .@"16" },
108606112335 .extra_temps = .{
108607 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
108608 .{ .type = .i32, .kind = .{ .reg = .edi } },
112336 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
112337 .{ .type = .i32, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
108609112338 .{ .type = .usize, .kind = .{ .extern_func = "__floatsihf" } },
108610 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
112339 .{ .type = .f16, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
108611112340 .unused,
108612112341 .unused,
108613112342 .unused,
......@@ -108619,13 +112348,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108619112348 .dst_temps = .{ .mem, .unused },
108620112349 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
108621112350 .each = .{ .once = &.{
108622 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
108623 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
112351 .{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_unaligned_size), ._, ._ },
112352 .{ .@"0:", ._, .movsx, .tmp1d, .memi(.src0b, .tmp0), ._, ._ },
108624112353 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
108625112354 .{ ._, .p_w, .extr, .tmp1d, .tmp3x, .ui(0), ._ },
108626 .{ ._, ._, .mov, .memsia(.dst0w, .@"2", .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
108627 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
108628 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
112355 .{ ._, ._, .mov, .memsi(.dst0w, .@"2", .tmp0), .tmp1w, ._, ._ },
112356 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
112357 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
108629112358 } },
108630112359 }, .{
108631112360 .required_features = .{ .sse2, null, null, null },
......@@ -108636,10 +112365,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108636112365 },
108637112366 .call_frame = .{ .alignment = .@"16" },
108638112367 .extra_temps = .{
108639 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
108640 .{ .type = .i32, .kind = .{ .reg = .edi } },
112368 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
112369 .{ .type = .i32, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
108641112370 .{ .type = .usize, .kind = .{ .extern_func = "__floatsihf" } },
108642 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
112371 .{ .type = .f16, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
108643112372 .unused,
108644112373 .unused,
108645112374 .unused,
......@@ -108651,13 +112380,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108651112380 .dst_temps = .{ .mem, .unused },
108652112381 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
108653112382 .each = .{ .once = &.{
108654 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
108655 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
112383 .{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_unaligned_size), ._, ._ },
112384 .{ .@"0:", ._, .movsx, .tmp1d, .memi(.src0b, .tmp0), ._, ._ },
108656112385 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
108657112386 .{ ._, .p_w, .extr, .tmp1d, .tmp3x, .ui(0), ._ },
108658 .{ ._, ._, .mov, .memsia(.dst0w, .@"2", .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
108659 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
108660 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
112387 .{ ._, ._, .mov, .memsi(.dst0w, .@"2", .tmp0), .tmp1w, ._, ._ },
112388 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
112389 .{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
108661112390 } },
108662112391 }, .{
108663112392 .required_features = .{ .sse, .slow_incdec, null, null },
......@@ -108668,10 +112397,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108668112397 },
108669112398 .call_frame = .{ .alignment = .@"16" },
108670112399 .extra_temps = .{
108671 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
108672 .{ .type = .i32, .kind = .{ .reg = .edi } },
112400 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
112401 .{ .type = .i32, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
108673112402 .{ .type = .usize, .kind = .{ .extern_func = "__floatsihf" } },
108674 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
112403 .{ .type = .f16, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
108675112404 .{ .type = .f32, .kind = .mem },
108676112405 .unused,
108677112406 .unused,
......@@ -108683,14 +112412,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108683112412 .dst_temps = .{ .mem, .unused },
108684112413 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
108685112414 .each = .{ .once = &.{
108686 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
108687 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
112415 .{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_unaligned_size), ._, ._ },
112416 .{ .@"0:", ._, .movsx, .tmp1d, .memi(.src0b, .tmp0), ._, ._ },
108688112417 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
108689112418 .{ ._, ._ss, .mov, .tmp4d, .tmp3d, ._, ._ },
108690112419 .{ ._, ._, .mov, .tmp1d, .tmp4d, ._, ._ },
108691 .{ ._, ._, .mov, .memsia(.dst0w, .@"2", .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
108692 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
108693 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
112420 .{ ._, ._, .mov, .memsi(.dst0w, .@"2", .tmp0), .tmp1w, ._, ._ },
112421 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
112422 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
108694112423 } },
108695112424 }, .{
108696112425 .required_features = .{ .sse, null, null, null },
......@@ -108701,10 +112430,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108701112430 },
108702112431 .call_frame = .{ .alignment = .@"16" },
108703112432 .extra_temps = .{
108704 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
108705 .{ .type = .i32, .kind = .{ .reg = .edi } },
112433 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
112434 .{ .type = .i32, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
108706112435 .{ .type = .usize, .kind = .{ .extern_func = "__floatsihf" } },
108707 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
112436 .{ .type = .f16, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
108708112437 .{ .type = .f32, .kind = .mem },
108709112438 .unused,
108710112439 .unused,
......@@ -108716,14 +112445,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108716112445 .dst_temps = .{ .mem, .unused },
108717112446 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
108718112447 .each = .{ .once = &.{
108719 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
108720 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
112448 .{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_unaligned_size), ._, ._ },
112449 .{ .@"0:", ._, .movsx, .tmp1d, .memi(.src0b, .tmp0), ._, ._ },
108721112450 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
108722112451 .{ ._, ._ss, .mov, .tmp4d, .tmp3d, ._, ._ },
108723112452 .{ ._, ._, .mov, .tmp1d, .tmp4d, ._, ._ },
108724 .{ ._, ._, .mov, .memsia(.dst0w, .@"2", .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
108725 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
108726 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
112453 .{ ._, ._, .mov, .memsi(.dst0w, .@"2", .tmp0), .tmp1w, ._, ._ },
112454 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
112455 .{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
108727112456 } },
108728112457 }, .{
108729112458 .required_features = .{ .avx, .slow_incdec, null, null },
......@@ -108734,10 +112463,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108734112463 },
108735112464 .call_frame = .{ .alignment = .@"16" },
108736112465 .extra_temps = .{
108737 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
108738 .{ .type = .u32, .kind = .{ .reg = .edi } },
112466 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
112467 .{ .type = .u32, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
108739112468 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsihf" } },
108740 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
112469 .{ .type = .f16, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
108741112470 .unused,
108742112471 .unused,
108743112472 .unused,
......@@ -108749,12 +112478,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108749112478 .dst_temps = .{ .mem, .unused },
108750112479 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
108751112480 .each = .{ .once = &.{
108752 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
108753 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
112481 .{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_unaligned_size), ._, ._ },
112482 .{ .@"0:", ._, .movzx, .tmp1d, .memi(.src0b, .tmp0), ._, ._ },
108754112483 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
108755 .{ ._, .vp_w, .extr, .memsia(.dst0w, .@"2", .tmp0, .add_unaligned_size), .tmp3x, .ui(0), ._ },
108756 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
108757 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
112484 .{ ._, .vp_w, .extr, .memsi(.dst0w, .@"2", .tmp0), .tmp3x, .ui(0), ._ },
112485 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
112486 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
108758112487 } },
108759112488 }, .{
108760112489 .required_features = .{ .avx, null, null, null },
......@@ -108765,10 +112494,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108765112494 },
108766112495 .call_frame = .{ .alignment = .@"16" },
108767112496 .extra_temps = .{
108768 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
108769 .{ .type = .u32, .kind = .{ .reg = .edi } },
112497 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
112498 .{ .type = .u32, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
108770112499 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsihf" } },
108771 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
112500 .{ .type = .f16, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
108772112501 .unused,
108773112502 .unused,
108774112503 .unused,
......@@ -108780,12 +112509,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108780112509 .dst_temps = .{ .mem, .unused },
108781112510 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
108782112511 .each = .{ .once = &.{
108783 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
108784 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
112512 .{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_unaligned_size), ._, ._ },
112513 .{ .@"0:", ._, .movzx, .tmp1d, .memi(.src0b, .tmp0), ._, ._ },
108785112514 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
108786 .{ ._, .vp_w, .extr, .memsia(.dst0w, .@"2", .tmp0, .add_unaligned_size), .tmp3x, .ui(0), ._ },
108787 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
108788 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
112515 .{ ._, .vp_w, .extr, .memsi(.dst0w, .@"2", .tmp0), .tmp3x, .ui(0), ._ },
112516 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
112517 .{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
108789112518 } },
108790112519 }, .{
108791112520 .required_features = .{ .sse4_1, .slow_incdec, null, null },
......@@ -108796,10 +112525,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108796112525 },
108797112526 .call_frame = .{ .alignment = .@"16" },
108798112527 .extra_temps = .{
108799 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
108800 .{ .type = .u32, .kind = .{ .reg = .edi } },
112528 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
112529 .{ .type = .u32, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
108801112530 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsihf" } },
108802 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
112531 .{ .type = .f16, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
108803112532 .unused,
108804112533 .unused,
108805112534 .unused,
......@@ -108811,12 +112540,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108811112540 .dst_temps = .{ .mem, .unused },
108812112541 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
108813112542 .each = .{ .once = &.{
108814 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
108815 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
112543 .{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_unaligned_size), ._, ._ },
112544 .{ .@"0:", ._, .movzx, .tmp1d, .memi(.src0b, .tmp0), ._, ._ },
108816112545 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
108817 .{ ._, .p_w, .extr, .memsia(.dst0w, .@"2", .tmp0, .add_unaligned_size), .tmp3x, .ui(0), ._ },
108818 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
108819 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
112546 .{ ._, .p_w, .extr, .memsi(.dst0w, .@"2", .tmp0), .tmp3x, .ui(0), ._ },
112547 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
112548 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
108820112549 } },
108821112550 }, .{
108822112551 .required_features = .{ .sse4_1, null, null, null },
......@@ -108827,10 +112556,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108827112556 },
108828112557 .call_frame = .{ .alignment = .@"16" },
108829112558 .extra_temps = .{
108830 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
108831 .{ .type = .u32, .kind = .{ .reg = .edi } },
112559 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
112560 .{ .type = .u32, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
108832112561 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsihf" } },
108833 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
112562 .{ .type = .f16, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
108834112563 .unused,
108835112564 .unused,
108836112565 .unused,
......@@ -108842,12 +112571,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108842112571 .dst_temps = .{ .mem, .unused },
108843112572 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
108844112573 .each = .{ .once = &.{
108845 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
108846 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
112574 .{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_unaligned_size), ._, ._ },
112575 .{ .@"0:", ._, .movzx, .tmp1d, .memi(.src0b, .tmp0), ._, ._ },
108847112576 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
108848 .{ ._, .p_w, .extr, .memsia(.dst0w, .@"2", .tmp0, .add_unaligned_size), .tmp3x, .ui(0), ._ },
108849 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
108850 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
112577 .{ ._, .p_w, .extr, .memsi(.dst0w, .@"2", .tmp0), .tmp3x, .ui(0), ._ },
112578 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
112579 .{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
108851112580 } },
108852112581 }, .{
108853112582 .required_features = .{ .sse2, .slow_incdec, null, null },
......@@ -108858,10 +112587,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108858112587 },
108859112588 .call_frame = .{ .alignment = .@"16" },
108860112589 .extra_temps = .{
108861 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
108862 .{ .type = .u32, .kind = .{ .reg = .edi } },
112590 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
112591 .{ .type = .u32, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
108863112592 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsihf" } },
108864 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
112593 .{ .type = .f16, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
108865112594 .unused,
108866112595 .unused,
108867112596 .unused,
......@@ -108873,13 +112602,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108873112602 .dst_temps = .{ .mem, .unused },
108874112603 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
108875112604 .each = .{ .once = &.{
108876 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
108877 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
112605 .{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_unaligned_size), ._, ._ },
112606 .{ .@"0:", ._, .movzx, .tmp1d, .memi(.src0b, .tmp0), ._, ._ },
108878112607 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
108879112608 .{ ._, .p_w, .extr, .tmp1d, .tmp3x, .ui(0), ._ },
108880 .{ ._, ._, .mov, .memsia(.dst0w, .@"2", .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
108881 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
108882 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
112609 .{ ._, ._, .mov, .memsi(.dst0w, .@"2", .tmp0), .tmp1w, ._, ._ },
112610 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
112611 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
108883112612 } },
108884112613 }, .{
108885112614 .required_features = .{ .sse2, null, null, null },
......@@ -108890,10 +112619,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108890112619 },
108891112620 .call_frame = .{ .alignment = .@"16" },
108892112621 .extra_temps = .{
108893 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
108894 .{ .type = .u32, .kind = .{ .reg = .edi } },
112622 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
112623 .{ .type = .u32, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
108895112624 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsihf" } },
108896 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
112625 .{ .type = .f16, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
108897112626 .unused,
108898112627 .unused,
108899112628 .unused,
......@@ -108905,13 +112634,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108905112634 .dst_temps = .{ .mem, .unused },
108906112635 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
108907112636 .each = .{ .once = &.{
108908 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
108909 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
112637 .{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_unaligned_size), ._, ._ },
112638 .{ .@"0:", ._, .movzx, .tmp1d, .memi(.src0b, .tmp0), ._, ._ },
108910112639 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
108911112640 .{ ._, .p_w, .extr, .tmp1d, .tmp3x, .ui(0), ._ },
108912 .{ ._, ._, .mov, .memsia(.dst0w, .@"2", .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
108913 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
108914 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
112641 .{ ._, ._, .mov, .memsi(.dst0w, .@"2", .tmp0), .tmp1w, ._, ._ },
112642 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
112643 .{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
108915112644 } },
108916112645 }, .{
108917112646 .required_features = .{ .sse, .slow_incdec, null, null },
......@@ -108922,10 +112651,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108922112651 },
108923112652 .call_frame = .{ .alignment = .@"16" },
108924112653 .extra_temps = .{
108925 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
108926 .{ .type = .u32, .kind = .{ .reg = .edi } },
112654 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
112655 .{ .type = .u32, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
108927112656 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsihf" } },
108928 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
112657 .{ .type = .f16, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
108929112658 .{ .type = .f32, .kind = .mem },
108930112659 .unused,
108931112660 .unused,
......@@ -108937,14 +112666,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108937112666 .dst_temps = .{ .mem, .unused },
108938112667 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
108939112668 .each = .{ .once = &.{
108940 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
108941 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
112669 .{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_unaligned_size), ._, ._ },
112670 .{ .@"0:", ._, .movzx, .tmp1d, .memi(.src0b, .tmp0), ._, ._ },
108942112671 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
108943112672 .{ ._, ._ss, .mov, .tmp4d, .tmp3d, ._, ._ },
108944112673 .{ ._, ._, .mov, .tmp1d, .tmp4d, ._, ._ },
108945 .{ ._, ._, .mov, .memsia(.dst0w, .@"2", .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
108946 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
108947 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
112674 .{ ._, ._, .mov, .memsi(.dst0w, .@"2", .tmp0), .tmp1w, ._, ._ },
112675 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
112676 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
108948112677 } },
108949112678 }, .{
108950112679 .required_features = .{ .sse, null, null, null },
......@@ -108955,10 +112684,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108955112684 },
108956112685 .call_frame = .{ .alignment = .@"16" },
108957112686 .extra_temps = .{
108958 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
108959 .{ .type = .u32, .kind = .{ .reg = .edi } },
112687 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
112688 .{ .type = .u32, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
108960112689 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsihf" } },
108961 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
112690 .{ .type = .f16, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
108962112691 .{ .type = .f32, .kind = .mem },
108963112692 .unused,
108964112693 .unused,
......@@ -108970,14 +112699,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108970112699 .dst_temps = .{ .mem, .unused },
108971112700 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
108972112701 .each = .{ .once = &.{
108973 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
108974 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
112702 .{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_unaligned_size), ._, ._ },
112703 .{ .@"0:", ._, .movzx, .tmp1d, .memi(.src0b, .tmp0), ._, ._ },
108975112704 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
108976112705 .{ ._, ._ss, .mov, .tmp4d, .tmp3d, ._, ._ },
108977112706 .{ ._, ._, .mov, .tmp1d, .tmp4d, ._, ._ },
108978 .{ ._, ._, .mov, .memsia(.dst0w, .@"2", .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
108979 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
108980 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
112707 .{ ._, ._, .mov, .memsi(.dst0w, .@"2", .tmp0), .tmp1w, ._, ._ },
112708 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
112709 .{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
108981112710 } },
108982112711 }, .{
108983112712 .required_features = .{ .f16c, null, null, null },
......@@ -109043,7 +112772,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
109043112772 .{ .src = .{ .to_mem, .none, .none } },
109044112773 },
109045112774 .extra_temps = .{
109046 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
112775 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
109047112776 .{ .type = .vector_8_i32, .kind = .{ .rc = .sse } },
109048112777 .unused,
109049112778 .unused,
......@@ -109058,12 +112787,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
109058112787 .dst_temps = .{ .mem, .unused },
109059112788 .clobbers = .{ .eflags = true },
109060112789 .each = .{ .once = &.{
109061 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
109062 .{ .@"0:", .vp_d, .movsxw, .tmp1y, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
112790 .{ ._, ._, .mov, .tmp0d, .sia(-16, .src0, .add_size), ._, ._ },
112791 .{ .@"0:", .vp_d, .movsxw, .tmp1y, .memi(.src0x, .tmp0), ._, ._ },
109063112792 .{ ._, .v_ps, .cvtdq2, .tmp1y, .tmp1y, ._, ._ },
109064 .{ ._, .v_, .cvtps2ph, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1y, .rm(.{}), ._ },
109065 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
109066 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
112793 .{ ._, .v_, .cvtps2ph, .memi(.dst0x, .tmp0), .tmp1y, .rm(.{}), ._ },
112794 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
112795 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
109067112796 } },
109068112797 }, .{
109069112798 .required_features = .{ .f16c, null, null, null },
......@@ -109073,7 +112802,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
109073112802 .{ .src = .{ .to_mem, .none, .none } },
109074112803 },
109075112804 .extra_temps = .{
109076 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
112805 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
109077112806 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },
109078112807 .unused,
109079112808 .unused,
......@@ -109088,12 +112817,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
109088112817 .dst_temps = .{ .mem, .unused },
109089112818 .clobbers = .{ .eflags = true },
109090112819 .each = .{ .once = &.{
109091 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
109092 .{ .@"0:", .vp_d, .movsxw, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
112820 .{ ._, ._, .mov, .tmp0d, .sia(-8, .src0, .add_size), ._, ._ },
112821 .{ .@"0:", .vp_d, .movsxw, .tmp1x, .memi(.src0q, .tmp0), ._, ._ },
109093112822 .{ ._, .v_ps, .cvtdq2, .tmp1x, .tmp1x, ._, ._ },
109094 .{ ._, .v_, .cvtps2ph, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, .rm(.{}), ._ },
109095 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
109096 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
112823 .{ ._, .v_, .cvtps2ph, .memi(.dst0q, .tmp0), .tmp1x, .rm(.{}), ._ },
112824 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
112825 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
109097112826 } },
109098112827 }, .{
109099112828 .required_features = .{ .f16c, .avx2, null, null },
......@@ -109103,7 +112832,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
109103112832 .{ .src = .{ .to_mem, .none, .none } },
109104112833 },
109105112834 .extra_temps = .{
109106 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
112835 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
109107112836 .{ .type = .vector_8_i32, .kind = .{ .rc = .sse } },
109108112837 .unused,
109109112838 .unused,
......@@ -109118,12 +112847,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
109118112847 .dst_temps = .{ .mem, .unused },
109119112848 .clobbers = .{ .eflags = true },
109120112849 .each = .{ .once = &.{
109121 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
109122 .{ .@"0:", .vp_d, .movzxw, .tmp1y, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
112850 .{ ._, ._, .mov, .tmp0d, .sia(-16, .src0, .add_size), ._, ._ },
112851 .{ .@"0:", .vp_d, .movzxw, .tmp1y, .memi(.src0x, .tmp0), ._, ._ },
109123112852 .{ ._, .v_ps, .cvtdq2, .tmp1y, .tmp1y, ._, ._ },
109124 .{ ._, .v_, .cvtps2ph, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1y, .rm(.{}), ._ },
109125 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
109126 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
112853 .{ ._, .v_, .cvtps2ph, .memi(.dst0x, .tmp0), .tmp1y, .rm(.{}), ._ },
112854 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
112855 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
109127112856 } },
109128112857 }, .{
109129112858 .required_features = .{ .f16c, null, null, null },
......@@ -109133,7 +112862,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
109133112862 .{ .src = .{ .to_mem, .none, .none } },
109134112863 },
109135112864 .extra_temps = .{
109136 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
112865 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
109137112866 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },
109138112867 .unused,
109139112868 .unused,
......@@ -109148,12 +112877,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
109148112877 .dst_temps = .{ .mem, .unused },
109149112878 .clobbers = .{ .eflags = true },
109150112879 .each = .{ .once = &.{
109151 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
109152 .{ .@"0:", .vp_d, .movzxw, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
112880 .{ ._, ._, .mov, .tmp0d, .sia(-8, .src0, .add_size), ._, ._ },
112881 .{ .@"0:", .vp_d, .movzxw, .tmp1x, .memi(.src0q, .tmp0), ._, ._ },
109153112882 .{ ._, .v_ps, .cvtdq2, .tmp1x, .tmp1x, ._, ._ },
109154 .{ ._, .v_, .cvtps2ph, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, .rm(.{}), ._ },
109155 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
109156 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
112883 .{ ._, .v_, .cvtps2ph, .memi(.dst0q, .tmp0), .tmp1x, .rm(.{}), ._ },
112884 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
112885 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
109157112886 } },
109158112887 }, .{
109159112888 .required_features = .{ .avx, null, null, null },
......@@ -109164,10 +112893,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
109164112893 },
109165112894 .call_frame = .{ .alignment = .@"16" },
109166112895 .extra_temps = .{
109167 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
109168 .{ .type = .i32, .kind = .{ .reg = .edi } },
112896 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
112897 .{ .type = .i32, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
109169112898 .{ .type = .usize, .kind = .{ .extern_func = "__floatsihf" } },
109170 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
112899 .{ .type = .f16, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
109171112900 .unused,
109172112901 .unused,
109173112902 .unused,
......@@ -109179,12 +112908,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
109179112908 .dst_temps = .{ .mem, .unused },
109180112909 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
109181112910 .each = .{ .once = &.{
109182 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
109183 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
112911 .{ ._, ._, .mov, .tmp0d, .sia(-2, .src0, .add_unaligned_size), ._, ._ },
112912 .{ .@"0:", ._, .movsx, .tmp1d, .memi(.src0w, .tmp0), ._, ._ },
109184112913 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
109185 .{ ._, .vp_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp3x, .ui(0), ._ },
109186 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
109187 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
112914 .{ ._, .vp_w, .extr, .memi(.dst0w, .tmp0), .tmp3x, .ui(0), ._ },
112915 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
112916 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
109188112917 } },
109189112918 }, .{
109190112919 .required_features = .{ .sse4_1, null, null, null },
......@@ -109195,10 +112924,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
109195112924 },
109196112925 .call_frame = .{ .alignment = .@"16" },
109197112926 .extra_temps = .{
109198 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
109199 .{ .type = .i32, .kind = .{ .reg = .edi } },
112927 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
112928 .{ .type = .i32, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
109200112929 .{ .type = .usize, .kind = .{ .extern_func = "__floatsihf" } },
109201 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
112930 .{ .type = .f16, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
109202112931 .unused,
109203112932 .unused,
109204112933 .unused,
......@@ -109210,12 +112939,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
109210112939 .dst_temps = .{ .mem, .unused },
109211112940 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
109212112941 .each = .{ .once = &.{
109213 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
109214 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
112942 .{ ._, ._, .mov, .tmp0d, .sia(-2, .src0, .add_unaligned_size), ._, ._ },
112943 .{ .@"0:", ._, .movsx, .tmp1d, .memi(.src0w, .tmp0), ._, ._ },
109215112944 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
109216 .{ ._, .p_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp3x, .ui(0), ._ },
109217 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
109218 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
112945 .{ ._, .p_w, .extr, .memi(.dst0w, .tmp0), .tmp3x, .ui(0), ._ },
112946 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
112947 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
109219112948 } },
109220112949 }, .{
109221112950 .required_features = .{ .sse2, null, null, null },
......@@ -109226,10 +112955,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
109226112955 },
109227112956 .call_frame = .{ .alignment = .@"16" },
109228112957 .extra_temps = .{
109229 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
109230 .{ .type = .i32, .kind = .{ .reg = .edi } },
112958 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
112959 .{ .type = .i32, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
109231112960 .{ .type = .usize, .kind = .{ .extern_func = "__floatsihf" } },
109232 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
112961 .{ .type = .f16, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
109233112962 .unused,
109234112963 .unused,
109235112964 .unused,
......@@ -109241,13 +112970,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
109241112970 .dst_temps = .{ .mem, .unused },
109242112971 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
109243112972 .each = .{ .once = &.{
109244 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
109245 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
112973 .{ ._, ._, .mov, .tmp0d, .sia(-2, .src0, .add_unaligned_size), ._, ._ },
112974 .{ .@"0:", ._, .movsx, .tmp1d, .memi(.src0w, .tmp0), ._, ._ },
109246112975 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
109247112976 .{ ._, .p_w, .extr, .tmp1d, .tmp3x, .ui(0), ._ },
109248 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
109249 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
109250 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
112977 .{ ._, ._, .mov, .memi(.dst0w, .tmp0), .tmp1w, ._, ._ },
112978 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
112979 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
109251112980 } },
109252112981 }, .{
109253112982 .required_features = .{ .sse, null, null, null },
......@@ -109258,10 +112987,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
109258112987 },
109259112988 .call_frame = .{ .alignment = .@"16" },
109260112989 .extra_temps = .{
109261 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
109262 .{ .type = .i32, .kind = .{ .reg = .edi } },
112990 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
112991 .{ .type = .i32, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
109263112992 .{ .type = .usize, .kind = .{ .extern_func = "__floatsihf" } },
109264 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
112993 .{ .type = .f16, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
109265112994 .{ .type = .f32, .kind = .mem },
109266112995 .unused,
109267112996 .unused,
......@@ -109273,14 +113002,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
109273113002 .dst_temps = .{ .mem, .unused },
109274113003 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
109275113004 .each = .{ .once = &.{
109276 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
109277 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
113005 .{ ._, ._, .mov, .tmp0d, .sia(-2, .src0, .add_unaligned_size), ._, ._ },
113006 .{ .@"0:", ._, .movsx, .tmp1d, .memi(.src0w, .tmp0), ._, ._ },
109278113007 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
109279113008 .{ ._, ._ss, .mov, .tmp4d, .tmp3d, ._, ._ },
109280113009 .{ ._, ._, .mov, .tmp1d, .tmp4d, ._, ._ },
109281 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
109282 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
109283 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
113010 .{ ._, ._, .mov, .memi(.dst0w, .tmp0), .tmp1w, ._, ._ },
113011 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
113012 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
109284113013 } },
109285113014 }, .{
109286113015 .required_features = .{ .avx, null, null, null },
......@@ -109291,10 +113020,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
109291113020 },
109292113021 .call_frame = .{ .alignment = .@"16" },
109293113022 .extra_temps = .{
109294 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
109295 .{ .type = .u32, .kind = .{ .reg = .edi } },
113023 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
113024 .{ .type = .u32, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
109296113025 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsihf" } },
109297 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
113026 .{ .type = .f16, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
109298113027 .unused,
109299113028 .unused,
109300113029 .unused,
......@@ -109306,12 +113035,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
109306113035 .dst_temps = .{ .mem, .unused },
109307113036 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
109308113037 .each = .{ .once = &.{
109309 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
109310 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
113038 .{ ._, ._, .mov, .tmp0d, .sia(-2, .src0, .add_unaligned_size), ._, ._ },
113039 .{ .@"0:", ._, .movzx, .tmp1d, .memi(.src0w, .tmp0), ._, ._ },
109311113040 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
109312 .{ ._, .vp_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp3x, .ui(0), ._ },
109313 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
109314 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
113041 .{ ._, .vp_w, .extr, .memi(.dst0w, .tmp0), .tmp3x, .ui(0), ._ },
113042 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
113043 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
109315113044 } },
109316113045 }, .{
109317113046 .required_features = .{ .sse4_1, null, null, null },
......@@ -109322,10 +113051,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
109322113051 },
109323113052 .call_frame = .{ .alignment = .@"16" },
109324113053 .extra_temps = .{
109325 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
109326 .{ .type = .u32, .kind = .{ .reg = .edi } },
113054 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
113055 .{ .type = .u32, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
109327113056 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsihf" } },
109328 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
113057 .{ .type = .f16, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
109329113058 .unused,
109330113059 .unused,
109331113060 .unused,
......@@ -109337,12 +113066,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
109337113066 .dst_temps = .{ .mem, .unused },
109338113067 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
109339113068 .each = .{ .once = &.{
109340 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
109341 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
113069 .{ ._, ._, .mov, .tmp0d, .sia(-2, .src0, .add_unaligned_size), ._, ._ },
113070 .{ .@"0:", ._, .movzx, .tmp1d, .memi(.src0w, .tmp0), ._, ._ },
109342113071 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
109343 .{ ._, .p_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp3x, .ui(0), ._ },
109344 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
109345 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
113072 .{ ._, .p_w, .extr, .memi(.dst0w, .tmp0), .tmp3x, .ui(0), ._ },
113073 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
113074 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
109346113075 } },
109347113076 }, .{
109348113077 .required_features = .{ .sse2, null, null, null },
......@@ -109353,10 +113082,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
109353113082 },
109354113083 .call_frame = .{ .alignment = .@"16" },
109355113084 .extra_temps = .{
109356 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
109357 .{ .type = .u32, .kind = .{ .reg = .edi } },
113085 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
113086 .{ .type = .u32, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
109358113087 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsihf" } },
109359 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
113088 .{ .type = .f16, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
109360113089 .unused,
109361113090 .unused,
109362113091 .unused,
......@@ -109368,13 +113097,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
109368113097 .dst_temps = .{ .mem, .unused },
109369113098 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
109370113099 .each = .{ .once = &.{
109371 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
109372 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
113100 .{ ._, ._, .mov, .tmp0d, .sia(-2, .src0, .add_unaligned_size), ._, ._ },
113101 .{ .@"0:", ._, .movzx, .tmp1d, .memi(.src0w, .tmp0), ._, ._ },
109373113102 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
109374113103 .{ ._, .p_w, .extr, .tmp1d, .tmp3x, .ui(0), ._ },
109375 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
109376 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
109377 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
113104 .{ ._, ._, .mov, .memi(.dst0w, .tmp0), .tmp1w, ._, ._ },
113105 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
113106 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
109378113107 } },
109379113108 }, .{
109380113109 .required_features = .{ .sse, null, null, null },
......@@ -109385,10 +113114,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
109385113114 },
109386113115 .call_frame = .{ .alignment = .@"16" },
109387113116 .extra_temps = .{
109388 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
109389 .{ .type = .u32, .kind = .{ .reg = .edi } },
113117 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
113118 .{ .type = .u32, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
109390113119 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsihf" } },
109391 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
113120 .{ .type = .f16, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
109392113121 .{ .type = .f32, .kind = .mem },
109393113122 .unused,
109394113123 .unused,
......@@ -109400,14 +113129,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
109400113129 .dst_temps = .{ .mem, .unused },
109401113130 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
109402113131 .each = .{ .once = &.{
109403 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
109404 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
113132 .{ ._, ._, .mov, .tmp0d, .sia(-2, .src0, .add_unaligned_size), ._, ._ },
113133 .{ .@"0:", ._, .movzx, .tmp1d, .memi(.src0w, .tmp0), ._, ._ },
109405113134 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
109406113135 .{ ._, ._ss, .mov, .tmp4d, .tmp3d, ._, ._ },
109407113136 .{ ._, ._, .mov, .tmp1d, .tmp4d, ._, ._ },
109408 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
109409 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
109410 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
113137 .{ ._, ._, .mov, .memi(.dst0w, .tmp0), .tmp1w, ._, ._ },
113138 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
113139 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
109411113140 } },
109412113141 }, .{
109413113142 .required_features = .{ .f16c, null, null, null },
......@@ -109443,7 +113172,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
109443113172 .{ .src = .{ .to_mem, .none, .none } },
109444113173 },
109445113174 .extra_temps = .{
109446 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
113175 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
109447113176 .{ .type = .vector_8_i32, .kind = .{ .rc = .sse } },
109448113177 .unused,
109449113178 .unused,
......@@ -109458,11 +113187,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
109458113187 .dst_temps = .{ .mem, .unused },
109459113188 .clobbers = .{ .eflags = true },
109460113189 .each = .{ .once = &.{
109461 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
109462 .{ .@"0:", .v_ps, .cvtdq2, .tmp1y, .memsia(.src0y, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
109463 .{ ._, .v_, .cvtps2ph, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1y, .rm(.{}), ._ },
109464 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
109465 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
113190 .{ ._, ._, .mov, .tmp0d, .sia(-16, .dst0, .add_size), ._, ._ },
113191 .{ .@"0:", .v_ps, .cvtdq2, .tmp1y, .memsi(.src0y, .@"2", .tmp0), ._, ._ },
113192 .{ ._, .v_, .cvtps2ph, .memi(.dst0x, .tmp0), .tmp1y, .rm(.{}), ._ },
113193 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
113194 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
109466113195 } },
109467113196 }, .{
109468113197 .required_features = .{ .f16c, null, null, null },
......@@ -109472,7 +113201,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
109472113201 .{ .src = .{ .to_mem, .none, .none } },
109473113202 },
109474113203 .extra_temps = .{
109475 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
113204 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
109476113205 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },
109477113206 .unused,
109478113207 .unused,
......@@ -109487,11 +113216,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
109487113216 .dst_temps = .{ .mem, .unused },
109488113217 .clobbers = .{ .eflags = true },
109489113218 .each = .{ .once = &.{
109490 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
109491 .{ .@"0:", .v_ps, .cvtdq2, .tmp1x, .memsia(.src0x, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
109492 .{ ._, .v_, .cvtps2ph, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, .rm(.{}), ._ },
109493 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
109494 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
113219 .{ ._, ._, .mov, .tmp0d, .sia(-8, .dst0, .add_size), ._, ._ },
113220 .{ .@"0:", .v_ps, .cvtdq2, .tmp1x, .memsi(.src0x, .@"2", .tmp0), ._, ._ },
113221 .{ ._, .v_, .cvtps2ph, .memi(.dst0q, .tmp0), .tmp1x, .rm(.{}), ._ },
113222 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
113223 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
109495113224 } },
109496113225 }, .{
109497113226 .required_features = .{ .avx, null, null, null },
......@@ -109502,10 +113231,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
109502113231 },
109503113232 .call_frame = .{ .alignment = .@"16" },
109504113233 .extra_temps = .{
109505 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
109506 .{ .type = .i32, .kind = .{ .reg = .edi } },
113234 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
113235 .{ .type = .i32, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
109507113236 .{ .type = .usize, .kind = .{ .extern_func = "__floatsihf" } },
109508 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
113237 .{ .type = .f16, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
109509113238 .unused,
109510113239 .unused,
109511113240 .unused,
......@@ -109517,12 +113246,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
109517113246 .dst_temps = .{ .mem, .unused },
109518113247 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
109519113248 .each = .{ .once = &.{
109520 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
109521 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
113249 .{ ._, ._, .mov, .tmp0d, .sia(-2, .dst0, .add_unaligned_size), ._, ._ },
113250 .{ .@"0:", ._, .mov, .tmp1d, .memsi(.src0d, .@"2", .tmp0), ._, ._ },
109522113251 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
109523 .{ ._, .vp_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp3x, .ui(0), ._ },
109524 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
109525 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
113252 .{ ._, .vp_w, .extr, .memi(.dst0w, .tmp0), .tmp3x, .ui(0), ._ },
113253 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
113254 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
109526113255 } },
109527113256 }, .{
109528113257 .required_features = .{ .sse4_1, null, null, null },
......@@ -109533,10 +113262,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
109533113262 },
109534113263 .call_frame = .{ .alignment = .@"16" },
109535113264 .extra_temps = .{
109536 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
109537 .{ .type = .i32, .kind = .{ .reg = .edi } },
113265 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
113266 .{ .type = .i32, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
109538113267 .{ .type = .usize, .kind = .{ .extern_func = "__floatsihf" } },
109539 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
113268 .{ .type = .f16, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
109540113269 .unused,
109541113270 .unused,
109542113271 .unused,
......@@ -109548,12 +113277,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
109548113277 .dst_temps = .{ .mem, .unused },
109549113278 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
109550113279 .each = .{ .once = &.{
109551 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
109552 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
113280 .{ ._, ._, .mov, .tmp0d, .sia(-2, .dst0, .add_unaligned_size), ._, ._ },
113281 .{ .@"0:", ._, .mov, .tmp1d, .memsi(.src0d, .@"2", .tmp0), ._, ._ },
109553113282 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
109554 .{ ._, .p_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp3x, .ui(0), ._ },
109555 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
109556 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
113283 .{ ._, .p_w, .extr, .memi(.dst0w, .tmp0), .tmp3x, .ui(0), ._ },
113284 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
113285 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
109557113286 } },
109558113287 }, .{
109559113288 .required_features = .{ .sse2, null, null, null },
......@@ -109564,10 +113293,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
109564113293 },
109565113294 .call_frame = .{ .alignment = .@"16" },
109566113295 .extra_temps = .{
109567 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
109568 .{ .type = .i32, .kind = .{ .reg = .edi } },
113296 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
113297 .{ .type = .i32, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
109569113298 .{ .type = .usize, .kind = .{ .extern_func = "__floatsihf" } },
109570 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
113299 .{ .type = .f16, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
109571113300 .unused,
109572113301 .unused,
109573113302 .unused,
......@@ -109579,13 +113308,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
109579113308 .dst_temps = .{ .mem, .unused },
109580113309 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
109581113310 .each = .{ .once = &.{
109582 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
109583 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
113311 .{ ._, ._, .mov, .tmp0d, .sia(-2, .dst0, .add_unaligned_size), ._, ._ },
113312 .{ .@"0:", ._, .mov, .tmp1d, .memsi(.src0d, .@"2", .tmp0), ._, ._ },
109584113313 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
109585113314 .{ ._, .p_w, .extr, .tmp1d, .tmp3x, .ui(0), ._ },
109586 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
109587 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
109588 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
113315 .{ ._, ._, .mov, .memi(.dst0w, .tmp0), .tmp1w, ._, ._ },
113316 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
113317 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
109589113318 } },
109590113319 }, .{
109591113320 .required_features = .{ .sse, null, null, null },
......@@ -109596,10 +113325,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
109596113325 },
109597113326 .call_frame = .{ .alignment = .@"16" },
109598113327 .extra_temps = .{
109599 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
109600 .{ .type = .i32, .kind = .{ .reg = .edi } },
113328 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
113329 .{ .type = .i32, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
109601113330 .{ .type = .usize, .kind = .{ .extern_func = "__floatsihf" } },
109602 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
113331 .{ .type = .f16, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
109603113332 .{ .type = .f32, .kind = .mem },
109604113333 .unused,
109605113334 .unused,
......@@ -109611,14 +113340,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
109611113340 .dst_temps = .{ .mem, .unused },
109612113341 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
109613113342 .each = .{ .once = &.{
109614 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
109615 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
113343 .{ ._, ._, .mov, .tmp0d, .sia(-2, .dst0, .add_unaligned_size), ._, ._ },
113344 .{ .@"0:", ._, .mov, .tmp1d, .memsi(.src0d, .@"2", .tmp0), ._, ._ },
109616113345 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
109617113346 .{ ._, ._ss, .mov, .tmp4d, .tmp3d, ._, ._ },
109618113347 .{ ._, ._, .mov, .tmp1d, .tmp4d, ._, ._ },
109619 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
109620 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
109621 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
113348 .{ ._, ._, .mov, .memi(.dst0w, .tmp0), .tmp1w, ._, ._ },
113349 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
113350 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
109622113351 } },
109623113352 }, .{
109624113353 .required_features = .{ .avx, null, null, null },
......@@ -109629,10 +113358,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
109629113358 },
109630113359 .call_frame = .{ .alignment = .@"16" },
109631113360 .extra_temps = .{
109632 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
109633 .{ .type = .u32, .kind = .{ .reg = .edi } },
113361 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
113362 .{ .type = .u32, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
109634113363 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsihf" } },
109635 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
113364 .{ .type = .f16, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
109636113365 .unused,
109637113366 .unused,
109638113367 .unused,
......@@ -109644,12 +113373,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
109644113373 .dst_temps = .{ .mem, .unused },
109645113374 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
109646113375 .each = .{ .once = &.{
109647 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
109648 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
113376 .{ ._, ._, .mov, .tmp0d, .sia(-2, .dst0, .add_unaligned_size), ._, ._ },
113377 .{ .@"0:", ._, .mov, .tmp1d, .memsi(.src0d, .@"2", .tmp0), ._, ._ },
109649113378 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
109650 .{ ._, .vp_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp3x, .ui(0), ._ },
109651 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
109652 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
113379 .{ ._, .vp_w, .extr, .memi(.dst0w, .tmp0), .tmp3x, .ui(0), ._ },
113380 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
113381 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
109653113382 } },
109654113383 }, .{
109655113384 .required_features = .{ .sse4_1, null, null, null },
......@@ -109660,10 +113389,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
109660113389 },
109661113390 .call_frame = .{ .alignment = .@"16" },
109662113391 .extra_temps = .{
109663 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
109664 .{ .type = .u32, .kind = .{ .reg = .edi } },
113392 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
113393 .{ .type = .u32, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
109665113394 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsihf" } },
109666 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
113395 .{ .type = .f16, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
109667113396 .unused,
109668113397 .unused,
109669113398 .unused,
......@@ -109675,12 +113404,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
109675113404 .dst_temps = .{ .mem, .unused },
109676113405 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
109677113406 .each = .{ .once = &.{
109678 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
109679 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
113407 .{ ._, ._, .mov, .tmp0d, .sia(-2, .dst0, .add_unaligned_size), ._, ._ },
113408 .{ .@"0:", ._, .mov, .tmp1d, .memsi(.src0d, .@"2", .tmp0), ._, ._ },
109680113409 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
109681 .{ ._, .p_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp3x, .ui(0), ._ },
109682 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
109683 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
113410 .{ ._, .p_w, .extr, .memi(.dst0w, .tmp0), .tmp3x, .ui(0), ._ },
113411 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
113412 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
109684113413 } },
109685113414 }, .{
109686113415 .required_features = .{ .sse2, null, null, null },
......@@ -109691,10 +113420,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
109691113420 },
109692113421 .call_frame = .{ .alignment = .@"16" },
109693113422 .extra_temps = .{
109694 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
109695 .{ .type = .u32, .kind = .{ .reg = .edi } },
113423 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
113424 .{ .type = .u32, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
109696113425 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsihf" } },
109697 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
113426 .{ .type = .f16, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
109698113427 .unused,
109699113428 .unused,
109700113429 .unused,
......@@ -109706,13 +113435,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
109706113435 .dst_temps = .{ .mem, .unused },
109707113436 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
109708113437 .each = .{ .once = &.{
109709 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
109710 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
113438 .{ ._, ._, .mov, .tmp0d, .sia(-2, .dst0, .add_unaligned_size), ._, ._ },
113439 .{ .@"0:", ._, .mov, .tmp1d, .memsi(.src0d, .@"2", .tmp0), ._, ._ },
109711113440 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
109712113441 .{ ._, .p_w, .extr, .tmp1d, .tmp3x, .ui(0), ._ },
109713 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
109714 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
109715 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
113442 .{ ._, ._, .mov, .memi(.dst0w, .tmp0), .tmp1w, ._, ._ },
113443 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
113444 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
109716113445 } },
109717113446 }, .{
109718113447 .required_features = .{ .sse, null, null, null },
......@@ -109723,10 +113452,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
109723113452 },
109724113453 .call_frame = .{ .alignment = .@"16" },
109725113454 .extra_temps = .{
109726 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
109727 .{ .type = .u32, .kind = .{ .reg = .edi } },
113455 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
113456 .{ .type = .u32, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
109728113457 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsihf" } },
109729 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
113458 .{ .type = .f16, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
109730113459 .{ .type = .f32, .kind = .mem },
109731113460 .unused,
109732113461 .unused,
......@@ -109738,14 +113467,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
109738113467 .dst_temps = .{ .mem, .unused },
109739113468 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
109740113469 .each = .{ .once = &.{
109741 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
109742 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
113470 .{ ._, ._, .mov, .tmp0d, .sia(-2, .dst0, .add_unaligned_size), ._, ._ },
113471 .{ .@"0:", ._, .mov, .tmp1d, .memsi(.src0d, .@"2", .tmp0), ._, ._ },
109743113472 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
109744113473 .{ ._, ._ss, .mov, .tmp4d, .tmp3d, ._, ._ },
109745113474 .{ ._, ._, .mov, .tmp1d, .tmp4d, ._, ._ },
109746 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
109747 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
109748 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
113475 .{ ._, ._, .mov, .memi(.dst0w, .tmp0), .tmp1w, ._, ._ },
113476 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
113477 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
109749113478 } },
109750113479 }, .{
109751113480 .required_features = .{ .@"64bit", .f16c, null, null },
......@@ -109755,7 +113484,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
109755113484 .{ .src = .{ .to_mem, .none, .none } },
109756113485 },
109757113486 .extra_temps = .{
109758 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
113487 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
109759113488 .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } },
109760113489 .unused,
109761113490 .unused,
......@@ -109770,13 +113499,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
109770113499 .dst_temps = .{ .mem, .unused },
109771113500 .clobbers = .{ .eflags = true },
109772113501 .each = .{ .once = &.{
109773 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
113502 .{ ._, ._, .mov, .tmp0d, .sia(-2, .dst0, .add_unaligned_size), ._, ._ },
109774113503 .{ .@"0:", .v_ps, .xor, .tmp1x, .tmp1x, .tmp1x, ._ },
109775 .{ ._, .v_ss, .cvtsi2, .tmp1x, .tmp1x, .memsia(.src0q, .@"4", .tmp0, .add_unaligned_size), ._ },
113504 .{ ._, .v_ss, .cvtsi2, .tmp1x, .tmp1x, .memsi(.src0q, .@"4", .tmp0), ._ },
109776113505 .{ ._, .v_, .cvtps2ph, .tmp1q, .tmp1x, .rm(.{}), ._ },
109777 .{ ._, .vp_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ },
109778 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
109779 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
113506 .{ ._, .vp_w, .extr, .memi(.dst0w, .tmp0), .tmp1x, .ui(0), ._ },
113507 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
113508 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
109780113509 } },
109781113510 }, .{
109782113511 .required_features = .{ .@"64bit", .avx, null, null },
......@@ -109787,10 +113516,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
109787113516 },
109788113517 .call_frame = .{ .alignment = .@"16" },
109789113518 .extra_temps = .{
109790 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
109791 .{ .type = .i64, .kind = .{ .reg = .rdi } },
113519 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
113520 .{ .type = .i64, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
109792113521 .{ .type = .usize, .kind = .{ .extern_func = "__floatdihf" } },
109793 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
113522 .{ .type = .f16, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
109794113523 .unused,
109795113524 .unused,
109796113525 .unused,
......@@ -109802,12 +113531,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
109802113531 .dst_temps = .{ .mem, .unused },
109803113532 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
109804113533 .each = .{ .once = &.{
109805 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
109806 .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
113534 .{ ._, ._, .mov, .tmp0d, .sia(-2, .dst0, .add_unaligned_size), ._, ._ },
113535 .{ .@"0:", ._, .mov, .tmp1q, .memsi(.src0q, .@"4", .tmp0), ._, ._ },
109807113536 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
109808 .{ ._, .vp_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp3x, .ui(0), ._ },
109809 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
109810 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
113537 .{ ._, .vp_w, .extr, .memi(.dst0w, .tmp0), .tmp3x, .ui(0), ._ },
113538 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
113539 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
109811113540 } },
109812113541 }, .{
109813113542 .required_features = .{ .@"64bit", .sse4_1, null, null },
......@@ -109818,10 +113547,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
109818113547 },
109819113548 .call_frame = .{ .alignment = .@"16" },
109820113549 .extra_temps = .{
109821 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
109822 .{ .type = .i64, .kind = .{ .reg = .rdi } },
113550 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
113551 .{ .type = .i64, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
109823113552 .{ .type = .usize, .kind = .{ .extern_func = "__floatdihf" } },
109824 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
113553 .{ .type = .f16, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
109825113554 .unused,
109826113555 .unused,
109827113556 .unused,
......@@ -109833,12 +113562,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
109833113562 .dst_temps = .{ .mem, .unused },
109834113563 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
109835113564 .each = .{ .once = &.{
109836 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
109837 .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
113565 .{ ._, ._, .mov, .tmp0d, .sia(-2, .dst0, .add_unaligned_size), ._, ._ },
113566 .{ .@"0:", ._, .mov, .tmp1q, .memsi(.src0q, .@"4", .tmp0), ._, ._ },
109838113567 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
109839 .{ ._, .p_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp3x, .ui(0), ._ },
109840 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
109841 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
113568 .{ ._, .p_w, .extr, .memi(.dst0w, .tmp0), .tmp3x, .ui(0), ._ },
113569 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
113570 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
109842113571 } },
109843113572 }, .{
109844113573 .required_features = .{ .@"64bit", .sse2, null, null },
......@@ -109849,10 +113578,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
109849113578 },
109850113579 .call_frame = .{ .alignment = .@"16" },
109851113580 .extra_temps = .{
109852 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
109853 .{ .type = .i64, .kind = .{ .reg = .rdi } },
113581 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
113582 .{ .type = .i64, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
109854113583 .{ .type = .usize, .kind = .{ .extern_func = "__floatdihf" } },
109855 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
113584 .{ .type = .f16, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
109856113585 .unused,
109857113586 .unused,
109858113587 .unused,
......@@ -109864,13 +113593,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
109864113593 .dst_temps = .{ .mem, .unused },
109865113594 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
109866113595 .each = .{ .once = &.{
109867 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
109868 .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
113596 .{ ._, ._, .mov, .tmp0d, .sia(-2, .dst0, .add_unaligned_size), ._, ._ },
113597 .{ .@"0:", ._, .mov, .tmp1q, .memsi(.src0q, .@"4", .tmp0), ._, ._ },
109869113598 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
109870113599 .{ ._, .p_w, .extr, .tmp1d, .tmp3x, .ui(0), ._ },
109871 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
109872 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
109873 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
113600 .{ ._, ._, .mov, .memi(.dst0w, .tmp0), .tmp1w, ._, ._ },
113601 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
113602 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
109874113603 } },
109875113604 }, .{
109876113605 .required_features = .{ .@"64bit", .sse, null, null },
......@@ -109881,10 +113610,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
109881113610 },
109882113611 .call_frame = .{ .alignment = .@"16" },
109883113612 .extra_temps = .{
109884 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
109885 .{ .type = .i64, .kind = .{ .reg = .rdi } },
113613 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
113614 .{ .type = .i64, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
109886113615 .{ .type = .usize, .kind = .{ .extern_func = "__floatdihf" } },
109887 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
113616 .{ .type = .f16, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
109888113617 .{ .type = .f32, .kind = .mem },
109889113618 .unused,
109890113619 .unused,
......@@ -109896,14 +113625,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
109896113625 .dst_temps = .{ .mem, .unused },
109897113626 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
109898113627 .each = .{ .once = &.{
109899 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
109900 .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
113628 .{ ._, ._, .mov, .tmp0d, .sia(-2, .dst0, .add_unaligned_size), ._, ._ },
113629 .{ .@"0:", ._, .mov, .tmp1q, .memsi(.src0q, .@"4", .tmp0), ._, ._ },
109901113630 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
109902113631 .{ ._, ._ss, .mov, .tmp4d, .tmp3d, ._, ._ },
109903113632 .{ ._, ._, .mov, .tmp1d, .tmp4d, ._, ._ },
109904 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
109905 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
109906 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
113633 .{ ._, ._, .mov, .memi(.dst0w, .tmp0), .tmp1w, ._, ._ },
113634 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
113635 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
109907113636 } },
109908113637 }, .{
109909113638 .required_features = .{ .@"64bit", .avx, null, null },
......@@ -109914,10 +113643,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
109914113643 },
109915113644 .call_frame = .{ .alignment = .@"16" },
109916113645 .extra_temps = .{
109917 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
109918 .{ .type = .u64, .kind = .{ .reg = .rdi } },
113646 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
113647 .{ .type = .u64, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
109919113648 .{ .type = .usize, .kind = .{ .extern_func = "__floatundihf" } },
109920 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
113649 .{ .type = .f16, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
109921113650 .unused,
109922113651 .unused,
109923113652 .unused,
......@@ -109929,12 +113658,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
109929113658 .dst_temps = .{ .mem, .unused },
109930113659 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
109931113660 .each = .{ .once = &.{
109932 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
109933 .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
113661 .{ ._, ._, .mov, .tmp0d, .sia(-2, .dst0, .add_unaligned_size), ._, ._ },
113662 .{ .@"0:", ._, .mov, .tmp1q, .memsi(.src0q, .@"4", .tmp0), ._, ._ },
109934113663 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
109935 .{ ._, .vp_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp3x, .ui(0), ._ },
109936 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
109937 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
113664 .{ ._, .vp_w, .extr, .memi(.dst0w, .tmp0), .tmp3x, .ui(0), ._ },
113665 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
113666 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
109938113667 } },
109939113668 }, .{
109940113669 .required_features = .{ .@"64bit", .sse4_1, null, null },
......@@ -109945,10 +113674,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
109945113674 },
109946113675 .call_frame = .{ .alignment = .@"16" },
109947113676 .extra_temps = .{
109948 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
109949 .{ .type = .u64, .kind = .{ .reg = .rdi } },
113677 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
113678 .{ .type = .u64, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
109950113679 .{ .type = .usize, .kind = .{ .extern_func = "__floatundihf" } },
109951 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
113680 .{ .type = .f16, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
109952113681 .unused,
109953113682 .unused,
109954113683 .unused,
......@@ -109960,12 +113689,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
109960113689 .dst_temps = .{ .mem, .unused },
109961113690 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
109962113691 .each = .{ .once = &.{
109963 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
109964 .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
113692 .{ ._, ._, .mov, .tmp0d, .sia(-2, .dst0, .add_unaligned_size), ._, ._ },
113693 .{ .@"0:", ._, .mov, .tmp1q, .memsi(.src0q, .@"4", .tmp0), ._, ._ },
109965113694 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
109966 .{ ._, .p_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp3x, .ui(0), ._ },
109967 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
109968 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
113695 .{ ._, .p_w, .extr, .memi(.dst0w, .tmp0), .tmp3x, .ui(0), ._ },
113696 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
113697 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
109969113698 } },
109970113699 }, .{
109971113700 .required_features = .{ .@"64bit", .sse2, null, null },
......@@ -109976,10 +113705,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
109976113705 },
109977113706 .call_frame = .{ .alignment = .@"16" },
109978113707 .extra_temps = .{
109979 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
109980 .{ .type = .u64, .kind = .{ .reg = .rdi } },
113708 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
113709 .{ .type = .u64, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
109981113710 .{ .type = .usize, .kind = .{ .extern_func = "__floatundihf" } },
109982 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
113711 .{ .type = .f16, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
109983113712 .unused,
109984113713 .unused,
109985113714 .unused,
......@@ -109991,13 +113720,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
109991113720 .dst_temps = .{ .mem, .unused },
109992113721 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
109993113722 .each = .{ .once = &.{
109994 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
109995 .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
113723 .{ ._, ._, .mov, .tmp0d, .sia(-2, .dst0, .add_unaligned_size), ._, ._ },
113724 .{ .@"0:", ._, .mov, .tmp1q, .memsi(.src0q, .@"4", .tmp0), ._, ._ },
109996113725 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
109997113726 .{ ._, .p_w, .extr, .tmp1d, .tmp3x, .ui(0), ._ },
109998 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
109999 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
110000 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
113727 .{ ._, ._, .mov, .memi(.dst0w, .tmp0), .tmp1w, ._, ._ },
113728 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
113729 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
110001113730 } },
110002113731 }, .{
110003113732 .required_features = .{ .@"64bit", .sse, null, null },
......@@ -110008,10 +113737,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
110008113737 },
110009113738 .call_frame = .{ .alignment = .@"16" },
110010113739 .extra_temps = .{
110011 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
110012 .{ .type = .u64, .kind = .{ .reg = .rdi } },
113740 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
113741 .{ .type = .u64, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
110013113742 .{ .type = .usize, .kind = .{ .extern_func = "__floatundihf" } },
110014 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
113743 .{ .type = .f16, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
110015113744 .{ .type = .f32, .kind = .mem },
110016113745 .unused,
110017113746 .unused,
......@@ -110023,17 +113752,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
110023113752 .dst_temps = .{ .mem, .unused },
110024113753 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
110025113754 .each = .{ .once = &.{
110026 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
110027 .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
113755 .{ ._, ._, .mov, .tmp0d, .sia(-2, .dst0, .add_unaligned_size), ._, ._ },
113756 .{ .@"0:", ._, .mov, .tmp1q, .memsi(.src0q, .@"4", .tmp0), ._, ._ },
110028113757 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
110029113758 .{ ._, ._ss, .mov, .tmp4d, .tmp3d, ._, ._ },
110030113759 .{ ._, ._, .mov, .tmp1d, .tmp4d, ._, ._ },
110031 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
110032 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
110033 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
113760 .{ ._, ._, .mov, .memi(.dst0w, .tmp0), .tmp1w, ._, ._ },
113761 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
113762 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
110034113763 } },
110035113764 }, .{
110036 .required_features = .{ .@"64bit", .avx, null, null },
113765 .required_cc_abi = .sysv64,
113766 .required_features = .{ .avx, null, null, null },
110037113767 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any, .any },
110038113768 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
110039113769 .patterns = &.{
......@@ -110041,11 +113771,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
110041113771 },
110042113772 .call_frame = .{ .alignment = .@"16" },
110043113773 .extra_temps = .{
110044 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
110045 .{ .type = .u64, .kind = .{ .reg = .rdi } },
110046 .{ .type = .i64, .kind = .{ .reg = .rsi } },
113774 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
113775 .{ .type = .i128, .kind = .{ .param_gpr_pair = .{ .cc = .ccc, .after = 0, .at = 0 } } },
110047113776 .{ .type = .usize, .kind = .{ .extern_func = "__floattihf" } },
110048 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
113777 .{ .type = .f16, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
113778 .unused,
110049113779 .unused,
110050113780 .unused,
110051113781 .unused,
......@@ -110056,16 +113786,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
110056113786 .dst_temps = .{ .mem, .unused },
110057113787 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
110058113788 .each = .{ .once = &.{
110059 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
110060 .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
110061 .{ ._, ._, .mov, .tmp2q, .memsiad(.src0q, .@"8", .tmp0, .add_unaligned_size, 8), ._, ._ },
110062 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
110063 .{ ._, .vp_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp4x, .ui(0), ._ },
110064 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
110065 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
113789 .{ ._, ._, .mov, .tmp0d, .sia(-2, .dst0, .add_unaligned_size), ._, ._ },
113790 .{ .@"0:", ._, .mov, .tmp1q0, .memsi(.src0q, .@"8", .tmp0), ._, ._ },
113791 .{ ._, ._, .mov, .tmp1q1, .memsid(.src0q, .@"8", .tmp0, 8), ._, ._ },
113792 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
113793 .{ ._, .vp_w, .extr, .memi(.dst0w, .tmp0), .tmp3x, .ui(0), ._ },
113794 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
113795 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
110066113796 } },
110067113797 }, .{
110068 .required_features = .{ .@"64bit", .sse4_1, null, null },
113798 .required_cc_abi = .win64,
113799 .required_features = .{ .avx, null, null, null },
110069113800 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any, .any },
110070113801 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
110071113802 .patterns = &.{
......@@ -110073,11 +113804,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
110073113804 },
110074113805 .call_frame = .{ .alignment = .@"16" },
110075113806 .extra_temps = .{
110076 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
110077 .{ .type = .u64, .kind = .{ .reg = .rdi } },
110078 .{ .type = .i64, .kind = .{ .reg = .rsi } },
113807 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
113808 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
110079113809 .{ .type = .usize, .kind = .{ .extern_func = "__floattihf" } },
110080 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
113810 .{ .type = .f16, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
113811 .unused,
110081113812 .unused,
110082113813 .unused,
110083113814 .unused,
......@@ -110088,16 +113819,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
110088113819 .dst_temps = .{ .mem, .unused },
110089113820 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
110090113821 .each = .{ .once = &.{
110091 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
110092 .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
110093 .{ ._, ._, .mov, .tmp2q, .memsiad(.src0q, .@"8", .tmp0, .add_unaligned_size, 8), ._, ._ },
110094 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
110095 .{ ._, .p_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp4x, .ui(0), ._ },
110096 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
110097 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
113822 .{ ._, ._, .mov, .tmp0d, .sia(-2, .dst0, .add_unaligned_size), ._, ._ },
113823 .{ .@"0:", ._, .lea, .tmp1p, .memsi(.src0, .@"8", .tmp0), ._, ._ },
113824 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
113825 .{ ._, .vp_w, .extr, .memi(.dst0w, .tmp0), .tmp3x, .ui(0), ._ },
113826 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
113827 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
110098113828 } },
110099113829 }, .{
110100 .required_features = .{ .@"64bit", .sse2, null, null },
113830 .required_cc_abi = .sysv64,
113831 .required_features = .{ .sse4_1, null, null, null },
110101113832 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any, .any },
110102113833 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
110103113834 .patterns = &.{
......@@ -110105,11 +113836,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
110105113836 },
110106113837 .call_frame = .{ .alignment = .@"16" },
110107113838 .extra_temps = .{
110108 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
110109 .{ .type = .u64, .kind = .{ .reg = .rdi } },
110110 .{ .type = .i64, .kind = .{ .reg = .rsi } },
113839 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
113840 .{ .type = .i128, .kind = .{ .param_gpr_pair = .{ .cc = .ccc, .after = 0, .at = 0 } } },
110111113841 .{ .type = .usize, .kind = .{ .extern_func = "__floattihf" } },
110112 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
113842 .{ .type = .f16, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
113843 .unused,
110113113844 .unused,
110114113845 .unused,
110115113846 .unused,
......@@ -110120,17 +113851,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
110120113851 .dst_temps = .{ .mem, .unused },
110121113852 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
110122113853 .each = .{ .once = &.{
110123 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
110124 .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
110125 .{ ._, ._, .mov, .tmp2q, .memsiad(.src0q, .@"8", .tmp0, .add_unaligned_size, 8), ._, ._ },
110126 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
110127 .{ ._, .p_w, .extr, .tmp1d, .tmp4x, .ui(0), ._ },
110128 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
110129 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
110130 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
113854 .{ ._, ._, .mov, .tmp0d, .sia(-2, .dst0, .add_unaligned_size), ._, ._ },
113855 .{ .@"0:", ._, .mov, .tmp1q0, .memsi(.src0q, .@"8", .tmp0), ._, ._ },
113856 .{ ._, ._, .mov, .tmp1q1, .memsid(.src0q, .@"8", .tmp0, 8), ._, ._ },
113857 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
113858 .{ ._, .p_w, .extr, .memi(.dst0w, .tmp0), .tmp3x, .ui(0), ._ },
113859 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
113860 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
110131113861 } },
110132113862 }, .{
110133 .required_features = .{ .@"64bit", .sse, null, null },
113863 .required_cc_abi = .win64,
113864 .required_features = .{ .sse4_1, null, null, null },
110134113865 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any, .any },
110135113866 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
110136113867 .patterns = &.{
......@@ -110138,33 +113869,167 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
110138113869 },
110139113870 .call_frame = .{ .alignment = .@"16" },
110140113871 .extra_temps = .{
110141 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
110142 .{ .type = .u64, .kind = .{ .reg = .rdi } },
110143 .{ .type = .i64, .kind = .{ .reg = .rsi } },
113872 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
113873 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
113874 .{ .type = .usize, .kind = .{ .extern_func = "__floattihf" } },
113875 .{ .type = .f16, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
113876 .unused,
113877 .unused,
113878 .unused,
113879 .unused,
113880 .unused,
113881 .unused,
113882 .unused,
113883 },
113884 .dst_temps = .{ .mem, .unused },
113885 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
113886 .each = .{ .once = &.{
113887 .{ ._, ._, .mov, .tmp0d, .sia(-2, .dst0, .add_unaligned_size), ._, ._ },
113888 .{ .@"0:", ._, .lea, .tmp1p, .memsi(.src0, .@"8", .tmp0), ._, ._ },
113889 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
113890 .{ ._, .p_w, .extr, .memi(.dst0w, .tmp0), .tmp3x, .ui(0), ._ },
113891 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
113892 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
113893 } },
113894 }, .{
113895 .required_cc_abi = .sysv64,
113896 .required_features = .{ .sse2, null, null, null },
113897 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any, .any },
113898 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
113899 .patterns = &.{
113900 .{ .src = .{ .to_mem, .none, .none } },
113901 },
113902 .call_frame = .{ .alignment = .@"16" },
113903 .extra_temps = .{
113904 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
113905 .{ .type = .i128, .kind = .{ .param_gpr_pair = .{ .cc = .ccc, .after = 0, .at = 0 } } },
110144113906 .{ .type = .usize, .kind = .{ .extern_func = "__floattihf" } },
110145 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
113907 .{ .type = .f16, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
113908 .unused,
113909 .unused,
113910 .unused,
113911 .unused,
113912 .unused,
113913 .unused,
113914 .unused,
113915 },
113916 .dst_temps = .{ .mem, .unused },
113917 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
113918 .each = .{ .once = &.{
113919 .{ ._, ._, .mov, .tmp0d, .sia(-2, .dst0, .add_unaligned_size), ._, ._ },
113920 .{ .@"0:", ._, .mov, .tmp1q0, .memsi(.src0q, .@"8", .tmp0), ._, ._ },
113921 .{ ._, ._, .mov, .tmp1q1, .memsid(.src0q, .@"8", .tmp0, 8), ._, ._ },
113922 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
113923 .{ ._, .p_w, .extr, .tmp1d0, .tmp3x, .ui(0), ._ },
113924 .{ ._, ._, .mov, .memi(.dst0w, .tmp0), .tmp1w0, ._, ._ },
113925 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
113926 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
113927 } },
113928 }, .{
113929 .required_cc_abi = .win64,
113930 .required_features = .{ .sse2, null, null, null },
113931 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any, .any },
113932 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
113933 .patterns = &.{
113934 .{ .src = .{ .to_mem, .none, .none } },
113935 },
113936 .call_frame = .{ .alignment = .@"16" },
113937 .extra_temps = .{
113938 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
113939 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
113940 .{ .type = .usize, .kind = .{ .extern_func = "__floattihf" } },
113941 .{ .type = .f16, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
113942 .unused,
113943 .unused,
113944 .unused,
113945 .unused,
113946 .unused,
113947 .unused,
113948 .unused,
113949 },
113950 .dst_temps = .{ .mem, .unused },
113951 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
113952 .each = .{ .once = &.{
113953 .{ ._, ._, .mov, .tmp0d, .sia(-2, .dst0, .add_unaligned_size), ._, ._ },
113954 .{ .@"0:", ._, .lea, .tmp1p, .memsi(.src0, .@"8", .tmp0), ._, ._ },
113955 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
113956 .{ ._, .p_w, .extr, .tmp1d, .tmp3x, .ui(0), ._ },
113957 .{ ._, ._, .mov, .memi(.dst0w, .tmp0), .tmp1w, ._, ._ },
113958 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
113959 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
113960 } },
113961 }, .{
113962 .required_cc_abi = .sysv64,
113963 .required_features = .{ .sse, null, null, null },
113964 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any, .any },
113965 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
113966 .patterns = &.{
113967 .{ .src = .{ .to_mem, .none, .none } },
113968 },
113969 .call_frame = .{ .alignment = .@"16" },
113970 .extra_temps = .{
113971 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
113972 .{ .type = .i128, .kind = .{ .param_gpr_pair = .{ .cc = .ccc, .after = 0, .at = 0 } } },
113973 .{ .type = .usize, .kind = .{ .extern_func = "__floattihf" } },
113974 .{ .type = .f16, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
110146113975 .{ .type = .f32, .kind = .mem },
110147113976 .unused,
110148113977 .unused,
110149113978 .unused,
110150113979 .unused,
110151113980 .unused,
113981 .unused,
110152113982 },
110153113983 .dst_temps = .{ .mem, .unused },
110154113984 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
110155113985 .each = .{ .once = &.{
110156 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
110157 .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
110158 .{ ._, ._, .mov, .tmp2q, .memsiad(.src0q, .@"8", .tmp0, .add_unaligned_size, 8), ._, ._ },
110159 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
110160 .{ ._, ._ss, .mov, .tmp5d, .tmp4d, ._, ._ },
110161 .{ ._, ._, .mov, .tmp1d, .tmp5d, ._, ._ },
110162 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
110163 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
110164 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
113986 .{ ._, ._, .mov, .tmp0d, .sia(-2, .dst0, .add_unaligned_size), ._, ._ },
113987 .{ .@"0:", ._, .mov, .tmp1q0, .memsi(.src0q, .@"8", .tmp0), ._, ._ },
113988 .{ ._, ._, .mov, .tmp1q1, .memsid(.src0q, .@"8", .tmp0, 8), ._, ._ },
113989 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
113990 .{ ._, ._ss, .mov, .mem(.tmp4d), .tmp3x, ._, ._ },
113991 .{ ._, ._, .mov, .tmp1d0, .mem(.tmp4d), ._, ._ },
113992 .{ ._, ._, .mov, .memi(.dst0w, .tmp0), .tmp1w0, ._, ._ },
113993 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
113994 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
110165113995 } },
110166113996 }, .{
110167 .required_features = .{ .@"64bit", .avx, null, null },
113997 .required_cc_abi = .win64,
113998 .required_features = .{ .sse, null, null, null },
113999 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any, .any },
114000 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
114001 .patterns = &.{
114002 .{ .src = .{ .to_mem, .none, .none } },
114003 },
114004 .call_frame = .{ .alignment = .@"16" },
114005 .extra_temps = .{
114006 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
114007 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
114008 .{ .type = .usize, .kind = .{ .extern_func = "__floattihf" } },
114009 .{ .type = .f16, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
114010 .{ .type = .f32, .kind = .mem },
114011 .unused,
114012 .unused,
114013 .unused,
114014 .unused,
114015 .unused,
114016 .unused,
114017 },
114018 .dst_temps = .{ .mem, .unused },
114019 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
114020 .each = .{ .once = &.{
114021 .{ ._, ._, .mov, .tmp0d, .sia(-2, .dst0, .add_unaligned_size), ._, ._ },
114022 .{ .@"0:", ._, .lea, .tmp1p, .memsi(.src0, .@"8", .tmp0), ._, ._ },
114023 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
114024 .{ ._, ._ss, .mov, .mem(.tmp4d), .tmp3x, ._, ._ },
114025 .{ ._, ._, .mov, .tmp1d, .mem(.tmp4d), ._, ._ },
114026 .{ ._, ._, .mov, .memi(.dst0w, .tmp0), .tmp1w, ._, ._ },
114027 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
114028 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
114029 } },
114030 }, .{
114031 .required_cc_abi = .sysv64,
114032 .required_features = .{ .avx, null, null, null },
110168114033 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any, .any },
110169114034 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
110170114035 .patterns = &.{
......@@ -110172,11 +114037,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
110172114037 },
110173114038 .call_frame = .{ .alignment = .@"16" },
110174114039 .extra_temps = .{
110175 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
110176 .{ .type = .u64, .kind = .{ .reg = .rdi } },
110177 .{ .type = .u64, .kind = .{ .reg = .rsi } },
114040 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
114041 .{ .type = .u128, .kind = .{ .param_gpr_pair = .{ .cc = .ccc, .after = 0, .at = 0 } } },
110178114042 .{ .type = .usize, .kind = .{ .extern_func = "__floatuntihf" } },
110179 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
114043 .{ .type = .f16, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
114044 .unused,
110180114045 .unused,
110181114046 .unused,
110182114047 .unused,
......@@ -110187,16 +114052,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
110187114052 .dst_temps = .{ .mem, .unused },
110188114053 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
110189114054 .each = .{ .once = &.{
110190 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
110191 .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
110192 .{ ._, ._, .mov, .tmp2q, .memsiad(.src0q, .@"8", .tmp0, .add_unaligned_size, 8), ._, ._ },
110193 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
110194 .{ ._, .vp_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp4x, .ui(0), ._ },
110195 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
110196 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
114055 .{ ._, ._, .mov, .tmp0d, .sia(-2, .dst0, .add_unaligned_size), ._, ._ },
114056 .{ .@"0:", ._, .mov, .tmp1q0, .memsi(.src0q, .@"8", .tmp0), ._, ._ },
114057 .{ ._, ._, .mov, .tmp1q1, .memsid(.src0q, .@"8", .tmp0, 8), ._, ._ },
114058 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
114059 .{ ._, .vp_w, .extr, .memi(.dst0w, .tmp0), .tmp3x, .ui(0), ._ },
114060 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
114061 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
110197114062 } },
110198114063 }, .{
110199 .required_features = .{ .@"64bit", .sse4_1, null, null },
114064 .required_cc_abi = .win64,
114065 .required_features = .{ .avx, null, null, null },
110200114066 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any, .any },
110201114067 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
110202114068 .patterns = &.{
......@@ -110204,11 +114070,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
110204114070 },
110205114071 .call_frame = .{ .alignment = .@"16" },
110206114072 .extra_temps = .{
110207 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
110208 .{ .type = .u64, .kind = .{ .reg = .rdi } },
110209 .{ .type = .u64, .kind = .{ .reg = .rsi } },
114073 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
114074 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
110210114075 .{ .type = .usize, .kind = .{ .extern_func = "__floatuntihf" } },
110211 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
114076 .{ .type = .f16, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
114077 .unused,
110212114078 .unused,
110213114079 .unused,
110214114080 .unused,
......@@ -110219,16 +114085,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
110219114085 .dst_temps = .{ .mem, .unused },
110220114086 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
110221114087 .each = .{ .once = &.{
110222 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
110223 .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
110224 .{ ._, ._, .mov, .tmp2q, .memsiad(.src0q, .@"8", .tmp0, .add_unaligned_size, 8), ._, ._ },
110225 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
110226 .{ ._, .p_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp4x, .ui(0), ._ },
110227 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
110228 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
114088 .{ ._, ._, .mov, .tmp0d, .sia(-2, .dst0, .add_unaligned_size), ._, ._ },
114089 .{ .@"0:", ._, .lea, .tmp1p, .memsi(.src0, .@"8", .tmp0), ._, ._ },
114090 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
114091 .{ ._, .vp_w, .extr, .memi(.dst0w, .tmp0), .tmp3x, .ui(0), ._ },
114092 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
114093 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
110229114094 } },
110230114095 }, .{
110231 .required_features = .{ .@"64bit", .sse2, null, null },
114096 .required_cc_abi = .sysv64,
114097 .required_features = .{ .sse4_1, null, null, null },
110232114098 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any, .any },
110233114099 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
110234114100 .patterns = &.{
......@@ -110236,11 +114102,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
110236114102 },
110237114103 .call_frame = .{ .alignment = .@"16" },
110238114104 .extra_temps = .{
110239 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
110240 .{ .type = .u64, .kind = .{ .reg = .rdi } },
110241 .{ .type = .u64, .kind = .{ .reg = .rsi } },
114105 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
114106 .{ .type = .u128, .kind = .{ .param_gpr_pair = .{ .cc = .ccc, .after = 0, .at = 0 } } },
110242114107 .{ .type = .usize, .kind = .{ .extern_func = "__floatuntihf" } },
110243 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
114108 .{ .type = .f16, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
114109 .unused,
110244114110 .unused,
110245114111 .unused,
110246114112 .unused,
......@@ -110251,17 +114117,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
110251114117 .dst_temps = .{ .mem, .unused },
110252114118 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
110253114119 .each = .{ .once = &.{
110254 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
110255 .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
110256 .{ ._, ._, .mov, .tmp2q, .memsiad(.src0q, .@"8", .tmp0, .add_unaligned_size, 8), ._, ._ },
110257 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
110258 .{ ._, .p_w, .extr, .tmp1d, .tmp4x, .ui(0), ._ },
110259 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
110260 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
110261 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
114120 .{ ._, ._, .mov, .tmp0d, .sia(-2, .dst0, .add_unaligned_size), ._, ._ },
114121 .{ .@"0:", ._, .mov, .tmp1q0, .memsi(.src0q, .@"8", .tmp0), ._, ._ },
114122 .{ ._, ._, .mov, .tmp1q1, .memsid(.src0q, .@"8", .tmp0, 8), ._, ._ },
114123 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
114124 .{ ._, .p_w, .extr, .memi(.dst0w, .tmp0), .tmp3x, .ui(0), ._ },
114125 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
114126 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
110262114127 } },
110263114128 }, .{
110264 .required_features = .{ .@"64bit", .sse, null, null },
114129 .required_cc_abi = .win64,
114130 .required_features = .{ .sse4_1, null, null, null },
110265114131 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any, .any },
110266114132 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
110267114133 .patterns = &.{
......@@ -110269,30 +114135,163 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
110269114135 },
110270114136 .call_frame = .{ .alignment = .@"16" },
110271114137 .extra_temps = .{
110272 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
110273 .{ .type = .u64, .kind = .{ .reg = .rdi } },
110274 .{ .type = .u64, .kind = .{ .reg = .rsi } },
114138 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
114139 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
110275114140 .{ .type = .usize, .kind = .{ .extern_func = "__floatuntihf" } },
110276 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
114141 .{ .type = .f16, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
114142 .unused,
114143 .unused,
114144 .unused,
114145 .unused,
114146 .unused,
114147 .unused,
114148 .unused,
114149 },
114150 .dst_temps = .{ .mem, .unused },
114151 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
114152 .each = .{ .once = &.{
114153 .{ ._, ._, .mov, .tmp0d, .sia(-2, .dst0, .add_unaligned_size), ._, ._ },
114154 .{ .@"0:", ._, .lea, .tmp1p, .memsi(.src0, .@"8", .tmp0), ._, ._ },
114155 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
114156 .{ ._, .p_w, .extr, .memi(.dst0w, .tmp0), .tmp3x, .ui(0), ._ },
114157 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
114158 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
114159 } },
114160 }, .{
114161 .required_cc_abi = .sysv64,
114162 .required_features = .{ .sse2, null, null, null },
114163 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any, .any },
114164 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
114165 .patterns = &.{
114166 .{ .src = .{ .to_mem, .none, .none } },
114167 },
114168 .call_frame = .{ .alignment = .@"16" },
114169 .extra_temps = .{
114170 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
114171 .{ .type = .u128, .kind = .{ .param_gpr_pair = .{ .cc = .ccc, .after = 0, .at = 0 } } },
114172 .{ .type = .usize, .kind = .{ .extern_func = "__floatuntihf" } },
114173 .{ .type = .f16, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
114174 .unused,
114175 .unused,
114176 .unused,
114177 .unused,
114178 .unused,
114179 .unused,
114180 .unused,
114181 },
114182 .dst_temps = .{ .mem, .unused },
114183 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
114184 .each = .{ .once = &.{
114185 .{ ._, ._, .mov, .tmp0d, .sia(-2, .dst0, .add_unaligned_size), ._, ._ },
114186 .{ .@"0:", ._, .mov, .tmp1q0, .memsi(.src0q, .@"8", .tmp0), ._, ._ },
114187 .{ ._, ._, .mov, .tmp1q1, .memsid(.src0q, .@"8", .tmp0, 8), ._, ._ },
114188 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
114189 .{ ._, .p_w, .extr, .tmp1d0, .tmp3x, .ui(0), ._ },
114190 .{ ._, ._, .mov, .memi(.dst0w, .tmp0), .tmp1w0, ._, ._ },
114191 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
114192 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
114193 } },
114194 }, .{
114195 .required_cc_abi = .win64,
114196 .required_features = .{ .sse2, null, null, null },
114197 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any, .any },
114198 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
114199 .patterns = &.{
114200 .{ .src = .{ .to_mem, .none, .none } },
114201 },
114202 .call_frame = .{ .alignment = .@"16" },
114203 .extra_temps = .{
114204 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
114205 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
114206 .{ .type = .usize, .kind = .{ .extern_func = "__floatuntihf" } },
114207 .{ .type = .f16, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
114208 .unused,
114209 .unused,
114210 .unused,
114211 .unused,
114212 .unused,
114213 .unused,
114214 .unused,
114215 },
114216 .dst_temps = .{ .mem, .unused },
114217 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
114218 .each = .{ .once = &.{
114219 .{ ._, ._, .mov, .tmp0d, .sia(-2, .dst0, .add_unaligned_size), ._, ._ },
114220 .{ .@"0:", ._, .lea, .tmp1p, .memsi(.src0, .@"8", .tmp0), ._, ._ },
114221 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
114222 .{ ._, .p_w, .extr, .tmp1d, .tmp3x, .ui(0), ._ },
114223 .{ ._, ._, .mov, .memi(.dst0w, .tmp0), .tmp1w, ._, ._ },
114224 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
114225 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
114226 } },
114227 }, .{
114228 .required_cc_abi = .sysv64,
114229 .required_features = .{ .sse, null, null, null },
114230 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any, .any },
114231 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
114232 .patterns = &.{
114233 .{ .src = .{ .to_mem, .none, .none } },
114234 },
114235 .call_frame = .{ .alignment = .@"16" },
114236 .extra_temps = .{
114237 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
114238 .{ .type = .u128, .kind = .{ .param_gpr_pair = .{ .cc = .ccc, .after = 0, .at = 0 } } },
114239 .{ .type = .usize, .kind = .{ .extern_func = "__floatuntihf" } },
114240 .{ .type = .f16, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
110277114241 .{ .type = .f32, .kind = .mem },
110278114242 .unused,
110279114243 .unused,
110280114244 .unused,
110281114245 .unused,
110282114246 .unused,
114247 .unused,
110283114248 },
110284114249 .dst_temps = .{ .mem, .unused },
110285114250 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
110286114251 .each = .{ .once = &.{
110287 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
110288 .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
110289 .{ ._, ._, .mov, .tmp2q, .memsiad(.src0q, .@"8", .tmp0, .add_unaligned_size, 8), ._, ._ },
110290 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
110291 .{ ._, ._ss, .mov, .tmp5d, .tmp4d, ._, ._ },
110292 .{ ._, ._, .mov, .tmp1d, .tmp5d, ._, ._ },
110293 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
110294 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
110295 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
114252 .{ ._, ._, .mov, .tmp0d, .sia(-2, .dst0, .add_unaligned_size), ._, ._ },
114253 .{ .@"0:", ._, .mov, .tmp1q0, .memsi(.src0q, .@"8", .tmp0), ._, ._ },
114254 .{ ._, ._, .mov, .tmp1q1, .memsid(.src0q, .@"8", .tmp0, 8), ._, ._ },
114255 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
114256 .{ ._, ._ss, .mov, .mem(.tmp4d), .tmp3x, ._, ._ },
114257 .{ ._, ._, .mov, .tmp1d0, .mem(.tmp4d), ._, ._ },
114258 .{ ._, ._, .mov, .memi(.dst0w, .tmp0), .tmp1w0, ._, ._ },
114259 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
114260 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
114261 } },
114262 }, .{
114263 .required_cc_abi = .win64,
114264 .required_features = .{ .sse, null, null, null },
114265 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any, .any },
114266 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
114267 .patterns = &.{
114268 .{ .src = .{ .to_mem, .none, .none } },
114269 },
114270 .call_frame = .{ .alignment = .@"16" },
114271 .extra_temps = .{
114272 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
114273 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
114274 .{ .type = .usize, .kind = .{ .extern_func = "__floatuntihf" } },
114275 .{ .type = .f16, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
114276 .{ .type = .f32, .kind = .mem },
114277 .unused,
114278 .unused,
114279 .unused,
114280 .unused,
114281 .unused,
114282 .unused,
114283 },
114284 .dst_temps = .{ .mem, .unused },
114285 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
114286 .each = .{ .once = &.{
114287 .{ ._, ._, .mov, .tmp0d, .sia(-2, .dst0, .add_unaligned_size), ._, ._ },
114288 .{ .@"0:", ._, .lea, .tmp1p, .memsi(.src0, .@"8", .tmp0), ._, ._ },
114289 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
114290 .{ ._, ._ss, .mov, .mem(.tmp4d), .tmp3x, ._, ._ },
114291 .{ ._, ._, .mov, .tmp1d, .mem(.tmp4d), ._, ._ },
114292 .{ ._, ._, .mov, .memi(.dst0w, .tmp0), .tmp1w, ._, ._ },
114293 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
114294 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
110296114295 } },
110297114296 }, .{
110298114297 .required_features = .{ .@"64bit", .avx, null, null },
......@@ -110304,11 +114303,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
110304114303 .call_frame = .{ .alignment = .@"16" },
110305114304 .extra_temps = .{
110306114305 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
110307 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
110308 .{ .type = .usize, .kind = .{ .reg = .rdi } },
110309 .{ .type = .usize, .kind = .{ .reg = .rsi } },
114306 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
114307 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
114308 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
110310114309 .{ .type = .usize, .kind = .{ .extern_func = "__floateihf" } },
110311 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
114310 .{ .type = .f16, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
110312114311 .unused,
110313114312 .unused,
110314114313 .unused,
......@@ -110318,15 +114317,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
110318114317 .dst_temps = .{ .mem, .unused },
110319114318 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
110320114319 .each = .{ .once = &.{
110321 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
110322 .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
114320 .{ ._, ._, .lea, .tmp0p, .mema(.src0, .add_unaligned_size_sub_elem_size), ._, ._ },
114321 .{ ._, ._, .mov, .tmp1d, .sia(-2, .dst0, .add_unaligned_size), ._, ._ },
110323114322 .{ .@"0:", ._, .mov, .tmp2p, .tmp0p, ._, ._ },
110324114323 .{ ._, ._, .mov, .tmp3d, .sa(.src0, .add_bit_size), ._, ._ },
110325114324 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
110326 .{ ._, .vp_w, .extr, .memia(.dst0w, .tmp1, .add_unaligned_size), .tmp5x, .ui(0), ._ },
110327 .{ ._, ._, .lea, .tmp0p, .leaa(.tmp0, .add_src0_elem_size), ._, ._ },
110328 .{ ._, ._, .add, .tmp1p, .si(2), ._, ._ },
110329 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
114325 .{ ._, .vp_w, .extr, .memi(.dst0w, .tmp1), .tmp5x, .ui(0), ._ },
114326 .{ ._, ._, .lea, .tmp0p, .leaa(.tmp0, .sub_src0_elem_size), ._, ._ },
114327 .{ ._, ._, .sub, .tmp1d, .si(2), ._, ._ },
114328 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
110330114329 } },
110331114330 }, .{
110332114331 .required_features = .{ .@"64bit", .sse4_1, null, null },
......@@ -110338,11 +114337,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
110338114337 .call_frame = .{ .alignment = .@"16" },
110339114338 .extra_temps = .{
110340114339 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
110341 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
110342 .{ .type = .usize, .kind = .{ .reg = .rdi } },
110343 .{ .type = .usize, .kind = .{ .reg = .rsi } },
114340 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
114341 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
114342 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
110344114343 .{ .type = .usize, .kind = .{ .extern_func = "__floateihf" } },
110345 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
114344 .{ .type = .f16, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
110346114345 .unused,
110347114346 .unused,
110348114347 .unused,
......@@ -110352,15 +114351,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
110352114351 .dst_temps = .{ .mem, .unused },
110353114352 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
110354114353 .each = .{ .once = &.{
110355 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
110356 .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
114354 .{ ._, ._, .lea, .tmp0p, .mema(.src0, .add_unaligned_size_sub_elem_size), ._, ._ },
114355 .{ ._, ._, .mov, .tmp1d, .sia(-2, .dst0, .add_unaligned_size), ._, ._ },
110357114356 .{ .@"0:", ._, .mov, .tmp2p, .tmp0p, ._, ._ },
110358114357 .{ ._, ._, .mov, .tmp3d, .sa(.src0, .add_bit_size), ._, ._ },
110359114358 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
110360 .{ ._, .p_w, .extr, .memia(.dst0w, .tmp1, .add_unaligned_size), .tmp5x, .ui(0), ._ },
110361 .{ ._, ._, .lea, .tmp0p, .leaa(.tmp0, .add_src0_elem_size), ._, ._ },
110362 .{ ._, ._, .add, .tmp1p, .si(2), ._, ._ },
110363 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
114359 .{ ._, .p_w, .extr, .memi(.dst0w, .tmp1), .tmp5x, .ui(0), ._ },
114360 .{ ._, ._, .lea, .tmp0p, .leaa(.tmp0, .sub_src0_elem_size), ._, ._ },
114361 .{ ._, ._, .sub, .tmp1d, .si(2), ._, ._ },
114362 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
110364114363 } },
110365114364 }, .{
110366114365 .required_features = .{ .@"64bit", .sse2, null, null },
......@@ -110372,11 +114371,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
110372114371 .call_frame = .{ .alignment = .@"16" },
110373114372 .extra_temps = .{
110374114373 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
110375 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
110376 .{ .type = .usize, .kind = .{ .reg = .rdi } },
110377 .{ .type = .usize, .kind = .{ .reg = .rsi } },
114374 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
114375 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
114376 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
110378114377 .{ .type = .usize, .kind = .{ .extern_func = "__floateihf" } },
110379 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
114378 .{ .type = .f16, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
110380114379 .unused,
110381114380 .unused,
110382114381 .unused,
......@@ -110386,16 +114385,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
110386114385 .dst_temps = .{ .mem, .unused },
110387114386 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
110388114387 .each = .{ .once = &.{
110389 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
110390 .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
114388 .{ ._, ._, .lea, .tmp0p, .mema(.src0, .add_unaligned_size_sub_elem_size), ._, ._ },
114389 .{ ._, ._, .mov, .tmp1d, .sia(-2, .dst0, .add_unaligned_size), ._, ._ },
110391114390 .{ .@"0:", ._, .mov, .tmp2p, .tmp0p, ._, ._ },
110392114391 .{ ._, ._, .mov, .tmp3d, .sa(.src0, .add_bit_size), ._, ._ },
110393114392 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
110394114393 .{ ._, .p_w, .extr, .tmp2d, .tmp5x, .ui(0), ._ },
110395 .{ ._, ._, .mov, .memia(.dst0w, .tmp1, .add_unaligned_size), .tmp2w, ._, ._ },
110396 .{ ._, ._, .lea, .tmp0p, .leaa(.tmp0, .add_src0_elem_size), ._, ._ },
110397 .{ ._, ._, .add, .tmp1p, .si(2), ._, ._ },
110398 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
114394 .{ ._, ._, .mov, .memi(.dst0w, .tmp1), .tmp2w, ._, ._ },
114395 .{ ._, ._, .lea, .tmp0p, .leaa(.tmp0, .sub_src0_elem_size), ._, ._ },
114396 .{ ._, ._, .sub, .tmp1d, .si(2), ._, ._ },
114397 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
110399114398 } },
110400114399 }, .{
110401114400 .required_features = .{ .@"64bit", .sse, null, null },
......@@ -110407,11 +114406,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
110407114406 .call_frame = .{ .alignment = .@"16" },
110408114407 .extra_temps = .{
110409114408 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
110410 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
110411 .{ .type = .usize, .kind = .{ .reg = .rdi } },
110412 .{ .type = .usize, .kind = .{ .reg = .rsi } },
114409 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
114410 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
114411 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
110413114412 .{ .type = .usize, .kind = .{ .extern_func = "__floateihf" } },
110414 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
114413 .{ .type = .f16, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
110415114414 .{ .type = .f32, .kind = .mem },
110416114415 .unused,
110417114416 .unused,
......@@ -110421,17 +114420,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
110421114420 .dst_temps = .{ .mem, .unused },
110422114421 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
110423114422 .each = .{ .once = &.{
110424 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
110425 .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
114423 .{ ._, ._, .lea, .tmp0p, .mema(.src0, .add_unaligned_size_sub_elem_size), ._, ._ },
114424 .{ ._, ._, .mov, .tmp1d, .sia(-2, .dst0, .add_unaligned_size), ._, ._ },
110426114425 .{ .@"0:", ._, .mov, .tmp2p, .tmp0p, ._, ._ },
110427114426 .{ ._, ._, .mov, .tmp3d, .sa(.src0, .add_bit_size), ._, ._ },
110428114427 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
110429114428 .{ ._, ._ss, .mov, .tmp6d, .tmp5d, ._, ._ },
110430114429 .{ ._, ._, .mov, .tmp2d, .tmp6d, ._, ._ },
110431 .{ ._, ._, .mov, .memia(.dst0w, .tmp1, .add_unaligned_size), .tmp2w, ._, ._ },
110432 .{ ._, ._, .lea, .tmp0p, .leaa(.tmp0, .add_src0_elem_size), ._, ._ },
110433 .{ ._, ._, .add, .tmp1p, .si(2), ._, ._ },
110434 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
114430 .{ ._, ._, .mov, .memi(.dst0w, .tmp1), .tmp2w, ._, ._ },
114431 .{ ._, ._, .lea, .tmp0p, .leaa(.tmp0, .sub_src0_elem_size), ._, ._ },
114432 .{ ._, ._, .sub, .tmp1d, .si(2), ._, ._ },
114433 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
110435114434 } },
110436114435 }, .{
110437114436 .required_features = .{ .@"64bit", .avx, null, null },
......@@ -110443,11 +114442,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
110443114442 .call_frame = .{ .alignment = .@"16" },
110444114443 .extra_temps = .{
110445114444 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
110446 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
110447 .{ .type = .usize, .kind = .{ .reg = .rdi } },
110448 .{ .type = .usize, .kind = .{ .reg = .rsi } },
114445 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
114446 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
114447 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
110449114448 .{ .type = .usize, .kind = .{ .extern_func = "__floatuneihf" } },
110450 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
114449 .{ .type = .f16, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
110451114450 .unused,
110452114451 .unused,
110453114452 .unused,
......@@ -110457,15 +114456,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
110457114456 .dst_temps = .{ .mem, .unused },
110458114457 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
110459114458 .each = .{ .once = &.{
110460 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
110461 .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
114459 .{ ._, ._, .lea, .tmp0p, .mema(.src0, .add_unaligned_size_sub_elem_size), ._, ._ },
114460 .{ ._, ._, .mov, .tmp1d, .sia(-2, .dst0, .add_unaligned_size), ._, ._ },
110462114461 .{ .@"0:", ._, .mov, .tmp2p, .tmp0p, ._, ._ },
110463114462 .{ ._, ._, .mov, .tmp3d, .sa(.src0, .add_bit_size), ._, ._ },
110464114463 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
110465 .{ ._, .vp_w, .extr, .memia(.dst0w, .tmp1, .add_unaligned_size), .tmp5x, .ui(0), ._ },
110466 .{ ._, ._, .lea, .tmp0p, .leaa(.tmp0, .add_src0_elem_size), ._, ._ },
110467 .{ ._, ._, .add, .tmp1p, .si(2), ._, ._ },
110468 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
114464 .{ ._, .vp_w, .extr, .memi(.dst0w, .tmp1), .tmp5x, .ui(0), ._ },
114465 .{ ._, ._, .lea, .tmp0p, .leaa(.tmp0, .sub_src0_elem_size), ._, ._ },
114466 .{ ._, ._, .sub, .tmp1d, .si(2), ._, ._ },
114467 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
110469114468 } },
110470114469 }, .{
110471114470 .required_features = .{ .@"64bit", .sse4_1, null, null },
......@@ -110477,11 +114476,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
110477114476 .call_frame = .{ .alignment = .@"16" },
110478114477 .extra_temps = .{
110479114478 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
110480 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
110481 .{ .type = .usize, .kind = .{ .reg = .rdi } },
110482 .{ .type = .usize, .kind = .{ .reg = .rsi } },
114479 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
114480 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
114481 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
110483114482 .{ .type = .usize, .kind = .{ .extern_func = "__floatuneihf" } },
110484 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
114483 .{ .type = .f16, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
110485114484 .unused,
110486114485 .unused,
110487114486 .unused,
......@@ -110491,15 +114490,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
110491114490 .dst_temps = .{ .mem, .unused },
110492114491 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
110493114492 .each = .{ .once = &.{
110494 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
110495 .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
114493 .{ ._, ._, .lea, .tmp0p, .mema(.src0, .add_unaligned_size_sub_elem_size), ._, ._ },
114494 .{ ._, ._, .mov, .tmp1d, .sia(-2, .dst0, .add_unaligned_size), ._, ._ },
110496114495 .{ .@"0:", ._, .mov, .tmp2p, .tmp0p, ._, ._ },
110497114496 .{ ._, ._, .mov, .tmp3d, .sa(.src0, .add_bit_size), ._, ._ },
110498114497 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
110499 .{ ._, .p_w, .extr, .memia(.dst0w, .tmp1, .add_unaligned_size), .tmp5x, .ui(0), ._ },
110500 .{ ._, ._, .lea, .tmp0p, .leaa(.tmp0, .add_src0_elem_size), ._, ._ },
110501 .{ ._, ._, .add, .tmp1p, .si(2), ._, ._ },
110502 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
114498 .{ ._, .p_w, .extr, .memi(.dst0w, .tmp1), .tmp5x, .ui(0), ._ },
114499 .{ ._, ._, .lea, .tmp0p, .leaa(.tmp0, .sub_src0_elem_size), ._, ._ },
114500 .{ ._, ._, .sub, .tmp1d, .si(2), ._, ._ },
114501 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
110503114502 } },
110504114503 }, .{
110505114504 .required_features = .{ .@"64bit", .sse2, null, null },
......@@ -110511,11 +114510,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
110511114510 .call_frame = .{ .alignment = .@"16" },
110512114511 .extra_temps = .{
110513114512 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
110514 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
110515 .{ .type = .usize, .kind = .{ .reg = .rdi } },
110516 .{ .type = .usize, .kind = .{ .reg = .rsi } },
114513 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
114514 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
114515 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
110517114516 .{ .type = .usize, .kind = .{ .extern_func = "__floatuneihf" } },
110518 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
114517 .{ .type = .f16, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
110519114518 .unused,
110520114519 .unused,
110521114520 .unused,
......@@ -110525,16 +114524,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
110525114524 .dst_temps = .{ .mem, .unused },
110526114525 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
110527114526 .each = .{ .once = &.{
110528 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
110529 .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
114527 .{ ._, ._, .lea, .tmp0p, .mema(.src0, .add_unaligned_size_sub_elem_size), ._, ._ },
114528 .{ ._, ._, .mov, .tmp1d, .sia(-2, .dst0, .add_unaligned_size), ._, ._ },
110530114529 .{ .@"0:", ._, .mov, .tmp2p, .tmp0p, ._, ._ },
110531114530 .{ ._, ._, .mov, .tmp3d, .sa(.src0, .add_bit_size), ._, ._ },
110532114531 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
110533114532 .{ ._, .p_w, .extr, .tmp2d, .tmp5x, .ui(0), ._ },
110534 .{ ._, ._, .mov, .memia(.dst0w, .tmp1, .add_unaligned_size), .tmp2w, ._, ._ },
110535 .{ ._, ._, .lea, .tmp0p, .leaa(.tmp0, .add_src0_elem_size), ._, ._ },
110536 .{ ._, ._, .add, .tmp1p, .si(2), ._, ._ },
110537 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
114533 .{ ._, ._, .mov, .memi(.dst0w, .tmp1), .tmp2w, ._, ._ },
114534 .{ ._, ._, .lea, .tmp0p, .leaa(.tmp0, .sub_src0_elem_size), ._, ._ },
114535 .{ ._, ._, .sub, .tmp1d, .si(2), ._, ._ },
114536 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
110538114537 } },
110539114538 }, .{
110540114539 .required_features = .{ .@"64bit", .sse, null, null },
......@@ -110546,11 +114545,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
110546114545 .call_frame = .{ .alignment = .@"16" },
110547114546 .extra_temps = .{
110548114547 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
110549 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
110550 .{ .type = .usize, .kind = .{ .reg = .rdi } },
110551 .{ .type = .usize, .kind = .{ .reg = .rsi } },
114548 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
114549 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
114550 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
110552114551 .{ .type = .usize, .kind = .{ .extern_func = "__floatuneihf" } },
110553 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
114552 .{ .type = .f16, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
110554114553 .{ .type = .f32, .kind = .mem },
110555114554 .unused,
110556114555 .unused,
......@@ -110560,17 +114559,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
110560114559 .dst_temps = .{ .mem, .unused },
110561114560 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
110562114561 .each = .{ .once = &.{
110563 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
110564 .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
114562 .{ ._, ._, .lea, .tmp0p, .mema(.src0, .add_unaligned_size_sub_elem_size), ._, ._ },
114563 .{ ._, ._, .mov, .tmp1d, .sia(-2, .dst0, .add_unaligned_size), ._, ._ },
110565114564 .{ .@"0:", ._, .mov, .tmp2p, .tmp0p, ._, ._ },
110566114565 .{ ._, ._, .mov, .tmp3d, .sa(.src0, .add_bit_size), ._, ._ },
110567114566 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
110568114567 .{ ._, ._ss, .mov, .tmp6d, .tmp5d, ._, ._ },
110569114568 .{ ._, ._, .mov, .tmp2d, .tmp6d, ._, ._ },
110570 .{ ._, ._, .mov, .memia(.dst0w, .tmp1, .add_unaligned_size), .tmp2w, ._, ._ },
110571 .{ ._, ._, .lea, .tmp0p, .leaa(.tmp0, .add_src0_elem_size), ._, ._ },
110572 .{ ._, ._, .add, .tmp1p, .si(2), ._, ._ },
110573 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
114569 .{ ._, ._, .mov, .memi(.dst0w, .tmp1), .tmp2w, ._, ._ },
114570 .{ ._, ._, .lea, .tmp0p, .leaa(.tmp0, .sub_src0_elem_size), ._, ._ },
114571 .{ ._, ._, .sub, .tmp1d, .si(2), ._, ._ },
114572 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
110574114573 } },
110575114574 }, .{
110576114575 .required_features = .{ .avx, null, null, null },
......@@ -110965,11 +114964,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
110965114964 .{ .@"1:", ._ss, .cvtsi2, .dst0x, .src0q, ._, ._ },
110966114965 } },
110967114966 }, .{
110968 .required_features = .{ .@"64bit", .sse, null, null },
114967 .required_cc_abi = .sysv64,
114968 .required_features = .{ .sse, null, null, null },
110969114969 .src_constraints = .{ .{ .signed_int = .xword }, .any, .any },
110970114970 .dst_constraints = .{ .{ .float = .dword }, .any },
110971114971 .patterns = &.{
110972 .{ .src = .{ .{ .to_reg_pair = .{ .rdi, .rsi } }, .none, .none } },
114972 .{ .src = .{ .{ .to_param_gpr_pair = .{ .cc = .ccc, .after = 0, .at = 0 } }, .none, .none } },
110973114973 },
110974114974 .call_frame = .{ .alignment = .@"16" },
110975114975 .extra_temps = .{
......@@ -110985,17 +114985,46 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
110985114985 .unused,
110986114986 .unused,
110987114987 },
110988 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },
114988 .dst_temps = .{ .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
110989114989 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
110990114990 .each = .{ .once = &.{
110991114991 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
110992114992 } },
110993114993 }, .{
110994 .required_features = .{ .@"64bit", .sse, null, null },
114994 .required_cc_abi = .win64,
114995 .required_features = .{ .sse, null, null, null },
114996 .src_constraints = .{ .{ .signed_int = .xword }, .any, .any },
114997 .dst_constraints = .{ .{ .float = .dword }, .any },
114998 .patterns = &.{
114999 .{ .src = .{ .to_mem, .none, .none } },
115000 },
115001 .call_frame = .{ .alignment = .@"16" },
115002 .extra_temps = .{
115003 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
115004 .{ .type = .usize, .kind = .{ .extern_func = "__floattisf" } },
115005 .unused,
115006 .unused,
115007 .unused,
115008 .unused,
115009 .unused,
115010 .unused,
115011 .unused,
115012 .unused,
115013 .unused,
115014 },
115015 .dst_temps = .{ .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
115016 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
115017 .each = .{ .once = &.{
115018 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
115019 .{ ._, ._, .call, .tmp1d, ._, ._, ._ },
115020 } },
115021 }, .{
115022 .required_cc_abi = .sysv64,
115023 .required_features = .{ .sse, null, null, null },
110995115024 .src_constraints = .{ .{ .unsigned_int = .xword }, .any, .any },
110996115025 .dst_constraints = .{ .{ .float = .dword }, .any },
110997115026 .patterns = &.{
110998 .{ .src = .{ .{ .to_reg_pair = .{ .rdi, .rsi } }, .none, .none } },
115027 .{ .src = .{ .{ .to_param_gpr_pair = .{ .cc = .ccc, .after = 0, .at = 0 } }, .none, .none } },
110999115028 },
111000115029 .call_frame = .{ .alignment = .@"16" },
111001115030 .extra_temps = .{
......@@ -111011,11 +115040,39 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
111011115040 .unused,
111012115041 .unused,
111013115042 },
111014 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },
115043 .dst_temps = .{ .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
111015115044 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
111016115045 .each = .{ .once = &.{
111017115046 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
111018115047 } },
115048 }, .{
115049 .required_cc_abi = .win64,
115050 .required_features = .{ .sse, null, null, null },
115051 .src_constraints = .{ .{ .unsigned_int = .xword }, .any, .any },
115052 .dst_constraints = .{ .{ .float = .dword }, .any },
115053 .patterns = &.{
115054 .{ .src = .{ .to_mem, .none, .none } },
115055 },
115056 .call_frame = .{ .alignment = .@"16" },
115057 .extra_temps = .{
115058 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
115059 .{ .type = .usize, .kind = .{ .extern_func = "__floatuntisf" } },
115060 .unused,
115061 .unused,
115062 .unused,
115063 .unused,
115064 .unused,
115065 .unused,
115066 .unused,
115067 .unused,
115068 .unused,
115069 },
115070 .dst_temps = .{ .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
115071 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
115072 .each = .{ .once = &.{
115073 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
115074 .{ ._, ._, .call, .tmp1d, ._, ._, ._ },
115075 } },
111019115076 }, .{
111020115077 .required_features = .{ .@"64bit", .sse, null, null },
111021115078 .src_constraints = .{ .{ .remainder_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any },
......@@ -111025,8 +115082,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
111025115082 },
111026115083 .call_frame = .{ .alignment = .@"16" },
111027115084 .extra_temps = .{
111028 .{ .type = .usize, .kind = .{ .reg = .rdi } },
111029 .{ .type = .usize, .kind = .{ .reg = .rsi } },
115085 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
115086 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
111030115087 .{ .type = .usize, .kind = .{ .extern_func = "__floateisf" } },
111031115088 .unused,
111032115089 .unused,
......@@ -111037,7 +115094,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
111037115094 .unused,
111038115095 .unused,
111039115096 },
111040 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },
115097 .dst_temps = .{ .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
111041115098 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
111042115099 .each = .{ .once = &.{
111043115100 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
......@@ -111053,8 +115110,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
111053115110 },
111054115111 .call_frame = .{ .alignment = .@"16" },
111055115112 .extra_temps = .{
111056 .{ .type = .usize, .kind = .{ .reg = .rdi } },
111057 .{ .type = .usize, .kind = .{ .reg = .rsi } },
115113 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
115114 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
111058115115 .{ .type = .usize, .kind = .{ .extern_func = "__floatuneisf" } },
111059115116 .unused,
111060115117 .unused,
......@@ -111065,7 +115122,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
111065115122 .unused,
111066115123 .unused,
111067115124 },
111068 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },
115125 .dst_temps = .{ .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
111069115126 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
111070115127 .each = .{ .once = &.{
111071115128 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
......@@ -111158,7 +115215,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
111158115215 .{ .src = .{ .to_mem, .none, .none } },
111159115216 },
111160115217 .extra_temps = .{
111161 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
115218 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
111162115219 .{ .type = .vector_8_i32, .kind = .{ .rc = .sse } },
111163115220 .unused,
111164115221 .unused,
......@@ -111173,12 +115230,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
111173115230 .dst_temps = .{ .mem, .unused },
111174115231 .clobbers = .{ .eflags = true },
111175115232 .each = .{ .once = &.{
111176 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
111177 .{ .@"0:", .vp_d, .movsxb, .tmp1y, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
115233 .{ ._, ._, .mov, .tmp0d, .sia(-8, .src0, .add_size), ._, ._ },
115234 .{ .@"0:", .vp_d, .movsxb, .tmp1y, .memi(.src0q, .tmp0), ._, ._ },
111178115235 .{ ._, .v_ps, .cvtdq2, .tmp1y, .tmp1y, ._, ._ },
111179 .{ ._, .v_ps, .mova, .memsia(.dst0y, .@"4", .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },
111180 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
111181 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
115236 .{ ._, .v_ps, .mova, .memsi(.dst0y, .@"4", .tmp0), .tmp1y, ._, ._ },
115237 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
115238 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
111182115239 } },
111183115240 }, .{
111184115241 .required_features = .{ .avx, null, null, null },
......@@ -111188,7 +115245,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
111188115245 .{ .src = .{ .to_mem, .none, .none } },
111189115246 },
111190115247 .extra_temps = .{
111191 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
115248 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
111192115249 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },
111193115250 .unused,
111194115251 .unused,
......@@ -111203,12 +115260,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
111203115260 .dst_temps = .{ .mem, .unused },
111204115261 .clobbers = .{ .eflags = true },
111205115262 .each = .{ .once = &.{
111206 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
111207 .{ .@"0:", .vp_d, .movsxb, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
115263 .{ ._, ._, .mov, .tmp0d, .sia(-4, .src0, .add_size), ._, ._ },
115264 .{ .@"0:", .vp_d, .movsxb, .tmp1x, .memi(.src0d, .tmp0), ._, ._ },
111208115265 .{ ._, .v_ps, .cvtdq2, .tmp1x, .tmp1x, ._, ._ },
111209 .{ ._, .v_ps, .mova, .memsia(.dst0x, .@"4", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
111210 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
111211 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
115266 .{ ._, .v_ps, .mova, .memsi(.dst0x, .@"4", .tmp0), .tmp1x, ._, ._ },
115267 .{ ._, ._, .sub, .tmp0d, .si(4), ._, ._ },
115268 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
111212115269 } },
111213115270 }, .{
111214115271 .required_features = .{ .sse4_1, null, null, null },
......@@ -111218,7 +115275,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
111218115275 .{ .src = .{ .to_mem, .none, .none } },
111219115276 },
111220115277 .extra_temps = .{
111221 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
115278 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
111222115279 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },
111223115280 .unused,
111224115281 .unused,
......@@ -111233,12 +115290,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
111233115290 .dst_temps = .{ .mem, .unused },
111234115291 .clobbers = .{ .eflags = true },
111235115292 .each = .{ .once = &.{
111236 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
111237 .{ .@"0:", .p_d, .movsxb, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
115293 .{ ._, ._, .mov, .tmp0d, .sia(-4, .src0, .add_size), ._, ._ },
115294 .{ .@"0:", .p_d, .movsxb, .tmp1x, .memi(.src0d, .tmp0), ._, ._ },
111238115295 .{ ._, ._ps, .cvtdq2, .tmp1x, .tmp1x, ._, ._ },
111239 .{ ._, ._ps, .mova, .memsia(.dst0x, .@"4", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
111240 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
111241 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
115296 .{ ._, ._ps, .mova, .memsi(.dst0x, .@"4", .tmp0), .tmp1x, ._, ._ },
115297 .{ ._, ._, .sub, .tmp0d, .si(4), ._, ._ },
115298 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
111242115299 } },
111243115300 }, .{
111244115301 .required_features = .{ .avx2, null, null, null },
......@@ -111248,7 +115305,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
111248115305 .{ .src = .{ .to_mem, .none, .none } },
111249115306 },
111250115307 .extra_temps = .{
111251 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
115308 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
111252115309 .{ .type = .vector_8_i32, .kind = .{ .rc = .sse } },
111253115310 .unused,
111254115311 .unused,
......@@ -111263,12 +115320,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
111263115320 .dst_temps = .{ .mem, .unused },
111264115321 .clobbers = .{ .eflags = true },
111265115322 .each = .{ .once = &.{
111266 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
111267 .{ .@"0:", .vp_d, .movzxb, .tmp1y, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
115323 .{ ._, ._, .mov, .tmp0d, .sia(-8, .src0, .add_size), ._, ._ },
115324 .{ .@"0:", .vp_d, .movzxb, .tmp1y, .memi(.src0q, .tmp0), ._, ._ },
111268115325 .{ ._, .v_ps, .cvtdq2, .tmp1y, .tmp1y, ._, ._ },
111269 .{ ._, .v_ps, .mova, .memsia(.dst0y, .@"4", .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },
111270 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
111271 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
115326 .{ ._, .v_ps, .mova, .memsi(.dst0y, .@"4", .tmp0), .tmp1y, ._, ._ },
115327 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
115328 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
111272115329 } },
111273115330 }, .{
111274115331 .required_features = .{ .avx, null, null, null },
......@@ -111278,7 +115335,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
111278115335 .{ .src = .{ .to_mem, .none, .none } },
111279115336 },
111280115337 .extra_temps = .{
111281 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
115338 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
111282115339 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },
111283115340 .unused,
111284115341 .unused,
......@@ -111293,12 +115350,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
111293115350 .dst_temps = .{ .mem, .unused },
111294115351 .clobbers = .{ .eflags = true },
111295115352 .each = .{ .once = &.{
111296 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
111297 .{ .@"0:", .vp_d, .movzxb, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
115353 .{ ._, ._, .mov, .tmp0d, .sia(-4, .src0, .add_size), ._, ._ },
115354 .{ .@"0:", .vp_d, .movzxb, .tmp1x, .memi(.src0d, .tmp0), ._, ._ },
111298115355 .{ ._, .v_ps, .cvtdq2, .tmp1x, .tmp1x, ._, ._ },
111299 .{ ._, .v_ps, .mova, .memsia(.dst0x, .@"4", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
111300 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
111301 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
115356 .{ ._, .v_ps, .mova, .memsi(.dst0x, .@"4", .tmp0), .tmp1x, ._, ._ },
115357 .{ ._, ._, .sub, .tmp0d, .si(4), ._, ._ },
115358 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
111302115359 } },
111303115360 }, .{
111304115361 .required_features = .{ .sse4_1, null, null, null },
......@@ -111308,7 +115365,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
111308115365 .{ .src = .{ .to_mem, .none, .none } },
111309115366 },
111310115367 .extra_temps = .{
111311 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
115368 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
111312115369 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },
111313115370 .unused,
111314115371 .unused,
......@@ -111323,12 +115380,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
111323115380 .dst_temps = .{ .mem, .unused },
111324115381 .clobbers = .{ .eflags = true },
111325115382 .each = .{ .once = &.{
111326 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
111327 .{ .@"0:", .p_d, .movzxb, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
115383 .{ ._, ._, .mov, .tmp0d, .sia(-4, .src0, .add_size), ._, ._ },
115384 .{ .@"0:", .p_d, .movzxb, .tmp1x, .memi(.src0d, .tmp0), ._, ._ },
111328115385 .{ ._, ._ps, .cvtdq2, .tmp1x, .tmp1x, ._, ._ },
111329 .{ ._, ._ps, .mova, .memsia(.dst0x, .@"4", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
111330 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
111331 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
115386 .{ ._, ._ps, .mova, .memsi(.dst0x, .@"4", .tmp0), .tmp1x, ._, ._ },
115387 .{ ._, ._, .sub, .tmp0d, .si(4), ._, ._ },
115388 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
111332115389 } },
111333115390 }, .{
111334115391 .required_features = .{ .avx, .slow_incdec, null, null },
......@@ -111339,10 +115396,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
111339115396 },
111340115397 .call_frame = .{ .alignment = .@"16" },
111341115398 .extra_temps = .{
111342 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
111343 .{ .type = .i32, .kind = .{ .reg = .edi } },
115399 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
115400 .{ .type = .i32, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
111344115401 .{ .type = .usize, .kind = .{ .extern_func = "__floatsisf" } },
111345 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
115402 .{ .type = .f32, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
111346115403 .unused,
111347115404 .unused,
111348115405 .unused,
......@@ -111354,12 +115411,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
111354115411 .dst_temps = .{ .mem, .unused },
111355115412 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
111356115413 .each = .{ .once = &.{
111357 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
111358 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
115414 .{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_unaligned_size), ._, ._ },
115415 .{ .@"0:", ._, .movsx, .tmp1d, .memi(.src0b, .tmp0), ._, ._ },
111359115416 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
111360 .{ ._, .v_ss, .mov, .memsia(.dst0d, .@"4", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
111361 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
111362 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
115417 .{ ._, .v_ss, .mov, .memsi(.dst0d, .@"4", .tmp0), .tmp3x, ._, ._ },
115418 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
115419 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
111363115420 } },
111364115421 }, .{
111365115422 .required_features = .{ .avx, null, null, null },
......@@ -111370,10 +115427,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
111370115427 },
111371115428 .call_frame = .{ .alignment = .@"16" },
111372115429 .extra_temps = .{
111373 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
111374 .{ .type = .i32, .kind = .{ .reg = .edi } },
115430 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
115431 .{ .type = .i32, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
111375115432 .{ .type = .usize, .kind = .{ .extern_func = "__floatsisf" } },
111376 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
115433 .{ .type = .f32, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
111377115434 .unused,
111378115435 .unused,
111379115436 .unused,
......@@ -111385,12 +115442,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
111385115442 .dst_temps = .{ .mem, .unused },
111386115443 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
111387115444 .each = .{ .once = &.{
111388 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
111389 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
115445 .{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_unaligned_size), ._, ._ },
115446 .{ .@"0:", ._, .movsx, .tmp1d, .memi(.src0b, .tmp0), ._, ._ },
111390115447 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
111391 .{ ._, .v_ss, .mov, .memsia(.dst0d, .@"4", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
111392 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
111393 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
115448 .{ ._, .v_ss, .mov, .memsi(.dst0d, .@"4", .tmp0), .tmp3x, ._, ._ },
115449 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
115450 .{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
111394115451 } },
111395115452 }, .{
111396115453 .required_features = .{ .sse, .slow_incdec, null, null },
......@@ -111401,10 +115458,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
111401115458 },
111402115459 .call_frame = .{ .alignment = .@"16" },
111403115460 .extra_temps = .{
111404 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
111405 .{ .type = .i32, .kind = .{ .reg = .edi } },
115461 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
115462 .{ .type = .i32, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
111406115463 .{ .type = .usize, .kind = .{ .extern_func = "__floatsisf" } },
111407 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
115464 .{ .type = .f32, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
111408115465 .unused,
111409115466 .unused,
111410115467 .unused,
......@@ -111416,12 +115473,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
111416115473 .dst_temps = .{ .mem, .unused },
111417115474 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
111418115475 .each = .{ .once = &.{
111419 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
111420 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
115476 .{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_unaligned_size), ._, ._ },
115477 .{ .@"0:", ._, .movsx, .tmp1d, .memi(.src0b, .tmp0), ._, ._ },
111421115478 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
111422 .{ ._, ._ss, .mov, .memsia(.dst0d, .@"4", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
111423 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
111424 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
115479 .{ ._, ._ss, .mov, .memsi(.dst0d, .@"4", .tmp0), .tmp3x, ._, ._ },
115480 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
115481 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
111425115482 } },
111426115483 }, .{
111427115484 .required_features = .{ .sse, null, null, null },
......@@ -111432,10 +115489,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
111432115489 },
111433115490 .call_frame = .{ .alignment = .@"16" },
111434115491 .extra_temps = .{
111435 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
111436 .{ .type = .i32, .kind = .{ .reg = .edi } },
115492 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
115493 .{ .type = .i32, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
111437115494 .{ .type = .usize, .kind = .{ .extern_func = "__floatsisf" } },
111438 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
115495 .{ .type = .f32, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
111439115496 .unused,
111440115497 .unused,
111441115498 .unused,
......@@ -111447,12 +115504,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
111447115504 .dst_temps = .{ .mem, .unused },
111448115505 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
111449115506 .each = .{ .once = &.{
111450 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
111451 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
115507 .{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_unaligned_size), ._, ._ },
115508 .{ .@"0:", ._, .movsx, .tmp1d, .memi(.src0b, .tmp0), ._, ._ },
111452115509 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
111453 .{ ._, ._ss, .mov, .memsia(.dst0d, .@"4", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
111454 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
111455 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
115510 .{ ._, ._ss, .mov, .memsi(.dst0d, .@"4", .tmp0), .tmp3x, ._, ._ },
115511 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
115512 .{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
111456115513 } },
111457115514 }, .{
111458115515 .required_features = .{ .avx, .slow_incdec, null, null },
......@@ -111463,10 +115520,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
111463115520 },
111464115521 .call_frame = .{ .alignment = .@"16" },
111465115522 .extra_temps = .{
111466 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
111467 .{ .type = .u32, .kind = .{ .reg = .edi } },
115523 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
115524 .{ .type = .u32, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
111468115525 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsisf" } },
111469 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
115526 .{ .type = .f32, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
111470115527 .unused,
111471115528 .unused,
111472115529 .unused,
......@@ -111478,12 +115535,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
111478115535 .dst_temps = .{ .mem, .unused },
111479115536 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
111480115537 .each = .{ .once = &.{
111481 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
111482 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
115538 .{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_unaligned_size), ._, ._ },
115539 .{ .@"0:", ._, .movzx, .tmp1d, .memi(.src0b, .tmp0), ._, ._ },
111483115540 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
111484 .{ ._, .v_ss, .mov, .memsia(.dst0d, .@"4", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
111485 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
111486 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
115541 .{ ._, .v_ss, .mov, .memsi(.dst0d, .@"4", .tmp0), .tmp3x, ._, ._ },
115542 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
115543 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
111487115544 } },
111488115545 }, .{
111489115546 .required_features = .{ .avx, null, null, null },
......@@ -111494,10 +115551,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
111494115551 },
111495115552 .call_frame = .{ .alignment = .@"16" },
111496115553 .extra_temps = .{
111497 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
111498 .{ .type = .u32, .kind = .{ .reg = .edi } },
115554 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
115555 .{ .type = .u32, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
111499115556 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsisf" } },
111500 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
115557 .{ .type = .f32, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
111501115558 .unused,
111502115559 .unused,
111503115560 .unused,
......@@ -111509,12 +115566,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
111509115566 .dst_temps = .{ .mem, .unused },
111510115567 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
111511115568 .each = .{ .once = &.{
111512 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
111513 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
115569 .{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_unaligned_size), ._, ._ },
115570 .{ .@"0:", ._, .movzx, .tmp1d, .memi(.src0b, .tmp0), ._, ._ },
111514115571 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
111515 .{ ._, .v_ss, .mov, .memsia(.dst0d, .@"4", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
111516 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
111517 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
115572 .{ ._, .v_ss, .mov, .memsi(.dst0d, .@"4", .tmp0), .tmp3x, ._, ._ },
115573 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
115574 .{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
111518115575 } },
111519115576 }, .{
111520115577 .required_features = .{ .sse, .slow_incdec, null, null },
......@@ -111525,10 +115582,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
111525115582 },
111526115583 .call_frame = .{ .alignment = .@"16" },
111527115584 .extra_temps = .{
111528 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
111529 .{ .type = .u32, .kind = .{ .reg = .edi } },
115585 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
115586 .{ .type = .u32, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
111530115587 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsisf" } },
111531 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
115588 .{ .type = .f32, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
111532115589 .unused,
111533115590 .unused,
111534115591 .unused,
......@@ -111540,12 +115597,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
111540115597 .dst_temps = .{ .mem, .unused },
111541115598 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
111542115599 .each = .{ .once = &.{
111543 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
111544 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
115600 .{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_unaligned_size), ._, ._ },
115601 .{ .@"0:", ._, .movzx, .tmp1d, .memi(.src0b, .tmp0), ._, ._ },
111545115602 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
111546 .{ ._, ._ss, .mov, .memsia(.dst0d, .@"4", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
111547 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
111548 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
115603 .{ ._, ._ss, .mov, .memsi(.dst0d, .@"4", .tmp0), .tmp3x, ._, ._ },
115604 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
115605 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
111549115606 } },
111550115607 }, .{
111551115608 .required_features = .{ .sse, null, null, null },
......@@ -111556,10 +115613,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
111556115613 },
111557115614 .call_frame = .{ .alignment = .@"16" },
111558115615 .extra_temps = .{
111559 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
111560 .{ .type = .u32, .kind = .{ .reg = .edi } },
115616 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
115617 .{ .type = .u32, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
111561115618 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsisf" } },
111562 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
115619 .{ .type = .f32, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
111563115620 .unused,
111564115621 .unused,
111565115622 .unused,
......@@ -111571,12 +115628,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
111571115628 .dst_temps = .{ .mem, .unused },
111572115629 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
111573115630 .each = .{ .once = &.{
111574 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
111575 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
115631 .{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_unaligned_size), ._, ._ },
115632 .{ .@"0:", ._, .movzx, .tmp1d, .memi(.src0b, .tmp0), ._, ._ },
111576115633 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
111577 .{ ._, ._ss, .mov, .memsia(.dst0d, .@"4", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
111578 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
111579 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
115634 .{ ._, ._ss, .mov, .memsi(.dst0d, .@"4", .tmp0), .tmp3x, ._, ._ },
115635 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
115636 .{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
111580115637 } },
111581115638 }, .{
111582115639 .required_features = .{ .avx, null, null, null },
......@@ -111664,7 +115721,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
111664115721 .{ .src = .{ .to_mem, .none, .none } },
111665115722 },
111666115723 .extra_temps = .{
111667 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
115724 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
111668115725 .{ .type = .vector_8_i32, .kind = .{ .rc = .sse } },
111669115726 .unused,
111670115727 .unused,
......@@ -111679,12 +115736,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
111679115736 .dst_temps = .{ .mem, .unused },
111680115737 .clobbers = .{ .eflags = true },
111681115738 .each = .{ .once = &.{
111682 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
111683 .{ .@"0:", .vp_d, .movsxw, .tmp1y, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
115739 .{ ._, ._, .mov, .tmp0d, .sia(-16, .src0, .add_size), ._, ._ },
115740 .{ .@"0:", .vp_d, .movsxw, .tmp1y, .memi(.src0x, .tmp0), ._, ._ },
111684115741 .{ ._, .v_ps, .cvtdq2, .tmp1y, .tmp1y, ._, ._ },
111685 .{ ._, .v_ps, .mova, .memsia(.dst0y, .@"2", .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },
111686 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
111687 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
115742 .{ ._, .v_ps, .mova, .memsi(.dst0y, .@"2", .tmp0), .tmp1y, ._, ._ },
115743 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
115744 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
111688115745 } },
111689115746 }, .{
111690115747 .required_features = .{ .avx, null, null, null },
......@@ -111694,7 +115751,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
111694115751 .{ .src = .{ .to_mem, .none, .none } },
111695115752 },
111696115753 .extra_temps = .{
111697 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
115754 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
111698115755 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },
111699115756 .unused,
111700115757 .unused,
......@@ -111709,12 +115766,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
111709115766 .dst_temps = .{ .mem, .unused },
111710115767 .clobbers = .{ .eflags = true },
111711115768 .each = .{ .once = &.{
111712 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
111713 .{ .@"0:", .vp_d, .movsxw, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
115769 .{ ._, ._, .mov, .tmp0d, .sia(-8, .src0, .add_size), ._, ._ },
115770 .{ .@"0:", .vp_d, .movsxw, .tmp1x, .memi(.src0q, .tmp0), ._, ._ },
111714115771 .{ ._, .v_ps, .cvtdq2, .tmp1x, .tmp1x, ._, ._ },
111715 .{ ._, .v_ps, .mova, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
111716 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
111717 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
115772 .{ ._, .v_ps, .mova, .memsi(.dst0x, .@"2", .tmp0), .tmp1x, ._, ._ },
115773 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
115774 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
111718115775 } },
111719115776 }, .{
111720115777 .required_features = .{ .sse4_1, null, null, null },
......@@ -111724,7 +115781,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
111724115781 .{ .src = .{ .to_mem, .none, .none } },
111725115782 },
111726115783 .extra_temps = .{
111727 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
115784 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
111728115785 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },
111729115786 .unused,
111730115787 .unused,
......@@ -111739,12 +115796,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
111739115796 .dst_temps = .{ .mem, .unused },
111740115797 .clobbers = .{ .eflags = true },
111741115798 .each = .{ .once = &.{
111742 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
111743 .{ .@"0:", .p_d, .movsxw, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
115799 .{ ._, ._, .mov, .tmp0d, .sia(-8, .src0, .add_size), ._, ._ },
115800 .{ .@"0:", .p_d, .movsxw, .tmp1x, .memi(.src0q, .tmp0), ._, ._ },
111744115801 .{ ._, ._ps, .cvtdq2, .tmp1x, .tmp1x, ._, ._ },
111745 .{ ._, ._ps, .mova, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
111746 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
111747 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
115802 .{ ._, ._ps, .mova, .memsi(.dst0x, .@"2", .tmp0), .tmp1x, ._, ._ },
115803 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
115804 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
111748115805 } },
111749115806 }, .{
111750115807 .required_features = .{ .avx2, null, null, null },
......@@ -111754,7 +115811,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
111754115811 .{ .src = .{ .to_mem, .none, .none } },
111755115812 },
111756115813 .extra_temps = .{
111757 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
115814 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
111758115815 .{ .type = .vector_8_i32, .kind = .{ .rc = .sse } },
111759115816 .unused,
111760115817 .unused,
......@@ -111769,12 +115826,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
111769115826 .dst_temps = .{ .mem, .unused },
111770115827 .clobbers = .{ .eflags = true },
111771115828 .each = .{ .once = &.{
111772 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
111773 .{ .@"0:", .vp_d, .movzxw, .tmp1y, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
115829 .{ ._, ._, .mov, .tmp0d, .sia(-16, .src0, .add_size), ._, ._ },
115830 .{ .@"0:", .vp_d, .movzxw, .tmp1y, .memi(.src0x, .tmp0), ._, ._ },
111774115831 .{ ._, .v_ps, .cvtdq2, .tmp1y, .tmp1y, ._, ._ },
111775 .{ ._, .v_ps, .mova, .memsia(.dst0y, .@"2", .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },
111776 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
111777 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
115832 .{ ._, .v_ps, .mova, .memsi(.dst0y, .@"2", .tmp0), .tmp1y, ._, ._ },
115833 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
115834 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
111778115835 } },
111779115836 }, .{
111780115837 .required_features = .{ .avx, null, null, null },
......@@ -111784,7 +115841,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
111784115841 .{ .src = .{ .to_mem, .none, .none } },
111785115842 },
111786115843 .extra_temps = .{
111787 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
115844 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
111788115845 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },
111789115846 .unused,
111790115847 .unused,
......@@ -111799,12 +115856,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
111799115856 .dst_temps = .{ .mem, .unused },
111800115857 .clobbers = .{ .eflags = true },
111801115858 .each = .{ .once = &.{
111802 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
111803 .{ .@"0:", .vp_d, .movzxw, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
115859 .{ ._, ._, .mov, .tmp0d, .sia(-8, .src0, .add_size), ._, ._ },
115860 .{ .@"0:", .vp_d, .movzxw, .tmp1x, .memi(.src0q, .tmp0), ._, ._ },
111804115861 .{ ._, .v_ps, .cvtdq2, .tmp1x, .tmp1x, ._, ._ },
111805 .{ ._, .v_ps, .mova, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
111806 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
111807 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
115862 .{ ._, .v_ps, .mova, .memsi(.dst0x, .@"2", .tmp0), .tmp1x, ._, ._ },
115863 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
115864 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
111808115865 } },
111809115866 }, .{
111810115867 .required_features = .{ .sse4_1, null, null, null },
......@@ -111814,7 +115871,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
111814115871 .{ .src = .{ .to_mem, .none, .none } },
111815115872 },
111816115873 .extra_temps = .{
111817 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
115874 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
111818115875 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },
111819115876 .unused,
111820115877 .unused,
......@@ -111829,12 +115886,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
111829115886 .dst_temps = .{ .mem, .unused },
111830115887 .clobbers = .{ .eflags = true },
111831115888 .each = .{ .once = &.{
111832 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
111833 .{ .@"0:", .p_d, .movzxw, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
115889 .{ ._, ._, .mov, .tmp0d, .sia(-8, .src0, .add_size), ._, ._ },
115890 .{ .@"0:", .p_d, .movzxw, .tmp1x, .memi(.src0q, .tmp0), ._, ._ },
111834115891 .{ ._, ._ps, .cvtdq2, .tmp1x, .tmp1x, ._, ._ },
111835 .{ ._, ._ps, .mova, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
111836 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
111837 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
115892 .{ ._, ._ps, .mova, .memsi(.dst0x, .@"2", .tmp0), .tmp1x, ._, ._ },
115893 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
115894 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
111838115895 } },
111839115896 }, .{
111840115897 .required_features = .{ .avx, null, null, null },
......@@ -111845,10 +115902,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
111845115902 },
111846115903 .call_frame = .{ .alignment = .@"16" },
111847115904 .extra_temps = .{
111848 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
111849 .{ .type = .i32, .kind = .{ .reg = .edi } },
115905 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
115906 .{ .type = .i32, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
111850115907 .{ .type = .usize, .kind = .{ .extern_func = "__floatsisf" } },
111851 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
115908 .{ .type = .f32, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
111852115909 .unused,
111853115910 .unused,
111854115911 .unused,
......@@ -111860,12 +115917,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
111860115917 .dst_temps = .{ .mem, .unused },
111861115918 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
111862115919 .each = .{ .once = &.{
111863 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
111864 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
115920 .{ ._, ._, .mov, .tmp0d, .sia(-2, .src0, .add_unaligned_size), ._, ._ },
115921 .{ .@"0:", ._, .movsx, .tmp1d, .memi(.src0w, .tmp0), ._, ._ },
111865115922 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
111866 .{ ._, .v_ss, .mov, .memsia(.dst0d, .@"2", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
111867 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
111868 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
115923 .{ ._, .v_ss, .mov, .memsi(.dst0d, .@"2", .tmp0), .tmp3x, ._, ._ },
115924 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
115925 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
111869115926 } },
111870115927 }, .{
111871115928 .required_features = .{ .sse, null, null, null },
......@@ -111876,10 +115933,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
111876115933 },
111877115934 .call_frame = .{ .alignment = .@"16" },
111878115935 .extra_temps = .{
111879 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
111880 .{ .type = .i32, .kind = .{ .reg = .edi } },
115936 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
115937 .{ .type = .i32, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
111881115938 .{ .type = .usize, .kind = .{ .extern_func = "__floatsisf" } },
111882 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
115939 .{ .type = .f32, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
111883115940 .unused,
111884115941 .unused,
111885115942 .unused,
......@@ -111891,12 +115948,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
111891115948 .dst_temps = .{ .mem, .unused },
111892115949 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
111893115950 .each = .{ .once = &.{
111894 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
111895 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
115951 .{ ._, ._, .mov, .tmp0d, .sia(-2, .src0, .add_unaligned_size), ._, ._ },
115952 .{ .@"0:", ._, .movsx, .tmp1d, .memi(.src0w, .tmp0), ._, ._ },
111896115953 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
111897 .{ ._, ._ss, .mov, .memsia(.dst0d, .@"2", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
111898 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
111899 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
115954 .{ ._, ._ss, .mov, .memsi(.dst0d, .@"2", .tmp0), .tmp3x, ._, ._ },
115955 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
115956 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
111900115957 } },
111901115958 }, .{
111902115959 .required_features = .{ .avx, null, null, null },
......@@ -111907,10 +115964,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
111907115964 },
111908115965 .call_frame = .{ .alignment = .@"16" },
111909115966 .extra_temps = .{
111910 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
111911 .{ .type = .u32, .kind = .{ .reg = .edi } },
115967 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
115968 .{ .type = .u32, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
111912115969 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsisf" } },
111913 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
115970 .{ .type = .f32, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
111914115971 .unused,
111915115972 .unused,
111916115973 .unused,
......@@ -111922,12 +115979,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
111922115979 .dst_temps = .{ .mem, .unused },
111923115980 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
111924115981 .each = .{ .once = &.{
111925 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
111926 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
115982 .{ ._, ._, .mov, .tmp0d, .sia(-2, .src0, .add_unaligned_size), ._, ._ },
115983 .{ .@"0:", ._, .movzx, .tmp1d, .memi(.src0w, .tmp0), ._, ._ },
111927115984 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
111928 .{ ._, .v_ss, .mov, .memsia(.dst0d, .@"2", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
111929 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
111930 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
115985 .{ ._, .v_ss, .mov, .memsi(.dst0d, .@"2", .tmp0), .tmp3x, ._, ._ },
115986 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
115987 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
111931115988 } },
111932115989 }, .{
111933115990 .required_features = .{ .sse, null, null, null },
......@@ -111938,10 +115995,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
111938115995 },
111939115996 .call_frame = .{ .alignment = .@"16" },
111940115997 .extra_temps = .{
111941 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
111942 .{ .type = .u32, .kind = .{ .reg = .edi } },
115998 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
115999 .{ .type = .u32, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
111943116000 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsisf" } },
111944 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
116001 .{ .type = .f32, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
111945116002 .unused,
111946116003 .unused,
111947116004 .unused,
......@@ -111953,12 +116010,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
111953116010 .dst_temps = .{ .mem, .unused },
111954116011 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
111955116012 .each = .{ .once = &.{
111956 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
111957 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
116013 .{ ._, ._, .mov, .tmp0d, .sia(-2, .src0, .add_unaligned_size), ._, ._ },
116014 .{ .@"0:", ._, .movzx, .tmp1d, .memi(.src0w, .tmp0), ._, ._ },
111958116015 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
111959 .{ ._, ._ss, .mov, .memsia(.dst0d, .@"2", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
111960 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
111961 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
116016 .{ ._, ._ss, .mov, .memsi(.dst0d, .@"2", .tmp0), .tmp3x, ._, ._ },
116017 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
116018 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
111962116019 } },
111963116020 }, .{
111964116021 .required_features = .{ .avx, null, null, null },
......@@ -112004,7 +116061,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
112004116061 .{ .src = .{ .to_mem, .none, .none } },
112005116062 },
112006116063 .extra_temps = .{
112007 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
116064 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
112008116065 .{ .type = .vector_8_i32, .kind = .{ .rc = .sse } },
112009116066 .unused,
112010116067 .unused,
......@@ -112019,11 +116076,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
112019116076 .dst_temps = .{ .mem, .unused },
112020116077 .clobbers = .{ .eflags = true },
112021116078 .each = .{ .once = &.{
112022 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
112023 .{ .@"0:", .v_ps, .cvtdq2, .tmp1y, .memia(.src0y, .tmp0, .add_unaligned_size), ._, ._ },
112024 .{ ._, .v_ps, .mova, .memia(.dst0y, .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },
112025 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
112026 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
116079 .{ ._, ._, .mov, .tmp0d, .sia(-32, .src0, .add_size), ._, ._ },
116080 .{ .@"0:", .v_ps, .cvtdq2, .tmp1y, .memi(.src0y, .tmp0), ._, ._ },
116081 .{ ._, .v_ps, .mova, .memi(.dst0y, .tmp0), .tmp1y, ._, ._ },
116082 .{ ._, ._, .sub, .tmp0d, .si(32), ._, ._ },
116083 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
112027116084 } },
112028116085 }, .{
112029116086 .required_features = .{ .avx, null, null, null },
......@@ -112033,7 +116090,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
112033116090 .{ .src = .{ .to_mem, .none, .none } },
112034116091 },
112035116092 .extra_temps = .{
112036 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
116093 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
112037116094 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },
112038116095 .unused,
112039116096 .unused,
......@@ -112048,11 +116105,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
112048116105 .dst_temps = .{ .mem, .unused },
112049116106 .clobbers = .{ .eflags = true },
112050116107 .each = .{ .once = &.{
112051 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
112052 .{ .@"0:", .v_ps, .cvtdq2, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
112053 .{ ._, .v_ps, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
112054 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
112055 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
116108 .{ ._, ._, .mov, .tmp0d, .sia(-16, .dst0, .add_size), ._, ._ },
116109 .{ .@"0:", .v_ps, .cvtdq2, .tmp1x, .memi(.src0x, .tmp0), ._, ._ },
116110 .{ ._, .v_ps, .mova, .memi(.dst0x, .tmp0), .tmp1x, ._, ._ },
116111 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
116112 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
112056116113 } },
112057116114 }, .{
112058116115 .required_features = .{ .sse2, null, null, null },
......@@ -112062,7 +116119,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
112062116119 .{ .src = .{ .to_mem, .none, .none } },
112063116120 },
112064116121 .extra_temps = .{
112065 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
116122 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
112066116123 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },
112067116124 .unused,
112068116125 .unused,
......@@ -112077,11 +116134,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
112077116134 .dst_temps = .{ .mem, .unused },
112078116135 .clobbers = .{ .eflags = true },
112079116136 .each = .{ .once = &.{
112080 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
112081 .{ .@"0:", ._ps, .cvtdq2, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
112082 .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
112083 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
112084 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
116137 .{ ._, ._, .mov, .tmp0d, .sia(-16, .dst0, .add_size), ._, ._ },
116138 .{ .@"0:", ._ps, .cvtdq2, .tmp1x, .memi(.src0x, .tmp0), ._, ._ },
116139 .{ ._, ._ps, .mova, .memi(.dst0x, .tmp0), .tmp1x, ._, ._ },
116140 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
116141 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
112085116142 } },
112086116143 }, .{
112087116144 .required_features = .{ .sse, null, null, null },
......@@ -112091,7 +116148,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
112091116148 .{ .src = .{ .to_mem, .none, .none } },
112092116149 },
112093116150 .extra_temps = .{
112094 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
116151 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
112095116152 .{ .type = .f32, .kind = .{ .rc = .sse } },
112096116153 .unused,
112097116154 .unused,
......@@ -112106,11 +116163,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
112106116163 .dst_temps = .{ .mem, .unused },
112107116164 .clobbers = .{ .eflags = true },
112108116165 .each = .{ .once = &.{
112109 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
112110 .{ .@"0:", ._ss, .cvtsi2, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
112111 .{ ._, ._ss, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
112112 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
112113 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
116166 .{ ._, ._, .mov, .tmp0d, .sia(-4, .dst0, .add_unaligned_size), ._, ._ },
116167 .{ .@"0:", ._ss, .cvtsi2, .tmp1x, .memi(.src0d, .tmp0), ._, ._ },
116168 .{ ._, ._ss, .mov, .memi(.dst0d, .tmp0), .tmp1x, ._, ._ },
116169 .{ ._, ._, .sub, .tmp0d, .si(4), ._, ._ },
116170 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
112114116171 } },
112115116172 }, .{
112116116173 .required_features = .{ .avx, null, null, null },
......@@ -112121,10 +116178,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
112121116178 },
112122116179 .call_frame = .{ .alignment = .@"16" },
112123116180 .extra_temps = .{
112124 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
112125 .{ .type = .i32, .kind = .{ .reg = .edi } },
116181 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
116182 .{ .type = .i32, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
112126116183 .{ .type = .usize, .kind = .{ .extern_func = "__floatsisf" } },
112127 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
116184 .{ .type = .f32, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
112128116185 .unused,
112129116186 .unused,
112130116187 .unused,
......@@ -112136,12 +116193,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
112136116193 .dst_temps = .{ .mem, .unused },
112137116194 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
112138116195 .each = .{ .once = &.{
112139 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
112140 .{ .@"0:", ._, .mov, .tmp1d, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
116196 .{ ._, ._, .mov, .tmp0d, .sia(-4, .dst0, .add_unaligned_size), ._, ._ },
116197 .{ .@"0:", ._, .mov, .tmp1d, .memi(.src0d, .tmp0), ._, ._ },
112141116198 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
112142 .{ ._, .v_ss, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
112143 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
112144 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
116199 .{ ._, .v_ss, .mov, .memi(.dst0d, .tmp0), .tmp3x, ._, ._ },
116200 .{ ._, ._, .sub, .tmp0d, .si(4), ._, ._ },
116201 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
112145116202 } },
112146116203 }, .{
112147116204 .required_features = .{ .sse, null, null, null },
......@@ -112152,10 +116209,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
112152116209 },
112153116210 .call_frame = .{ .alignment = .@"16" },
112154116211 .extra_temps = .{
112155 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
112156 .{ .type = .i32, .kind = .{ .reg = .edi } },
116212 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
116213 .{ .type = .i32, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
112157116214 .{ .type = .usize, .kind = .{ .extern_func = "__floatsisf" } },
112158 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
116215 .{ .type = .f32, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
112159116216 .unused,
112160116217 .unused,
112161116218 .unused,
......@@ -112167,12 +116224,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
112167116224 .dst_temps = .{ .mem, .unused },
112168116225 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
112169116226 .each = .{ .once = &.{
112170 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
112171 .{ .@"0:", ._, .mov, .tmp1d, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
116227 .{ ._, ._, .mov, .tmp0d, .sia(-4, .dst0, .add_unaligned_size), ._, ._ },
116228 .{ .@"0:", ._, .mov, .tmp1d, .memi(.src0d, .tmp0), ._, ._ },
112172116229 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
112173 .{ ._, ._ss, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
112174 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
112175 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
116230 .{ ._, ._ss, .mov, .memi(.dst0d, .tmp0), .tmp3x, ._, ._ },
116231 .{ ._, ._, .sub, .tmp0d, .si(4), ._, ._ },
116232 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
112176116233 } },
112177116234 }, .{
112178116235 .required_features = .{ .avx, null, null, null },
......@@ -112183,10 +116240,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
112183116240 },
112184116241 .call_frame = .{ .alignment = .@"16" },
112185116242 .extra_temps = .{
112186 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
112187 .{ .type = .u32, .kind = .{ .reg = .edi } },
116243 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
116244 .{ .type = .u32, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
112188116245 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsisf" } },
112189 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
116246 .{ .type = .f32, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
112190116247 .unused,
112191116248 .unused,
112192116249 .unused,
......@@ -112198,12 +116255,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
112198116255 .dst_temps = .{ .mem, .unused },
112199116256 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
112200116257 .each = .{ .once = &.{
112201 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
112202 .{ .@"0:", ._, .mov, .tmp1d, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
116258 .{ ._, ._, .mov, .tmp0d, .sia(-4, .dst0, .add_unaligned_size), ._, ._ },
116259 .{ .@"0:", ._, .mov, .tmp1d, .memi(.src0d, .tmp0), ._, ._ },
112203116260 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
112204 .{ ._, .v_ss, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
112205 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
112206 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
116261 .{ ._, .v_ss, .mov, .memi(.dst0d, .tmp0), .tmp3x, ._, ._ },
116262 .{ ._, ._, .sub, .tmp0d, .si(4), ._, ._ },
116263 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
112207116264 } },
112208116265 }, .{
112209116266 .required_features = .{ .sse, null, null, null },
......@@ -112214,10 +116271,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
112214116271 },
112215116272 .call_frame = .{ .alignment = .@"16" },
112216116273 .extra_temps = .{
112217 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
112218 .{ .type = .u32, .kind = .{ .reg = .edi } },
116274 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
116275 .{ .type = .u32, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
112219116276 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsisf" } },
112220 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
116277 .{ .type = .f32, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
112221116278 .unused,
112222116279 .unused,
112223116280 .unused,
......@@ -112229,12 +116286,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
112229116286 .dst_temps = .{ .mem, .unused },
112230116287 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
112231116288 .each = .{ .once = &.{
112232 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
112233 .{ .@"0:", ._, .mov, .tmp1d, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
116289 .{ ._, ._, .mov, .tmp0d, .sia(-4, .dst0, .add_unaligned_size), ._, ._ },
116290 .{ .@"0:", ._, .mov, .tmp1d, .memi(.src0d, .tmp0), ._, ._ },
112234116291 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
112235 .{ ._, ._ss, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
112236 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
112237 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
116292 .{ ._, ._ss, .mov, .memi(.dst0d, .tmp0), .tmp3x, ._, ._ },
116293 .{ ._, ._, .sub, .tmp0d, .si(4), ._, ._ },
116294 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
112238116295 } },
112239116296 }, .{
112240116297 .required_features = .{ .@"64bit", .avx, null, null },
......@@ -112244,7 +116301,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
112244116301 .{ .src = .{ .to_mem, .none, .none } },
112245116302 },
112246116303 .extra_temps = .{
112247 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
116304 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
112248116305 .{ .type = .f32, .kind = .{ .rc = .sse } },
112249116306 .unused,
112250116307 .unused,
......@@ -112259,12 +116316,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
112259116316 .dst_temps = .{ .mem, .unused },
112260116317 .clobbers = .{ .eflags = true },
112261116318 .each = .{ .once = &.{
112262 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
116319 .{ ._, ._, .mov, .tmp0d, .sia(-4, .dst0, .add_unaligned_size), ._, ._ },
112263116320 .{ .@"0:", .v_ps, .xor, .tmp1x, .tmp1x, .tmp1x, ._ },
112264 .{ ._, .v_ss, .cvtsi2, .tmp1x, .tmp1x, .memsia(.src0q, .@"2", .tmp0, .add_unaligned_size), ._ },
112265 .{ ._, .v_ss, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
112266 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
112267 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
116321 .{ ._, .v_ss, .cvtsi2, .tmp1x, .tmp1x, .memsi(.src0q, .@"2", .tmp0), ._ },
116322 .{ ._, .v_ss, .mov, .memi(.dst0d, .tmp0), .tmp1x, ._, ._ },
116323 .{ ._, ._, .sub, .tmp0d, .si(4), ._, ._ },
116324 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
112268116325 } },
112269116326 }, .{
112270116327 .required_features = .{ .@"64bit", .sse, null, null },
......@@ -112274,7 +116331,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
112274116331 .{ .src = .{ .to_mem, .none, .none } },
112275116332 },
112276116333 .extra_temps = .{
112277 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
116334 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
112278116335 .{ .type = .f32, .kind = .{ .rc = .sse } },
112279116336 .unused,
112280116337 .unused,
......@@ -112289,12 +116346,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
112289116346 .dst_temps = .{ .mem, .unused },
112290116347 .clobbers = .{ .eflags = true },
112291116348 .each = .{ .once = &.{
112292 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
116349 .{ ._, ._, .mov, .tmp0d, .sia(-4, .dst0, .add_unaligned_size), ._, ._ },
112293116350 .{ .@"0:", ._ps, .xor, .tmp1x, .tmp1x, ._, ._ },
112294 .{ ._, ._ss, .cvtsi2, .tmp1x, .memsia(.src0q, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
112295 .{ ._, ._ss, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
112296 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
112297 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
116351 .{ ._, ._ss, .cvtsi2, .tmp1x, .memsi(.src0q, .@"2", .tmp0), ._, ._ },
116352 .{ ._, ._ss, .mov, .memi(.dst0d, .tmp0), .tmp1x, ._, ._ },
116353 .{ ._, ._, .sub, .tmp0d, .si(4), ._, ._ },
116354 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
112298116355 } },
112299116356 }, .{
112300116357 .required_features = .{ .@"64bit", .avx, null, null },
......@@ -112305,10 +116362,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
112305116362 },
112306116363 .call_frame = .{ .alignment = .@"16" },
112307116364 .extra_temps = .{
112308 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
112309 .{ .type = .i64, .kind = .{ .reg = .rdi } },
116365 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
116366 .{ .type = .i64, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
112310116367 .{ .type = .usize, .kind = .{ .extern_func = "__floatdisf" } },
112311 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
116368 .{ .type = .f32, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
112312116369 .unused,
112313116370 .unused,
112314116371 .unused,
......@@ -112320,12 +116377,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
112320116377 .dst_temps = .{ .mem, .unused },
112321116378 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
112322116379 .each = .{ .once = &.{
112323 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
112324 .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
116380 .{ ._, ._, .mov, .tmp0d, .sia(-4, .dst0, .add_unaligned_size), ._, ._ },
116381 .{ .@"0:", ._, .mov, .tmp1q, .memsi(.src0q, .@"2", .tmp0), ._, ._ },
112325116382 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
112326 .{ ._, .v_ss, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
112327 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
112328 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
116383 .{ ._, .v_ss, .mov, .memi(.dst0d, .tmp0), .tmp3x, ._, ._ },
116384 .{ ._, ._, .sub, .tmp0d, .si(4), ._, ._ },
116385 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
112329116386 } },
112330116387 }, .{
112331116388 .required_features = .{ .@"64bit", .sse, null, null },
......@@ -112336,10 +116393,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
112336116393 },
112337116394 .call_frame = .{ .alignment = .@"16" },
112338116395 .extra_temps = .{
112339 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
112340 .{ .type = .i64, .kind = .{ .reg = .rdi } },
116396 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
116397 .{ .type = .i64, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
112341116398 .{ .type = .usize, .kind = .{ .extern_func = "__floatdisf" } },
112342 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
116399 .{ .type = .f32, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
112343116400 .unused,
112344116401 .unused,
112345116402 .unused,
......@@ -112351,12 +116408,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
112351116408 .dst_temps = .{ .mem, .unused },
112352116409 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
112353116410 .each = .{ .once = &.{
112354 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
112355 .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
116411 .{ ._, ._, .mov, .tmp0d, .sia(-4, .dst0, .add_unaligned_size), ._, ._ },
116412 .{ .@"0:", ._, .mov, .tmp1q, .memsi(.src0q, .@"2", .tmp0), ._, ._ },
112356116413 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
112357 .{ ._, ._ss, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
112358 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
112359 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
116414 .{ ._, ._ss, .mov, .memi(.dst0d, .tmp0), .tmp3x, ._, ._ },
116415 .{ ._, ._, .sub, .tmp0d, .si(4), ._, ._ },
116416 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
112360116417 } },
112361116418 }, .{
112362116419 .required_features = .{ .@"64bit", .avx, null, null },
......@@ -112367,10 +116424,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
112367116424 },
112368116425 .call_frame = .{ .alignment = .@"16" },
112369116426 .extra_temps = .{
112370 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
112371 .{ .type = .u64, .kind = .{ .reg = .rdi } },
116427 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
116428 .{ .type = .u64, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
112372116429 .{ .type = .usize, .kind = .{ .extern_func = "__floatundisf" } },
112373 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
116430 .{ .type = .f32, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
112374116431 .unused,
112375116432 .unused,
112376116433 .unused,
......@@ -112382,12 +116439,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
112382116439 .dst_temps = .{ .mem, .unused },
112383116440 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
112384116441 .each = .{ .once = &.{
112385 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
112386 .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
116442 .{ ._, ._, .mov, .tmp0d, .sia(-4, .dst0, .add_unaligned_size), ._, ._ },
116443 .{ .@"0:", ._, .mov, .tmp1q, .memsi(.src0q, .@"2", .tmp0), ._, ._ },
112387116444 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
112388 .{ ._, .v_ss, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
112389 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
112390 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
116445 .{ ._, .v_ss, .mov, .memi(.dst0d, .tmp0), .tmp3x, ._, ._ },
116446 .{ ._, ._, .sub, .tmp0d, .si(4), ._, ._ },
116447 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
112391116448 } },
112392116449 }, .{
112393116450 .required_features = .{ .@"64bit", .sse, null, null },
......@@ -112398,10 +116455,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
112398116455 },
112399116456 .call_frame = .{ .alignment = .@"16" },
112400116457 .extra_temps = .{
112401 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
112402 .{ .type = .u64, .kind = .{ .reg = .rdi } },
116458 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
116459 .{ .type = .u64, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
112403116460 .{ .type = .usize, .kind = .{ .extern_func = "__floatundisf" } },
112404 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
116461 .{ .type = .f32, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
112405116462 .unused,
112406116463 .unused,
112407116464 .unused,
......@@ -112413,15 +116470,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
112413116470 .dst_temps = .{ .mem, .unused },
112414116471 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
112415116472 .each = .{ .once = &.{
112416 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
112417 .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
116473 .{ ._, ._, .mov, .tmp0d, .sia(-4, .dst0, .add_unaligned_size), ._, ._ },
116474 .{ .@"0:", ._, .mov, .tmp1q, .memsi(.src0q, .@"2", .tmp0), ._, ._ },
112418116475 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
112419 .{ ._, ._ss, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
112420 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
112421 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
116476 .{ ._, ._ss, .mov, .memi(.dst0d, .tmp0), .tmp3x, ._, ._ },
116477 .{ ._, ._, .sub, .tmp0d, .si(4), ._, ._ },
116478 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
112422116479 } },
112423116480 }, .{
112424 .required_features = .{ .@"64bit", .avx, null, null },
116481 .required_cc_abi = .sysv64,
116482 .required_features = .{ .avx, null, null, null },
112425116483 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any, .any },
112426116484 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any },
112427116485 .patterns = &.{
......@@ -112429,11 +116487,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
112429116487 },
112430116488 .call_frame = .{ .alignment = .@"16" },
112431116489 .extra_temps = .{
112432 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
112433 .{ .type = .u64, .kind = .{ .reg = .rdi } },
112434 .{ .type = .i64, .kind = .{ .reg = .rsi } },
116490 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
116491 .{ .type = .i128, .kind = .{ .param_gpr_pair = .{ .cc = .ccc, .after = 0, .at = 0 } } },
112435116492 .{ .type = .usize, .kind = .{ .extern_func = "__floattisf" } },
112436 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
116493 .{ .type = .f32, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
116494 .unused,
112437116495 .unused,
112438116496 .unused,
112439116497 .unused,
......@@ -112444,16 +116502,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
112444116502 .dst_temps = .{ .mem, .unused },
112445116503 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
112446116504 .each = .{ .once = &.{
112447 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
112448 .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
112449 .{ ._, ._, .mov, .tmp2q, .memsiad(.src0q, .@"4", .tmp0, .add_unaligned_size, 8), ._, ._ },
112450 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
112451 .{ ._, .v_ss, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp4x, ._, ._ },
112452 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
112453 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
116505 .{ ._, ._, .mov, .tmp0d, .sia(-4, .dst0, .add_unaligned_size), ._, ._ },
116506 .{ .@"0:", ._, .mov, .tmp1q0, .memsi(.src0q, .@"4", .tmp0), ._, ._ },
116507 .{ ._, ._, .mov, .tmp1q1, .memsid(.src0q, .@"4", .tmp0, 8), ._, ._ },
116508 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
116509 .{ ._, .v_ss, .mov, .memi(.dst0d, .tmp0), .tmp3x, ._, ._ },
116510 .{ ._, ._, .sub, .tmp0d, .si(4), ._, ._ },
116511 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
112454116512 } },
112455116513 }, .{
112456 .required_features = .{ .@"64bit", .sse, null, null },
116514 .required_cc_abi = .win64,
116515 .required_features = .{ .avx, null, null, null },
112457116516 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any, .any },
112458116517 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any },
112459116518 .patterns = &.{
......@@ -112461,11 +116520,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
112461116520 },
112462116521 .call_frame = .{ .alignment = .@"16" },
112463116522 .extra_temps = .{
112464 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
112465 .{ .type = .u64, .kind = .{ .reg = .rdi } },
112466 .{ .type = .i64, .kind = .{ .reg = .rsi } },
116523 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
116524 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
112467116525 .{ .type = .usize, .kind = .{ .extern_func = "__floattisf" } },
112468 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
116526 .{ .type = .f32, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
116527 .unused,
112469116528 .unused,
112470116529 .unused,
112471116530 .unused,
......@@ -112476,16 +116535,81 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
112476116535 .dst_temps = .{ .mem, .unused },
112477116536 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
112478116537 .each = .{ .once = &.{
112479 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
112480 .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
112481 .{ ._, ._, .mov, .tmp2q, .memsiad(.src0q, .@"4", .tmp0, .add_unaligned_size, 8), ._, ._ },
112482 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
112483 .{ ._, ._ss, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp4x, ._, ._ },
112484 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
112485 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
116538 .{ ._, ._, .mov, .tmp0d, .sia(-4, .dst0, .add_unaligned_size), ._, ._ },
116539 .{ .@"0:", ._, .lea, .tmp1p, .memsi(.src0, .@"4", .tmp0), ._, ._ },
116540 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
116541 .{ ._, .v_ss, .mov, .memi(.dst0d, .tmp0), .tmp3x, ._, ._ },
116542 .{ ._, ._, .sub, .tmp0d, .si(4), ._, ._ },
116543 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
112486116544 } },
112487116545 }, .{
112488 .required_features = .{ .@"64bit", .avx, null, null },
116546 .required_cc_abi = .sysv64,
116547 .required_features = .{ .sse, null, null, null },
116548 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any, .any },
116549 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any },
116550 .patterns = &.{
116551 .{ .src = .{ .to_mem, .none, .none } },
116552 },
116553 .call_frame = .{ .alignment = .@"16" },
116554 .extra_temps = .{
116555 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
116556 .{ .type = .u128, .kind = .{ .param_gpr_pair = .{ .cc = .ccc, .after = 0, .at = 0 } } },
116557 .{ .type = .usize, .kind = .{ .extern_func = "__floattisf" } },
116558 .{ .type = .f32, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
116559 .unused,
116560 .unused,
116561 .unused,
116562 .unused,
116563 .unused,
116564 .unused,
116565 .unused,
116566 },
116567 .dst_temps = .{ .mem, .unused },
116568 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
116569 .each = .{ .once = &.{
116570 .{ ._, ._, .mov, .tmp0d, .sia(-4, .dst0, .add_unaligned_size), ._, ._ },
116571 .{ .@"0:", ._, .mov, .tmp1q0, .memsi(.src0q, .@"4", .tmp0), ._, ._ },
116572 .{ ._, ._, .mov, .tmp1q1, .memsid(.src0q, .@"4", .tmp0, 8), ._, ._ },
116573 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
116574 .{ ._, ._ss, .mov, .memi(.dst0d, .tmp0), .tmp3x, ._, ._ },
116575 .{ ._, ._, .sub, .tmp0d, .si(4), ._, ._ },
116576 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
116577 } },
116578 }, .{
116579 .required_cc_abi = .win64,
116580 .required_features = .{ .sse, null, null, null },
116581 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any, .any },
116582 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any },
116583 .patterns = &.{
116584 .{ .src = .{ .to_mem, .none, .none } },
116585 },
116586 .call_frame = .{ .alignment = .@"16" },
116587 .extra_temps = .{
116588 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
116589 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
116590 .{ .type = .usize, .kind = .{ .extern_func = "__floattisf" } },
116591 .{ .type = .f32, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
116592 .unused,
116593 .unused,
116594 .unused,
116595 .unused,
116596 .unused,
116597 .unused,
116598 .unused,
116599 },
116600 .dst_temps = .{ .mem, .unused },
116601 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
116602 .each = .{ .once = &.{
116603 .{ ._, ._, .mov, .tmp0d, .sia(-4, .dst0, .add_unaligned_size), ._, ._ },
116604 .{ .@"0:", ._, .lea, .tmp1p, .memsi(.src0, .@"4", .tmp0), ._, ._ },
116605 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
116606 .{ ._, ._ss, .mov, .memi(.dst0d, .tmp0), .tmp3x, ._, ._ },
116607 .{ ._, ._, .sub, .tmp0d, .si(4), ._, ._ },
116608 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
116609 } },
116610 }, .{
116611 .required_cc_abi = .sysv64,
116612 .required_features = .{ .avx, null, null, null },
112489116613 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any, .any },
112490116614 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any },
112491116615 .patterns = &.{
......@@ -112493,11 +116617,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
112493116617 },
112494116618 .call_frame = .{ .alignment = .@"16" },
112495116619 .extra_temps = .{
112496 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
112497 .{ .type = .u64, .kind = .{ .reg = .rdi } },
112498 .{ .type = .u64, .kind = .{ .reg = .rsi } },
116620 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
116621 .{ .type = .u128, .kind = .{ .param_gpr_pair = .{ .cc = .ccc, .after = 0, .at = 0 } } },
112499116622 .{ .type = .usize, .kind = .{ .extern_func = "__floatuntisf" } },
112500 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
116623 .{ .type = .f32, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
116624 .unused,
112501116625 .unused,
112502116626 .unused,
112503116627 .unused,
......@@ -112508,16 +116632,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
112508116632 .dst_temps = .{ .mem, .unused },
112509116633 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
112510116634 .each = .{ .once = &.{
112511 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
112512 .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
112513 .{ ._, ._, .mov, .tmp2q, .memsiad(.src0q, .@"4", .tmp0, .add_unaligned_size, 8), ._, ._ },
112514 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
112515 .{ ._, .v_ss, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp4x, ._, ._ },
112516 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
112517 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
116635 .{ ._, ._, .mov, .tmp0d, .sia(-4, .dst0, .add_unaligned_size), ._, ._ },
116636 .{ .@"0:", ._, .mov, .tmp1q0, .memsi(.src0q, .@"4", .tmp0), ._, ._ },
116637 .{ ._, ._, .mov, .tmp1q1, .memsid(.src0q, .@"4", .tmp0, 8), ._, ._ },
116638 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
116639 .{ ._, .v_ss, .mov, .memi(.dst0d, .tmp0), .tmp3x, ._, ._ },
116640 .{ ._, ._, .sub, .tmp0d, .si(4), ._, ._ },
116641 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
112518116642 } },
112519116643 }, .{
112520 .required_features = .{ .@"64bit", .sse, null, null },
116644 .required_cc_abi = .win64,
116645 .required_features = .{ .avx, null, null, null },
112521116646 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any, .any },
112522116647 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any },
112523116648 .patterns = &.{
......@@ -112525,11 +116650,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
112525116650 },
112526116651 .call_frame = .{ .alignment = .@"16" },
112527116652 .extra_temps = .{
112528 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
112529 .{ .type = .u64, .kind = .{ .reg = .rdi } },
112530 .{ .type = .u64, .kind = .{ .reg = .rsi } },
116653 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
116654 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
112531116655 .{ .type = .usize, .kind = .{ .extern_func = "__floatuntisf" } },
112532 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
116656 .{ .type = .f32, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
116657 .unused,
112533116658 .unused,
112534116659 .unused,
112535116660 .unused,
......@@ -112540,13 +116665,77 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
112540116665 .dst_temps = .{ .mem, .unused },
112541116666 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
112542116667 .each = .{ .once = &.{
112543 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
112544 .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
112545 .{ ._, ._, .mov, .tmp2q, .memsiad(.src0q, .@"4", .tmp0, .add_unaligned_size, 8), ._, ._ },
112546 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
112547 .{ ._, ._ss, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp4x, ._, ._ },
112548 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
112549 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
116668 .{ ._, ._, .mov, .tmp0d, .sia(-4, .dst0, .add_unaligned_size), ._, ._ },
116669 .{ .@"0:", ._, .lea, .tmp1p, .memsi(.src0, .@"4", .tmp0), ._, ._ },
116670 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
116671 .{ ._, .v_ss, .mov, .memi(.dst0d, .tmp0), .tmp3x, ._, ._ },
116672 .{ ._, ._, .sub, .tmp0d, .si(4), ._, ._ },
116673 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
116674 } },
116675 }, .{
116676 .required_cc_abi = .sysv64,
116677 .required_features = .{ .sse, null, null, null },
116678 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any, .any },
116679 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any },
116680 .patterns = &.{
116681 .{ .src = .{ .to_mem, .none, .none } },
116682 },
116683 .call_frame = .{ .alignment = .@"16" },
116684 .extra_temps = .{
116685 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
116686 .{ .type = .u128, .kind = .{ .param_gpr_pair = .{ .cc = .ccc, .after = 0, .at = 0 } } },
116687 .{ .type = .usize, .kind = .{ .extern_func = "__floatuntisf" } },
116688 .{ .type = .f32, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
116689 .unused,
116690 .unused,
116691 .unused,
116692 .unused,
116693 .unused,
116694 .unused,
116695 .unused,
116696 },
116697 .dst_temps = .{ .mem, .unused },
116698 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
116699 .each = .{ .once = &.{
116700 .{ ._, ._, .mov, .tmp0d, .sia(-4, .dst0, .add_unaligned_size), ._, ._ },
116701 .{ .@"0:", ._, .mov, .tmp1q0, .memsi(.src0q, .@"4", .tmp0), ._, ._ },
116702 .{ ._, ._, .mov, .tmp1q1, .memsid(.src0q, .@"4", .tmp0, 8), ._, ._ },
116703 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
116704 .{ ._, ._ss, .mov, .memi(.dst0d, .tmp0), .tmp3x, ._, ._ },
116705 .{ ._, ._, .sub, .tmp0d, .si(4), ._, ._ },
116706 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
116707 } },
116708 }, .{
116709 .required_cc_abi = .win64,
116710 .required_features = .{ .sse, null, null, null },
116711 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any, .any },
116712 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any },
116713 .patterns = &.{
116714 .{ .src = .{ .to_mem, .none, .none } },
116715 },
116716 .call_frame = .{ .alignment = .@"16" },
116717 .extra_temps = .{
116718 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
116719 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
116720 .{ .type = .usize, .kind = .{ .extern_func = "__floatuntisf" } },
116721 .{ .type = .f32, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
116722 .unused,
116723 .unused,
116724 .unused,
116725 .unused,
116726 .unused,
116727 .unused,
116728 .unused,
116729 },
116730 .dst_temps = .{ .mem, .unused },
116731 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
116732 .each = .{ .once = &.{
116733 .{ ._, ._, .mov, .tmp0d, .sia(-4, .dst0, .add_unaligned_size), ._, ._ },
116734 .{ .@"0:", ._, .lea, .tmp1p, .memsi(.src0, .@"4", .tmp0), ._, ._ },
116735 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
116736 .{ ._, ._ss, .mov, .memi(.dst0d, .tmp0), .tmp3x, ._, ._ },
116737 .{ ._, ._, .sub, .tmp0d, .si(4), ._, ._ },
116738 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
112550116739 } },
112551116740 }, .{
112552116741 .required_features = .{ .@"64bit", .avx, null, null },
......@@ -112558,11 +116747,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
112558116747 .call_frame = .{ .alignment = .@"16" },
112559116748 .extra_temps = .{
112560116749 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
112561 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
112562 .{ .type = .usize, .kind = .{ .reg = .rdi } },
112563 .{ .type = .usize, .kind = .{ .reg = .rsi } },
116750 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
116751 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
116752 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
112564116753 .{ .type = .usize, .kind = .{ .extern_func = "__floateisf" } },
112565 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
116754 .{ .type = .f32, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
112566116755 .unused,
112567116756 .unused,
112568116757 .unused,
......@@ -112572,15 +116761,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
112572116761 .dst_temps = .{ .mem, .unused },
112573116762 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
112574116763 .each = .{ .once = &.{
112575 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
112576 .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
116764 .{ ._, ._, .lea, .tmp0p, .mema(.src0, .add_unaligned_size_sub_elem_size), ._, ._ },
116765 .{ ._, ._, .mov, .tmp1d, .sia(-4, .dst0, .add_unaligned_size), ._, ._ },
112577116766 .{ .@"0:", ._, .mov, .tmp2p, .tmp0p, ._, ._ },
112578116767 .{ ._, ._, .mov, .tmp3d, .sa(.src0, .add_bit_size), ._, ._ },
112579116768 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
112580 .{ ._, .v_ss, .mov, .memia(.dst0d, .tmp1, .add_unaligned_size), .tmp5x, ._, ._ },
112581 .{ ._, ._, .lea, .tmp0p, .leaa(.tmp0, .add_src0_elem_size), ._, ._ },
112582 .{ ._, ._, .add, .tmp1p, .si(4), ._, ._ },
112583 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
116769 .{ ._, .v_ss, .mov, .memi(.dst0d, .tmp1), .tmp5x, ._, ._ },
116770 .{ ._, ._, .lea, .tmp0p, .leaa(.tmp0, .sub_src0_elem_size), ._, ._ },
116771 .{ ._, ._, .sub, .tmp1d, .si(4), ._, ._ },
116772 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
112584116773 } },
112585116774 }, .{
112586116775 .required_features = .{ .@"64bit", .sse, null, null },
......@@ -112592,11 +116781,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
112592116781 .call_frame = .{ .alignment = .@"16" },
112593116782 .extra_temps = .{
112594116783 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
112595 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
112596 .{ .type = .usize, .kind = .{ .reg = .rdi } },
112597 .{ .type = .usize, .kind = .{ .reg = .rsi } },
116784 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
116785 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
116786 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
112598116787 .{ .type = .usize, .kind = .{ .extern_func = "__floateisf" } },
112599 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
116788 .{ .type = .f32, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
112600116789 .unused,
112601116790 .unused,
112602116791 .unused,
......@@ -112606,15 +116795,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
112606116795 .dst_temps = .{ .mem, .unused },
112607116796 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
112608116797 .each = .{ .once = &.{
112609 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
112610 .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
116798 .{ ._, ._, .lea, .tmp0p, .mema(.src0, .add_unaligned_size_sub_elem_size), ._, ._ },
116799 .{ ._, ._, .mov, .tmp1d, .sia(-4, .dst0, .add_unaligned_size), ._, ._ },
112611116800 .{ .@"0:", ._, .mov, .tmp2p, .tmp0p, ._, ._ },
112612116801 .{ ._, ._, .mov, .tmp3d, .sa(.src0, .add_bit_size), ._, ._ },
112613116802 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
112614 .{ ._, ._ss, .mov, .memia(.dst0d, .tmp1, .add_unaligned_size), .tmp5x, ._, ._ },
112615 .{ ._, ._, .lea, .tmp0p, .leaa(.tmp0, .add_src0_elem_size), ._, ._ },
112616 .{ ._, ._, .add, .tmp1p, .si(4), ._, ._ },
112617 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
116803 .{ ._, ._ss, .mov, .memi(.dst0d, .tmp1), .tmp5x, ._, ._ },
116804 .{ ._, ._, .lea, .tmp0p, .leaa(.tmp0, .sub_src0_elem_size), ._, ._ },
116805 .{ ._, ._, .sub, .tmp1d, .si(4), ._, ._ },
116806 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
112618116807 } },
112619116808 }, .{
112620116809 .required_features = .{ .@"64bit", .avx, null, null },
......@@ -112626,11 +116815,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
112626116815 .call_frame = .{ .alignment = .@"16" },
112627116816 .extra_temps = .{
112628116817 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
112629 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
112630 .{ .type = .usize, .kind = .{ .reg = .rdi } },
112631 .{ .type = .usize, .kind = .{ .reg = .rsi } },
116818 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
116819 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
116820 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
112632116821 .{ .type = .usize, .kind = .{ .extern_func = "__floatuneisf" } },
112633 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
116822 .{ .type = .f32, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
112634116823 .unused,
112635116824 .unused,
112636116825 .unused,
......@@ -112640,15 +116829,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
112640116829 .dst_temps = .{ .mem, .unused },
112641116830 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
112642116831 .each = .{ .once = &.{
112643 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
112644 .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
116832 .{ ._, ._, .lea, .tmp0p, .mema(.src0, .add_unaligned_size_sub_elem_size), ._, ._ },
116833 .{ ._, ._, .mov, .tmp1d, .sia(-4, .dst0, .add_unaligned_size), ._, ._ },
112645116834 .{ .@"0:", ._, .mov, .tmp2p, .tmp0p, ._, ._ },
112646116835 .{ ._, ._, .mov, .tmp3d, .sa(.src0, .add_bit_size), ._, ._ },
112647116836 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
112648 .{ ._, .v_ss, .mov, .memia(.dst0d, .tmp1, .add_unaligned_size), .tmp5x, ._, ._ },
112649 .{ ._, ._, .lea, .tmp0p, .leaa(.tmp0, .add_src0_elem_size), ._, ._ },
112650 .{ ._, ._, .add, .tmp1p, .si(4), ._, ._ },
112651 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
116837 .{ ._, .v_ss, .mov, .memi(.dst0d, .tmp1), .tmp5x, ._, ._ },
116838 .{ ._, ._, .lea, .tmp0p, .leaa(.tmp0, .sub_src0_elem_size), ._, ._ },
116839 .{ ._, ._, .sub, .tmp1d, .si(4), ._, ._ },
116840 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
112652116841 } },
112653116842 }, .{
112654116843 .required_features = .{ .@"64bit", .sse, null, null },
......@@ -112660,11 +116849,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
112660116849 .call_frame = .{ .alignment = .@"16" },
112661116850 .extra_temps = .{
112662116851 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
112663 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
112664 .{ .type = .usize, .kind = .{ .reg = .rdi } },
112665 .{ .type = .usize, .kind = .{ .reg = .rsi } },
116852 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
116853 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
116854 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
112666116855 .{ .type = .usize, .kind = .{ .extern_func = "__floatuneisf" } },
112667 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
116856 .{ .type = .f32, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
112668116857 .unused,
112669116858 .unused,
112670116859 .unused,
......@@ -112674,15 +116863,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
112674116863 .dst_temps = .{ .mem, .unused },
112675116864 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
112676116865 .each = .{ .once = &.{
112677 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
112678 .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
116866 .{ ._, ._, .lea, .tmp0p, .mema(.src0, .add_unaligned_size_sub_elem_size), ._, ._ },
116867 .{ ._, ._, .mov, .tmp1d, .sia(-4, .dst0, .add_unaligned_size), ._, ._ },
112679116868 .{ .@"0:", ._, .mov, .tmp2p, .tmp0p, ._, ._ },
112680116869 .{ ._, ._, .mov, .tmp3d, .sa(.src0, .add_bit_size), ._, ._ },
112681116870 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
112682 .{ ._, ._ss, .mov, .memia(.dst0d, .tmp1, .add_unaligned_size), .tmp5x, ._, ._ },
112683 .{ ._, ._, .lea, .tmp0p, .leaa(.tmp0, .add_src0_elem_size), ._, ._ },
112684 .{ ._, ._, .add, .tmp1p, .si(4), ._, ._ },
112685 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
116871 .{ ._, ._ss, .mov, .memi(.dst0d, .tmp1), .tmp5x, ._, ._ },
116872 .{ ._, ._, .lea, .tmp0p, .leaa(.tmp0, .sub_src0_elem_size), ._, ._ },
116873 .{ ._, ._, .sub, .tmp1d, .si(4), ._, ._ },
116874 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
112686116875 } },
112687116876 }, .{
112688116877 .required_features = .{ .avx, null, null, null },
......@@ -113295,11 +117484,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
113295117484 .{ .@"0:", .f_p, .st, .dst0q, ._, ._, ._ },
113296117485 } },
113297117486 }, .{
113298 .required_features = .{ .@"64bit", .sse, null, null },
117487 .required_cc_abi = .sysv64,
117488 .required_features = .{ .sse, null, null, null },
113299117489 .src_constraints = .{ .{ .signed_int = .xword }, .any, .any },
113300117490 .dst_constraints = .{ .{ .float = .qword }, .any },
113301117491 .patterns = &.{
113302 .{ .src = .{ .{ .to_reg_pair = .{ .rdi, .rsi } }, .none, .none } },
117492 .{ .src = .{ .{ .to_param_gpr_pair = .{ .cc = .ccc, .after = 0, .at = 0 } }, .none, .none } },
113303117493 },
113304117494 .call_frame = .{ .alignment = .@"16" },
113305117495 .extra_temps = .{
......@@ -113315,17 +117505,46 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
113315117505 .unused,
113316117506 .unused,
113317117507 },
113318 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },
117508 .dst_temps = .{ .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
113319117509 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
113320117510 .each = .{ .once = &.{
113321117511 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
113322117512 } },
113323117513 }, .{
113324 .required_features = .{ .@"64bit", .sse, null, null },
117514 .required_cc_abi = .win64,
117515 .required_features = .{ .sse, null, null, null },
117516 .src_constraints = .{ .{ .signed_int = .xword }, .any, .any },
117517 .dst_constraints = .{ .{ .float = .qword }, .any },
117518 .patterns = &.{
117519 .{ .src = .{ .to_mem, .none, .none } },
117520 },
117521 .call_frame = .{ .alignment = .@"16" },
117522 .extra_temps = .{
117523 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
117524 .{ .type = .usize, .kind = .{ .extern_func = "__floattidf" } },
117525 .unused,
117526 .unused,
117527 .unused,
117528 .unused,
117529 .unused,
117530 .unused,
117531 .unused,
117532 .unused,
117533 .unused,
117534 },
117535 .dst_temps = .{ .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
117536 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
117537 .each = .{ .once = &.{
117538 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
117539 .{ ._, ._, .call, .tmp1d, ._, ._, ._ },
117540 } },
117541 }, .{
117542 .required_cc_abi = .sysv64,
117543 .required_features = .{ .sse, null, null, null },
113325117544 .src_constraints = .{ .{ .unsigned_int = .xword }, .any, .any },
113326117545 .dst_constraints = .{ .{ .float = .qword }, .any },
113327117546 .patterns = &.{
113328 .{ .src = .{ .{ .to_reg_pair = .{ .rdi, .rsi } }, .none, .none } },
117547 .{ .src = .{ .{ .to_param_gpr_pair = .{ .cc = .ccc, .after = 0, .at = 0 } }, .none, .none } },
113329117548 },
113330117549 .call_frame = .{ .alignment = .@"16" },
113331117550 .extra_temps = .{
......@@ -113341,11 +117560,39 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
113341117560 .unused,
113342117561 .unused,
113343117562 },
113344 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },
117563 .dst_temps = .{ .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
113345117564 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
113346117565 .each = .{ .once = &.{
113347117566 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
113348117567 } },
117568 }, .{
117569 .required_cc_abi = .win64,
117570 .required_features = .{ .sse, null, null, null },
117571 .src_constraints = .{ .{ .unsigned_int = .xword }, .any, .any },
117572 .dst_constraints = .{ .{ .float = .qword }, .any },
117573 .patterns = &.{
117574 .{ .src = .{ .to_mem, .none, .none } },
117575 },
117576 .call_frame = .{ .alignment = .@"16" },
117577 .extra_temps = .{
117578 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
117579 .{ .type = .usize, .kind = .{ .extern_func = "__floatuntidf" } },
117580 .unused,
117581 .unused,
117582 .unused,
117583 .unused,
117584 .unused,
117585 .unused,
117586 .unused,
117587 .unused,
117588 .unused,
117589 },
117590 .dst_temps = .{ .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
117591 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
117592 .each = .{ .once = &.{
117593 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
117594 .{ ._, ._, .call, .tmp1d, ._, ._, ._ },
117595 } },
113349117596 }, .{
113350117597 .required_features = .{ .@"64bit", .sse, null, null },
113351117598 .src_constraints = .{ .{ .remainder_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any },
......@@ -113355,8 +117602,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
113355117602 },
113356117603 .call_frame = .{ .alignment = .@"16" },
113357117604 .extra_temps = .{
113358 .{ .type = .usize, .kind = .{ .reg = .rdi } },
113359 .{ .type = .usize, .kind = .{ .reg = .rsi } },
117605 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
117606 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
113360117607 .{ .type = .usize, .kind = .{ .extern_func = "__floateidf" } },
113361117608 .unused,
113362117609 .unused,
......@@ -113367,7 +117614,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
113367117614 .unused,
113368117615 .unused,
113369117616 },
113370 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },
117617 .dst_temps = .{ .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
113371117618 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
113372117619 .each = .{ .once = &.{
113373117620 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
......@@ -113383,8 +117630,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
113383117630 },
113384117631 .call_frame = .{ .alignment = .@"16" },
113385117632 .extra_temps = .{
113386 .{ .type = .usize, .kind = .{ .reg = .rdi } },
113387 .{ .type = .usize, .kind = .{ .reg = .rsi } },
117633 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
117634 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
113388117635 .{ .type = .usize, .kind = .{ .extern_func = "__floatuneidf" } },
113389117636 .unused,
113390117637 .unused,
......@@ -113395,7 +117642,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
113395117642 .unused,
113396117643 .unused,
113397117644 },
113398 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },
117645 .dst_temps = .{ .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
113399117646 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
113400117647 .each = .{ .once = &.{
113401117648 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
......@@ -113488,7 +117735,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
113488117735 .{ .src = .{ .to_mem, .none, .none } },
113489117736 },
113490117737 .extra_temps = .{
113491 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
117738 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
113492117739 .{ .type = .vector_8_i32, .kind = .{ .rc = .sse } },
113493117740 .unused,
113494117741 .unused,
......@@ -113503,12 +117750,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
113503117750 .dst_temps = .{ .mem, .unused },
113504117751 .clobbers = .{ .eflags = true },
113505117752 .each = .{ .once = &.{
113506 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
113507 .{ .@"0:", .vp_d, .movsxb, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
117753 .{ ._, ._, .mov, .tmp0d, .sia(-4, .src0, .add_size), ._, ._ },
117754 .{ .@"0:", .vp_d, .movsxb, .tmp1x, .memi(.src0d, .tmp0), ._, ._ },
113508117755 .{ ._, .v_pd, .cvtdq2, .tmp1y, .tmp1x, ._, ._ },
113509 .{ ._, .v_pd, .mova, .memsia(.dst0y, .@"8", .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },
113510 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
113511 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
117756 .{ ._, .v_pd, .mova, .memsi(.dst0y, .@"8", .tmp0), .tmp1y, ._, ._ },
117757 .{ ._, ._, .sub, .tmp0d, .si(4), ._, ._ },
117758 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
113512117759 } },
113513117760 }, .{
113514117761 .required_features = .{ .avx, null, null, null },
......@@ -113518,7 +117765,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
113518117765 .{ .src = .{ .to_mem, .none, .none } },
113519117766 },
113520117767 .extra_temps = .{
113521 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
117768 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
113522117769 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },
113523117770 .unused,
113524117771 .unused,
......@@ -113533,14 +117780,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
113533117780 .dst_temps = .{ .mem, .unused },
113534117781 .clobbers = .{ .eflags = true },
113535117782 .each = .{ .once = &.{
113536 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
117783 .{ ._, ._, .mov, .tmp0d, .sia(-2, .src0, .add_size), ._, ._ },
113537117784 .{ .@"0:", .vp_, .xor, .tmp1x, .tmp1x, .tmp1x, ._ },
113538 .{ ._, .vp_w, .insr, .tmp1x, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0) },
117785 .{ ._, .vp_w, .insr, .tmp1x, .tmp1x, .memi(.src0w, .tmp0), .ui(0) },
113539117786 .{ ._, .vp_d, .movsxb, .tmp1x, .tmp1d, ._, ._ },
113540117787 .{ ._, .v_pd, .cvtdq2, .tmp1x, .tmp1q, ._, ._ },
113541 .{ ._, .v_pd, .mova, .memsia(.dst0x, .@"8", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
113542 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
113543 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
117788 .{ ._, .v_pd, .mova, .memsi(.dst0x, .@"8", .tmp0), .tmp1x, ._, ._ },
117789 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
117790 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
113544117791 } },
113545117792 }, .{
113546117793 .required_features = .{ .sse4_1, null, null, null },
......@@ -113550,7 +117797,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
113550117797 .{ .src = .{ .to_mem, .none, .none } },
113551117798 },
113552117799 .extra_temps = .{
113553 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
117800 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
113554117801 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },
113555117802 .unused,
113556117803 .unused,
......@@ -113565,14 +117812,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
113565117812 .dst_temps = .{ .mem, .unused },
113566117813 .clobbers = .{ .eflags = true },
113567117814 .each = .{ .once = &.{
113568 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
117815 .{ ._, ._, .mov, .tmp0d, .sia(-2, .src0, .add_size), ._, ._ },
113569117816 .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ },
113570 .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0), ._ },
117817 .{ ._, .p_w, .insr, .tmp1x, .memi(.src0w, .tmp0), .ui(0), ._ },
113571117818 .{ ._, .p_d, .movsxb, .tmp1x, .tmp1d, ._, ._ },
113572117819 .{ ._, ._pd, .cvtdq2, .tmp1x, .tmp1q, ._, ._ },
113573 .{ ._, ._pd, .mova, .memsia(.dst0x, .@"8", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
113574 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
113575 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
117820 .{ ._, ._pd, .mova, .memsi(.dst0x, .@"8", .tmp0), .tmp1x, ._, ._ },
117821 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
117822 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
113576117823 } },
113577117824 }, .{
113578117825 .required_features = .{ .avx2, null, null, null },
......@@ -113582,7 +117829,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
113582117829 .{ .src = .{ .to_mem, .none, .none } },
113583117830 },
113584117831 .extra_temps = .{
113585 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
117832 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
113586117833 .{ .type = .vector_8_i32, .kind = .{ .rc = .sse } },
113587117834 .unused,
113588117835 .unused,
......@@ -113597,12 +117844,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
113597117844 .dst_temps = .{ .mem, .unused },
113598117845 .clobbers = .{ .eflags = true },
113599117846 .each = .{ .once = &.{
113600 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
113601 .{ .@"0:", .vp_d, .movzxb, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
117847 .{ ._, ._, .mov, .tmp0d, .sia(-4, .src0, .add_size), ._, ._ },
117848 .{ .@"0:", .vp_d, .movzxb, .tmp1x, .memi(.src0d, .tmp0), ._, ._ },
113602117849 .{ ._, .v_pd, .cvtdq2, .tmp1y, .tmp1x, ._, ._ },
113603 .{ ._, .v_pd, .mova, .memsia(.dst0y, .@"8", .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },
113604 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
113605 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
117850 .{ ._, .v_pd, .mova, .memsi(.dst0y, .@"8", .tmp0), .tmp1y, ._, ._ },
117851 .{ ._, ._, .sub, .tmp0d, .si(4), ._, ._ },
117852 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
113606117853 } },
113607117854 }, .{
113608117855 .required_features = .{ .avx, null, null, null },
......@@ -113612,7 +117859,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
113612117859 .{ .src = .{ .to_mem, .none, .none } },
113613117860 },
113614117861 .extra_temps = .{
113615 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
117862 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
113616117863 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },
113617117864 .unused,
113618117865 .unused,
......@@ -113627,14 +117874,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
113627117874 .dst_temps = .{ .mem, .unused },
113628117875 .clobbers = .{ .eflags = true },
113629117876 .each = .{ .once = &.{
113630 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
117877 .{ ._, ._, .mov, .tmp0d, .sia(-2, .src0, .add_size), ._, ._ },
113631117878 .{ .@"0:", .vp_, .xor, .tmp1x, .tmp1x, .tmp1x, ._ },
113632 .{ ._, .vp_w, .insr, .tmp1x, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0) },
117879 .{ ._, .vp_w, .insr, .tmp1x, .tmp1x, .memi(.src0w, .tmp0), .ui(0) },
113633117880 .{ ._, .vp_d, .movzxb, .tmp1x, .tmp1d, ._, ._ },
113634117881 .{ ._, .v_pd, .cvtdq2, .tmp1x, .tmp1q, ._, ._ },
113635 .{ ._, .v_pd, .mova, .memsia(.dst0x, .@"8", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
113636 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
113637 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
117882 .{ ._, .v_pd, .mova, .memsi(.dst0x, .@"8", .tmp0), .tmp1x, ._, ._ },
117883 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
117884 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
113638117885 } },
113639117886 }, .{
113640117887 .required_features = .{ .sse4_1, null, null, null },
......@@ -113644,7 +117891,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
113644117891 .{ .src = .{ .to_mem, .none, .none } },
113645117892 },
113646117893 .extra_temps = .{
113647 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
117894 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
113648117895 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },
113649117896 .unused,
113650117897 .unused,
......@@ -113659,14 +117906,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
113659117906 .dst_temps = .{ .mem, .unused },
113660117907 .clobbers = .{ .eflags = true },
113661117908 .each = .{ .once = &.{
113662 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
117909 .{ ._, ._, .mov, .tmp0d, .sia(-2, .src0, .add_size), ._, ._ },
113663117910 .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ },
113664 .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0), ._ },
117911 .{ ._, .p_w, .insr, .tmp1x, .memi(.src0w, .tmp0), .ui(0), ._ },
113665117912 .{ ._, .p_d, .movzxb, .tmp1x, .tmp1d, ._, ._ },
113666117913 .{ ._, ._pd, .cvtdq2, .tmp1x, .tmp1q, ._, ._ },
113667 .{ ._, ._pd, .mova, .memsia(.dst0x, .@"8", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
113668 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
113669 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
117914 .{ ._, ._pd, .mova, .memsi(.dst0x, .@"8", .tmp0), .tmp1x, ._, ._ },
117915 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
117916 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
113670117917 } },
113671117918 }, .{
113672117919 .required_features = .{ .avx, .slow_incdec, null, null },
......@@ -113677,10 +117924,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
113677117924 },
113678117925 .call_frame = .{ .alignment = .@"16" },
113679117926 .extra_temps = .{
113680 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
113681 .{ .type = .i32, .kind = .{ .reg = .edi } },
117927 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
117928 .{ .type = .i32, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
113682117929 .{ .type = .usize, .kind = .{ .extern_func = "__floatsidf" } },
113683 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
117930 .{ .type = .f64, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
113684117931 .unused,
113685117932 .unused,
113686117933 .unused,
......@@ -113692,12 +117939,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
113692117939 .dst_temps = .{ .mem, .unused },
113693117940 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
113694117941 .each = .{ .once = &.{
113695 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
113696 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
117942 .{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_unaligned_size), ._, ._ },
117943 .{ .@"0:", ._, .movsx, .tmp1d, .memi(.src0b, .tmp0), ._, ._ },
113697117944 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
113698 .{ ._, .v_sd, .mov, .memsia(.dst0q, .@"8", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
113699 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
113700 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
117945 .{ ._, .v_sd, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp3x, ._, ._ },
117946 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
117947 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
113701117948 } },
113702117949 }, .{
113703117950 .required_features = .{ .avx, null, null, null },
......@@ -113708,10 +117955,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
113708117955 },
113709117956 .call_frame = .{ .alignment = .@"16" },
113710117957 .extra_temps = .{
113711 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
113712 .{ .type = .i32, .kind = .{ .reg = .edi } },
117958 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
117959 .{ .type = .i32, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
113713117960 .{ .type = .usize, .kind = .{ .extern_func = "__floatsidf" } },
113714 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
117961 .{ .type = .f64, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
113715117962 .unused,
113716117963 .unused,
113717117964 .unused,
......@@ -113723,12 +117970,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
113723117970 .dst_temps = .{ .mem, .unused },
113724117971 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
113725117972 .each = .{ .once = &.{
113726 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
113727 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
117973 .{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_unaligned_size), ._, ._ },
117974 .{ .@"0:", ._, .movsx, .tmp1d, .memi(.src0b, .tmp0), ._, ._ },
113728117975 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
113729 .{ ._, .v_sd, .mov, .memsia(.dst0q, .@"8", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
113730 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
113731 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
117976 .{ ._, .v_sd, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp3x, ._, ._ },
117977 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
117978 .{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
113732117979 } },
113733117980 }, .{
113734117981 .required_features = .{ .sse2, .slow_incdec, null, null },
......@@ -113739,10 +117986,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
113739117986 },
113740117987 .call_frame = .{ .alignment = .@"16" },
113741117988 .extra_temps = .{
113742 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
113743 .{ .type = .i32, .kind = .{ .reg = .edi } },
117989 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
117990 .{ .type = .i32, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
113744117991 .{ .type = .usize, .kind = .{ .extern_func = "__floatsidf" } },
113745 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
117992 .{ .type = .f64, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
113746117993 .unused,
113747117994 .unused,
113748117995 .unused,
......@@ -113754,12 +118001,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
113754118001 .dst_temps = .{ .mem, .unused },
113755118002 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
113756118003 .each = .{ .once = &.{
113757 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
113758 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
118004 .{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_unaligned_size), ._, ._ },
118005 .{ .@"0:", ._, .movsx, .tmp1d, .memi(.src0b, .tmp0), ._, ._ },
113759118006 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
113760 .{ ._, ._sd, .mov, .memsia(.dst0q, .@"8", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
113761 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
113762 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
118007 .{ ._, ._sd, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp3x, ._, ._ },
118008 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
118009 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
113763118010 } },
113764118011 }, .{
113765118012 .required_features = .{ .sse2, null, null, null },
......@@ -113770,10 +118017,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
113770118017 },
113771118018 .call_frame = .{ .alignment = .@"16" },
113772118019 .extra_temps = .{
113773 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
113774 .{ .type = .i32, .kind = .{ .reg = .edi } },
118020 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
118021 .{ .type = .i32, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
113775118022 .{ .type = .usize, .kind = .{ .extern_func = "__floatsidf" } },
113776 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
118023 .{ .type = .f64, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
113777118024 .unused,
113778118025 .unused,
113779118026 .unused,
......@@ -113785,12 +118032,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
113785118032 .dst_temps = .{ .mem, .unused },
113786118033 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
113787118034 .each = .{ .once = &.{
113788 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
113789 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
118035 .{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_unaligned_size), ._, ._ },
118036 .{ .@"0:", ._, .movsx, .tmp1d, .memi(.src0b, .tmp0), ._, ._ },
113790118037 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
113791 .{ ._, ._sd, .mov, .memsia(.dst0q, .@"8", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
113792 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
113793 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
118038 .{ ._, ._sd, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp3x, ._, ._ },
118039 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
118040 .{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
113794118041 } },
113795118042 }, .{
113796118043 .required_features = .{ .sse, .slow_incdec, null, null },
......@@ -113801,10 +118048,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
113801118048 },
113802118049 .call_frame = .{ .alignment = .@"16" },
113803118050 .extra_temps = .{
113804 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
113805 .{ .type = .i32, .kind = .{ .reg = .edi } },
118051 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
118052 .{ .type = .i32, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
113806118053 .{ .type = .usize, .kind = .{ .extern_func = "__floatsidf" } },
113807 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
118054 .{ .type = .f64, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
113808118055 .unused,
113809118056 .unused,
113810118057 .unused,
......@@ -113816,12 +118063,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
113816118063 .dst_temps = .{ .mem, .unused },
113817118064 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
113818118065 .each = .{ .once = &.{
113819 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
113820 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
118066 .{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_unaligned_size), ._, ._ },
118067 .{ .@"0:", ._, .movsx, .tmp1d, .memi(.src0b, .tmp0), ._, ._ },
113821118068 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
113822 .{ ._, ._ps, .movl, .memsia(.dst0q, .@"8", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
113823 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
113824 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
118069 .{ ._, ._ps, .movl, .memsi(.dst0q, .@"8", .tmp0), .tmp3x, ._, ._ },
118070 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
118071 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
113825118072 } },
113826118073 }, .{
113827118074 .required_features = .{ .sse, null, null, null },
......@@ -113832,10 +118079,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
113832118079 },
113833118080 .call_frame = .{ .alignment = .@"16" },
113834118081 .extra_temps = .{
113835 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
113836 .{ .type = .i32, .kind = .{ .reg = .edi } },
118082 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
118083 .{ .type = .i32, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
113837118084 .{ .type = .usize, .kind = .{ .extern_func = "__floatsidf" } },
113838 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
118085 .{ .type = .f64, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
113839118086 .unused,
113840118087 .unused,
113841118088 .unused,
......@@ -113847,12 +118094,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
113847118094 .dst_temps = .{ .mem, .unused },
113848118095 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
113849118096 .each = .{ .once = &.{
113850 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
113851 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
118097 .{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_unaligned_size), ._, ._ },
118098 .{ .@"0:", ._, .movsx, .tmp1d, .memi(.src0b, .tmp0), ._, ._ },
113852118099 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
113853 .{ ._, ._ps, .movl, .memsia(.dst0q, .@"8", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
113854 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
113855 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
118100 .{ ._, ._ps, .movl, .memsi(.dst0q, .@"8", .tmp0), .tmp3x, ._, ._ },
118101 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
118102 .{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
113856118103 } },
113857118104 }, .{
113858118105 .required_features = .{ .avx, .slow_incdec, null, null },
......@@ -113863,10 +118110,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
113863118110 },
113864118111 .call_frame = .{ .alignment = .@"16" },
113865118112 .extra_temps = .{
113866 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
113867 .{ .type = .u32, .kind = .{ .reg = .edi } },
118113 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
118114 .{ .type = .u32, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
113868118115 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsidf" } },
113869 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
118116 .{ .type = .f64, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
113870118117 .unused,
113871118118 .unused,
113872118119 .unused,
......@@ -113878,12 +118125,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
113878118125 .dst_temps = .{ .mem, .unused },
113879118126 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
113880118127 .each = .{ .once = &.{
113881 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
113882 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
118128 .{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_unaligned_size), ._, ._ },
118129 .{ .@"0:", ._, .movzx, .tmp1d, .memi(.src0b, .tmp0), ._, ._ },
113883118130 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
113884 .{ ._, .v_sd, .mov, .memsia(.dst0q, .@"8", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
113885 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
113886 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
118131 .{ ._, .v_sd, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp3x, ._, ._ },
118132 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
118133 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
113887118134 } },
113888118135 }, .{
113889118136 .required_features = .{ .avx, null, null, null },
......@@ -113894,10 +118141,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
113894118141 },
113895118142 .call_frame = .{ .alignment = .@"16" },
113896118143 .extra_temps = .{
113897 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
113898 .{ .type = .u32, .kind = .{ .reg = .edi } },
118144 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
118145 .{ .type = .u32, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
113899118146 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsidf" } },
113900 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
118147 .{ .type = .f64, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
113901118148 .unused,
113902118149 .unused,
113903118150 .unused,
......@@ -113909,12 +118156,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
113909118156 .dst_temps = .{ .mem, .unused },
113910118157 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
113911118158 .each = .{ .once = &.{
113912 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
113913 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
118159 .{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_unaligned_size), ._, ._ },
118160 .{ .@"0:", ._, .movzx, .tmp1d, .memi(.src0b, .tmp0), ._, ._ },
113914118161 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
113915 .{ ._, .v_sd, .mov, .memsia(.dst0q, .@"8", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
113916 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
113917 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
118162 .{ ._, .v_sd, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp3x, ._, ._ },
118163 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
118164 .{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
113918118165 } },
113919118166 }, .{
113920118167 .required_features = .{ .sse2, .slow_incdec, null, null },
......@@ -113925,10 +118172,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
113925118172 },
113926118173 .call_frame = .{ .alignment = .@"16" },
113927118174 .extra_temps = .{
113928 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
113929 .{ .type = .u32, .kind = .{ .reg = .edi } },
118175 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
118176 .{ .type = .u32, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
113930118177 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsidf" } },
113931 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
118178 .{ .type = .f64, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
113932118179 .unused,
113933118180 .unused,
113934118181 .unused,
......@@ -113940,12 +118187,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
113940118187 .dst_temps = .{ .mem, .unused },
113941118188 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
113942118189 .each = .{ .once = &.{
113943 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
113944 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
118190 .{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_unaligned_size), ._, ._ },
118191 .{ .@"0:", ._, .movzx, .tmp1d, .memi(.src0b, .tmp0), ._, ._ },
113945118192 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
113946 .{ ._, ._sd, .mov, .memsia(.dst0q, .@"8", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
113947 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
113948 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
118193 .{ ._, ._sd, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp3x, ._, ._ },
118194 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
118195 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
113949118196 } },
113950118197 }, .{
113951118198 .required_features = .{ .sse2, null, null, null },
......@@ -113956,10 +118203,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
113956118203 },
113957118204 .call_frame = .{ .alignment = .@"16" },
113958118205 .extra_temps = .{
113959 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
113960 .{ .type = .u32, .kind = .{ .reg = .edi } },
118206 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
118207 .{ .type = .u32, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
113961118208 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsidf" } },
113962 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
118209 .{ .type = .f64, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
113963118210 .unused,
113964118211 .unused,
113965118212 .unused,
......@@ -113971,12 +118218,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
113971118218 .dst_temps = .{ .mem, .unused },
113972118219 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
113973118220 .each = .{ .once = &.{
113974 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
113975 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
118221 .{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_unaligned_size), ._, ._ },
118222 .{ .@"0:", ._, .movzx, .tmp1d, .memi(.src0b, .tmp0), ._, ._ },
113976118223 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
113977 .{ ._, ._sd, .mov, .memsia(.dst0q, .@"8", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
113978 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
113979 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
118224 .{ ._, ._sd, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp3x, ._, ._ },
118225 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
118226 .{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
113980118227 } },
113981118228 }, .{
113982118229 .required_features = .{ .sse, .slow_incdec, null, null },
......@@ -113987,10 +118234,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
113987118234 },
113988118235 .call_frame = .{ .alignment = .@"16" },
113989118236 .extra_temps = .{
113990 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
113991 .{ .type = .u32, .kind = .{ .reg = .edi } },
118237 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
118238 .{ .type = .u32, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
113992118239 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsidf" } },
113993 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
118240 .{ .type = .f64, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
113994118241 .unused,
113995118242 .unused,
113996118243 .unused,
......@@ -114002,12 +118249,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
114002118249 .dst_temps = .{ .mem, .unused },
114003118250 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
114004118251 .each = .{ .once = &.{
114005 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
114006 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
118252 .{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_unaligned_size), ._, ._ },
118253 .{ .@"0:", ._, .movzx, .tmp1d, .memi(.src0b, .tmp0), ._, ._ },
114007118254 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
114008 .{ ._, ._ps, .movl, .memsia(.dst0q, .@"8", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
114009 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
114010 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
118255 .{ ._, ._ps, .movl, .memsi(.dst0q, .@"8", .tmp0), .tmp3x, ._, ._ },
118256 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
118257 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
114011118258 } },
114012118259 }, .{
114013118260 .required_features = .{ .sse, null, null, null },
......@@ -114018,10 +118265,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
114018118265 },
114019118266 .call_frame = .{ .alignment = .@"16" },
114020118267 .extra_temps = .{
114021 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
114022 .{ .type = .u32, .kind = .{ .reg = .edi } },
118268 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
118269 .{ .type = .u32, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
114023118270 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsidf" } },
114024 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
118271 .{ .type = .f64, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
114025118272 .unused,
114026118273 .unused,
114027118274 .unused,
......@@ -114033,12 +118280,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
114033118280 .dst_temps = .{ .mem, .unused },
114034118281 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
114035118282 .each = .{ .once = &.{
114036 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
114037 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
118283 .{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_unaligned_size), ._, ._ },
118284 .{ .@"0:", ._, .movzx, .tmp1d, .memi(.src0b, .tmp0), ._, ._ },
114038118285 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
114039 .{ ._, ._ps, .movl, .memsia(.dst0q, .@"8", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
114040 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
114041 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
118286 .{ ._, ._ps, .movl, .memsi(.dst0q, .@"8", .tmp0), .tmp3x, ._, ._ },
118287 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
118288 .{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
114042118289 } },
114043118290 }, .{
114044118291 .required_features = .{ .avx, null, null, null },
......@@ -114126,7 +118373,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
114126118373 .{ .src = .{ .to_mem, .none, .none } },
114127118374 },
114128118375 .extra_temps = .{
114129 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
118376 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
114130118377 .{ .type = .vector_8_i32, .kind = .{ .rc = .sse } },
114131118378 .unused,
114132118379 .unused,
......@@ -114141,12 +118388,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
114141118388 .dst_temps = .{ .mem, .unused },
114142118389 .clobbers = .{ .eflags = true },
114143118390 .each = .{ .once = &.{
114144 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
114145 .{ .@"0:", .vp_d, .movsxw, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
118391 .{ ._, ._, .mov, .tmp0d, .sia(-8, .src0, .add_size), ._, ._ },
118392 .{ .@"0:", .vp_d, .movsxw, .tmp1x, .memi(.src0q, .tmp0), ._, ._ },
114146118393 .{ ._, .v_pd, .cvtdq2, .tmp1y, .tmp1x, ._, ._ },
114147 .{ ._, .v_ps, .mova, .memsia(.dst0y, .@"4", .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },
114148 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
114149 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
118394 .{ ._, .v_pd, .mova, .memsi(.dst0y, .@"4", .tmp0), .tmp1y, ._, ._ },
118395 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
118396 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
114150118397 } },
114151118398 }, .{
114152118399 .required_features = .{ .avx, null, null, null },
......@@ -114156,7 +118403,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
114156118403 .{ .src = .{ .to_mem, .none, .none } },
114157118404 },
114158118405 .extra_temps = .{
114159 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
118406 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
114160118407 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },
114161118408 .unused,
114162118409 .unused,
......@@ -114171,13 +118418,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
114171118418 .dst_temps = .{ .mem, .unused },
114172118419 .clobbers = .{ .eflags = true },
114173118420 .each = .{ .once = &.{
114174 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
114175 .{ .@"0:", .v_d, .mov, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
118421 .{ ._, ._, .mov, .tmp0d, .sia(-4, .src0, .add_size), ._, ._ },
118422 .{ .@"0:", .v_d, .mov, .tmp1x, .memi(.src0d, .tmp0), ._, ._ },
114176118423 .{ ._, .vp_d, .movsxw, .tmp1x, .tmp1q, ._, ._ },
114177118424 .{ ._, .v_pd, .cvtdq2, .tmp1x, .tmp1q, ._, ._ },
114178 .{ ._, .v_ps, .mova, .memsia(.dst0x, .@"4", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
114179 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
114180 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
118425 .{ ._, .v_pd, .mova, .memsi(.dst0x, .@"4", .tmp0), .tmp1x, ._, ._ },
118426 .{ ._, ._, .sub, .tmp0d, .si(4), ._, ._ },
118427 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
114181118428 } },
114182118429 }, .{
114183118430 .required_features = .{ .sse4_1, null, null, null },
......@@ -114187,7 +118434,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
114187118434 .{ .src = .{ .to_mem, .none, .none } },
114188118435 },
114189118436 .extra_temps = .{
114190 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
118437 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
114191118438 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },
114192118439 .unused,
114193118440 .unused,
......@@ -114202,13 +118449,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
114202118449 .dst_temps = .{ .mem, .unused },
114203118450 .clobbers = .{ .eflags = true },
114204118451 .each = .{ .once = &.{
114205 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
114206 .{ .@"0:", ._d, .mov, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
118452 .{ ._, ._, .mov, .tmp0d, .sia(-4, .src0, .add_size), ._, ._ },
118453 .{ .@"0:", ._d, .mov, .tmp1x, .memi(.src0d, .tmp0), ._, ._ },
114207118454 .{ ._, .p_d, .movsxw, .tmp1x, .tmp1q, ._, ._ },
114208118455 .{ ._, ._pd, .cvtdq2, .tmp1x, .tmp1q, ._, ._ },
114209 .{ ._, ._ps, .mova, .memsia(.dst0x, .@"4", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
114210 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
114211 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
118456 .{ ._, ._pd, .mova, .memsi(.dst0x, .@"4", .tmp0), .tmp1x, ._, ._ },
118457 .{ ._, ._, .sub, .tmp0d, .si(4), ._, ._ },
118458 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
114212118459 } },
114213118460 }, .{
114214118461 .required_features = .{ .avx2, null, null, null },
......@@ -114218,7 +118465,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
114218118465 .{ .src = .{ .to_mem, .none, .none } },
114219118466 },
114220118467 .extra_temps = .{
114221 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
118468 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
114222118469 .{ .type = .vector_8_i32, .kind = .{ .rc = .sse } },
114223118470 .unused,
114224118471 .unused,
......@@ -114233,12 +118480,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
114233118480 .dst_temps = .{ .mem, .unused },
114234118481 .clobbers = .{ .eflags = true },
114235118482 .each = .{ .once = &.{
114236 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
114237 .{ .@"0:", .vp_d, .movzxw, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
118483 .{ ._, ._, .mov, .tmp0d, .sia(-8, .src0, .add_size), ._, ._ },
118484 .{ .@"0:", .vp_d, .movzxw, .tmp1x, .memi(.src0q, .tmp0), ._, ._ },
114238118485 .{ ._, .v_pd, .cvtdq2, .tmp1y, .tmp1x, ._, ._ },
114239 .{ ._, .v_ps, .mova, .memsia(.dst0y, .@"4", .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },
114240 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
114241 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
118486 .{ ._, .v_pd, .mova, .memsi(.dst0y, .@"4", .tmp0), .tmp1y, ._, ._ },
118487 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
118488 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
114242118489 } },
114243118490 }, .{
114244118491 .required_features = .{ .avx, null, null, null },
......@@ -114248,7 +118495,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
114248118495 .{ .src = .{ .to_mem, .none, .none } },
114249118496 },
114250118497 .extra_temps = .{
114251 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
118498 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
114252118499 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },
114253118500 .unused,
114254118501 .unused,
......@@ -114263,13 +118510,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
114263118510 .dst_temps = .{ .mem, .unused },
114264118511 .clobbers = .{ .eflags = true },
114265118512 .each = .{ .once = &.{
114266 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
114267 .{ .@"0:", .v_d, .mov, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
118513 .{ ._, ._, .mov, .tmp0d, .sia(-4, .src0, .add_size), ._, ._ },
118514 .{ .@"0:", .v_d, .mov, .tmp1x, .memi(.src0d, .tmp0), ._, ._ },
114268118515 .{ ._, .vp_d, .movzxw, .tmp1x, .tmp1q, ._, ._ },
114269118516 .{ ._, .v_pd, .cvtdq2, .tmp1x, .tmp1q, ._, ._ },
114270 .{ ._, .v_ps, .mova, .memsia(.dst0x, .@"4", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
114271 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
114272 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
118517 .{ ._, .v_pd, .mova, .memsi(.dst0x, .@"4", .tmp0), .tmp1x, ._, ._ },
118518 .{ ._, ._, .sub, .tmp0d, .si(4), ._, ._ },
118519 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
114273118520 } },
114274118521 }, .{
114275118522 .required_features = .{ .sse4_1, null, null, null },
......@@ -114279,7 +118526,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
114279118526 .{ .src = .{ .to_mem, .none, .none } },
114280118527 },
114281118528 .extra_temps = .{
114282 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
118529 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
114283118530 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },
114284118531 .unused,
114285118532 .unused,
......@@ -114294,13 +118541,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
114294118541 .dst_temps = .{ .mem, .unused },
114295118542 .clobbers = .{ .eflags = true },
114296118543 .each = .{ .once = &.{
114297 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
114298 .{ .@"0:", ._d, .mov, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
118544 .{ ._, ._, .mov, .tmp0d, .sia(-4, .src0, .add_size), ._, ._ },
118545 .{ .@"0:", ._d, .mov, .tmp1x, .memi(.src0d, .tmp0), ._, ._ },
114299118546 .{ ._, .p_d, .movzxw, .tmp1x, .tmp1q, ._, ._ },
114300118547 .{ ._, ._pd, .cvtdq2, .tmp1x, .tmp1q, ._, ._ },
114301 .{ ._, ._ps, .mova, .memsia(.dst0x, .@"4", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
114302 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
114303 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
118548 .{ ._, ._pd, .mova, .memsi(.dst0x, .@"4", .tmp0), .tmp1x, ._, ._ },
118549 .{ ._, ._, .sub, .tmp0d, .si(4), ._, ._ },
118550 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
114304118551 } },
114305118552 }, .{
114306118553 .required_features = .{ .avx, null, null, null },
......@@ -114311,10 +118558,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
114311118558 },
114312118559 .call_frame = .{ .alignment = .@"16" },
114313118560 .extra_temps = .{
114314 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
114315 .{ .type = .i32, .kind = .{ .reg = .edi } },
118561 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
118562 .{ .type = .i32, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
114316118563 .{ .type = .usize, .kind = .{ .extern_func = "__floatsidf" } },
114317 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
118564 .{ .type = .f64, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
114318118565 .unused,
114319118566 .unused,
114320118567 .unused,
......@@ -114326,12 +118573,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
114326118573 .dst_temps = .{ .mem, .unused },
114327118574 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
114328118575 .each = .{ .once = &.{
114329 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
114330 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
118576 .{ ._, ._, .mov, .tmp0d, .sia(-2, .src0, .add_unaligned_size), ._, ._ },
118577 .{ .@"0:", ._, .movsx, .tmp1d, .memi(.src0w, .tmp0), ._, ._ },
114331118578 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
114332 .{ ._, .v_sd, .mov, .memsia(.dst0q, .@"4", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
114333 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
114334 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
118579 .{ ._, .v_sd, .mov, .memsi(.dst0q, .@"4", .tmp0), .tmp3x, ._, ._ },
118580 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
118581 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
114335118582 } },
114336118583 }, .{
114337118584 .required_features = .{ .sse2, null, null, null },
......@@ -114342,10 +118589,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
114342118589 },
114343118590 .call_frame = .{ .alignment = .@"16" },
114344118591 .extra_temps = .{
114345 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
114346 .{ .type = .i32, .kind = .{ .reg = .edi } },
118592 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
118593 .{ .type = .i32, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
114347118594 .{ .type = .usize, .kind = .{ .extern_func = "__floatsidf" } },
114348 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
118595 .{ .type = .f64, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
114349118596 .unused,
114350118597 .unused,
114351118598 .unused,
......@@ -114357,12 +118604,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
114357118604 .dst_temps = .{ .mem, .unused },
114358118605 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
114359118606 .each = .{ .once = &.{
114360 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
114361 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
118607 .{ ._, ._, .mov, .tmp0d, .sia(-2, .src0, .add_unaligned_size), ._, ._ },
118608 .{ .@"0:", ._, .movsx, .tmp1d, .memi(.src0w, .tmp0), ._, ._ },
114362118609 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
114363 .{ ._, ._sd, .mov, .memsia(.dst0q, .@"4", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
114364 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
114365 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
118610 .{ ._, ._sd, .mov, .memsi(.dst0q, .@"4", .tmp0), .tmp3x, ._, ._ },
118611 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
118612 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
114366118613 } },
114367118614 }, .{
114368118615 .required_features = .{ .sse, null, null, null },
......@@ -114373,10 +118620,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
114373118620 },
114374118621 .call_frame = .{ .alignment = .@"16" },
114375118622 .extra_temps = .{
114376 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
114377 .{ .type = .i32, .kind = .{ .reg = .edi } },
118623 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
118624 .{ .type = .i32, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
114378118625 .{ .type = .usize, .kind = .{ .extern_func = "__floatsidf" } },
114379 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
118626 .{ .type = .f64, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
114380118627 .unused,
114381118628 .unused,
114382118629 .unused,
......@@ -114388,12 +118635,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
114388118635 .dst_temps = .{ .mem, .unused },
114389118636 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
114390118637 .each = .{ .once = &.{
114391 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
114392 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
118638 .{ ._, ._, .mov, .tmp0d, .sia(-2, .src0, .add_unaligned_size), ._, ._ },
118639 .{ .@"0:", ._, .movsx, .tmp1d, .memi(.src0w, .tmp0), ._, ._ },
114393118640 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
114394 .{ ._, ._ps, .movl, .memsia(.dst0q, .@"4", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
114395 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
114396 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
118641 .{ ._, ._ps, .movl, .memsi(.dst0q, .@"4", .tmp0), .tmp3x, ._, ._ },
118642 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
118643 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
114397118644 } },
114398118645 }, .{
114399118646 .required_features = .{ .avx, null, null, null },
......@@ -114404,10 +118651,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
114404118651 },
114405118652 .call_frame = .{ .alignment = .@"16" },
114406118653 .extra_temps = .{
114407 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
114408 .{ .type = .u32, .kind = .{ .reg = .edi } },
118654 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
118655 .{ .type = .u32, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
114409118656 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsidf" } },
114410 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
118657 .{ .type = .f64, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
114411118658 .unused,
114412118659 .unused,
114413118660 .unused,
......@@ -114419,12 +118666,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
114419118666 .dst_temps = .{ .mem, .unused },
114420118667 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
114421118668 .each = .{ .once = &.{
114422 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
114423 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
118669 .{ ._, ._, .mov, .tmp0d, .sia(-2, .src0, .add_unaligned_size), ._, ._ },
118670 .{ .@"0:", ._, .movzx, .tmp1d, .memi(.src0w, .tmp0), ._, ._ },
114424118671 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
114425 .{ ._, .v_sd, .mov, .memsia(.dst0q, .@"4", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
114426 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
114427 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
118672 .{ ._, .v_sd, .mov, .memsi(.dst0q, .@"4", .tmp0), .tmp3x, ._, ._ },
118673 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
118674 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
114428118675 } },
114429118676 }, .{
114430118677 .required_features = .{ .sse2, null, null, null },
......@@ -114435,10 +118682,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
114435118682 },
114436118683 .call_frame = .{ .alignment = .@"16" },
114437118684 .extra_temps = .{
114438 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
114439 .{ .type = .u32, .kind = .{ .reg = .edi } },
118685 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
118686 .{ .type = .u32, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
114440118687 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsidf" } },
114441 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
118688 .{ .type = .f64, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
114442118689 .unused,
114443118690 .unused,
114444118691 .unused,
......@@ -114450,12 +118697,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
114450118697 .dst_temps = .{ .mem, .unused },
114451118698 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
114452118699 .each = .{ .once = &.{
114453 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
114454 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
118700 .{ ._, ._, .mov, .tmp0d, .sia(-2, .src0, .add_unaligned_size), ._, ._ },
118701 .{ .@"0:", ._, .movzx, .tmp1d, .memi(.src0w, .tmp0), ._, ._ },
114455118702 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
114456 .{ ._, ._sd, .mov, .memsia(.dst0q, .@"4", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
114457 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
114458 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
118703 .{ ._, ._sd, .mov, .memsi(.dst0q, .@"4", .tmp0), .tmp3x, ._, ._ },
118704 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
118705 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
114459118706 } },
114460118707 }, .{
114461118708 .required_features = .{ .sse, null, null, null },
......@@ -114466,10 +118713,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
114466118713 },
114467118714 .call_frame = .{ .alignment = .@"16" },
114468118715 .extra_temps = .{
114469 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
114470 .{ .type = .u32, .kind = .{ .reg = .edi } },
118716 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
118717 .{ .type = .u32, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
114471118718 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsidf" } },
114472 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
118719 .{ .type = .f64, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
114473118720 .unused,
114474118721 .unused,
114475118722 .unused,
......@@ -114481,12 +118728,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
114481118728 .dst_temps = .{ .mem, .unused },
114482118729 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
114483118730 .each = .{ .once = &.{
114484 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
114485 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
118731 .{ ._, ._, .mov, .tmp0d, .sia(-2, .src0, .add_unaligned_size), ._, ._ },
118732 .{ .@"0:", ._, .movzx, .tmp1d, .memi(.src0w, .tmp0), ._, ._ },
114486118733 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
114487 .{ ._, ._ps, .movl, .memsia(.dst0q, .@"4", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
114488 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
114489 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
118734 .{ ._, ._ps, .movl, .memsi(.dst0q, .@"4", .tmp0), .tmp3x, ._, ._ },
118735 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
118736 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
114490118737 } },
114491118738 }, .{
114492118739 .required_features = .{ .avx, null, null, null },
......@@ -114532,7 +118779,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
114532118779 .{ .src = .{ .to_mem, .none, .none } },
114533118780 },
114534118781 .extra_temps = .{
114535 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
118782 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
114536118783 .{ .type = .vector_8_i32, .kind = .{ .rc = .sse } },
114537118784 .unused,
114538118785 .unused,
......@@ -114547,11 +118794,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
114547118794 .dst_temps = .{ .mem, .unused },
114548118795 .clobbers = .{ .eflags = true },
114549118796 .each = .{ .once = &.{
114550 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
114551 .{ .@"0:", .v_pd, .cvtdq2, .tmp1y, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
114552 .{ ._, .v_pd, .mova, .memsia(.dst0y, .@"2", .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },
114553 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
114554 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
118797 .{ ._, ._, .mov, .tmp0d, .sia(-16, .src0, .add_size), ._, ._ },
118798 .{ .@"0:", .v_pd, .cvtdq2, .tmp1y, .memi(.src0x, .tmp0), ._, ._ },
118799 .{ ._, .v_pd, .mova, .memsi(.dst0y, .@"2", .tmp0), .tmp1y, ._, ._ },
118800 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
118801 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
114555118802 } },
114556118803 }, .{
114557118804 .required_features = .{ .avx, null, null, null },
......@@ -114561,7 +118808,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
114561118808 .{ .src = .{ .to_mem, .none, .none } },
114562118809 },
114563118810 .extra_temps = .{
114564 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
118811 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
114565118812 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },
114566118813 .unused,
114567118814 .unused,
......@@ -114576,11 +118823,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
114576118823 .dst_temps = .{ .mem, .unused },
114577118824 .clobbers = .{ .eflags = true },
114578118825 .each = .{ .once = &.{
114579 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
114580 .{ .@"0:", .v_pd, .cvtdq2, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
114581 .{ ._, .v_pd, .mova, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
114582 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
114583 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
118826 .{ ._, ._, .mov, .tmp0d, .sia(-8, .src0, .add_size), ._, ._ },
118827 .{ .@"0:", .v_pd, .cvtdq2, .tmp1x, .memi(.src0q, .tmp0), ._, ._ },
118828 .{ ._, .v_pd, .mova, .memsi(.dst0x, .@"2", .tmp0), .tmp1x, ._, ._ },
118829 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
118830 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
114584118831 } },
114585118832 }, .{
114586118833 .required_features = .{ .sse2, null, null, null },
......@@ -114590,7 +118837,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
114590118837 .{ .src = .{ .to_mem, .none, .none } },
114591118838 },
114592118839 .extra_temps = .{
114593 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
118840 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
114594118841 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },
114595118842 .unused,
114596118843 .unused,
......@@ -114605,11 +118852,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
114605118852 .dst_temps = .{ .mem, .unused },
114606118853 .clobbers = .{ .eflags = true },
114607118854 .each = .{ .once = &.{
114608 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
114609 .{ .@"0:", ._pd, .cvtdq2, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
114610 .{ ._, ._pd, .mova, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
114611 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
114612 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
118855 .{ ._, ._, .mov, .tmp0d, .sia(-8, .src0, .add_size), ._, ._ },
118856 .{ .@"0:", ._pd, .cvtdq2, .tmp1x, .memi(.src0q, .tmp0), ._, ._ },
118857 .{ ._, ._pd, .mova, .memsi(.dst0x, .@"2", .tmp0), .tmp1x, ._, ._ },
118858 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
118859 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
114613118860 } },
114614118861 }, .{
114615118862 .required_features = .{ .avx, null, null, null },
......@@ -114620,10 +118867,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
114620118867 },
114621118868 .call_frame = .{ .alignment = .@"16" },
114622118869 .extra_temps = .{
114623 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
114624 .{ .type = .i32, .kind = .{ .reg = .edi } },
118870 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
118871 .{ .type = .i32, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
114625118872 .{ .type = .usize, .kind = .{ .extern_func = "__floatsidf" } },
114626 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
118873 .{ .type = .f64, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
114627118874 .unused,
114628118875 .unused,
114629118876 .unused,
......@@ -114635,12 +118882,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
114635118882 .dst_temps = .{ .mem, .unused },
114636118883 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
114637118884 .each = .{ .once = &.{
114638 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
114639 .{ .@"0:", ._, .mov, .tmp1d, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
118885 .{ ._, ._, .mov, .tmp0d, .sia(-4, .src0, .add_unaligned_size), ._, ._ },
118886 .{ .@"0:", ._, .mov, .tmp1d, .memi(.src0d, .tmp0), ._, ._ },
114640118887 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
114641 .{ ._, .v_sd, .mov, .memsia(.dst0q, .@"2", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
114642 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
114643 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
118888 .{ ._, .v_sd, .mov, .memsi(.dst0q, .@"2", .tmp0), .tmp3x, ._, ._ },
118889 .{ ._, ._, .sub, .tmp0d, .si(4), ._, ._ },
118890 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
114644118891 } },
114645118892 }, .{
114646118893 .required_features = .{ .sse2, null, null, null },
......@@ -114651,10 +118898,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
114651118898 },
114652118899 .call_frame = .{ .alignment = .@"16" },
114653118900 .extra_temps = .{
114654 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
114655 .{ .type = .i32, .kind = .{ .reg = .edi } },
118901 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
118902 .{ .type = .i32, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
114656118903 .{ .type = .usize, .kind = .{ .extern_func = "__floatsidf" } },
114657 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
118904 .{ .type = .f64, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
114658118905 .unused,
114659118906 .unused,
114660118907 .unused,
......@@ -114666,12 +118913,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
114666118913 .dst_temps = .{ .mem, .unused },
114667118914 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
114668118915 .each = .{ .once = &.{
114669 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
114670 .{ .@"0:", ._, .mov, .tmp1d, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
118916 .{ ._, ._, .mov, .tmp0d, .sia(-4, .src0, .add_unaligned_size), ._, ._ },
118917 .{ .@"0:", ._, .mov, .tmp1d, .memi(.src0d, .tmp0), ._, ._ },
114671118918 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
114672 .{ ._, ._sd, .mov, .memsia(.dst0q, .@"2", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
114673 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
114674 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
118919 .{ ._, ._sd, .mov, .memsi(.dst0q, .@"2", .tmp0), .tmp3x, ._, ._ },
118920 .{ ._, ._, .sub, .tmp0d, .si(4), ._, ._ },
118921 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
114675118922 } },
114676118923 }, .{
114677118924 .required_features = .{ .sse, null, null, null },
......@@ -114682,10 +118929,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
114682118929 },
114683118930 .call_frame = .{ .alignment = .@"16" },
114684118931 .extra_temps = .{
114685 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
114686 .{ .type = .i32, .kind = .{ .reg = .edi } },
118932 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
118933 .{ .type = .i32, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
114687118934 .{ .type = .usize, .kind = .{ .extern_func = "__floatsidf" } },
114688 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
118935 .{ .type = .f64, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
114689118936 .unused,
114690118937 .unused,
114691118938 .unused,
......@@ -114697,12 +118944,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
114697118944 .dst_temps = .{ .mem, .unused },
114698118945 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
114699118946 .each = .{ .once = &.{
114700 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
114701 .{ .@"0:", ._, .mov, .tmp1d, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
118947 .{ ._, ._, .mov, .tmp0d, .sia(-4, .src0, .add_unaligned_size), ._, ._ },
118948 .{ .@"0:", ._, .mov, .tmp1d, .memi(.src0d, .tmp0), ._, ._ },
114702118949 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
114703 .{ ._, ._ps, .movl, .memsia(.dst0q, .@"2", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
114704 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
114705 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
118950 .{ ._, ._ps, .movl, .memsi(.dst0q, .@"2", .tmp0), .tmp3x, ._, ._ },
118951 .{ ._, ._, .sub, .tmp0d, .si(4), ._, ._ },
118952 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
114706118953 } },
114707118954 }, .{
114708118955 .required_features = .{ .avx, null, null, null },
......@@ -114713,10 +118960,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
114713118960 },
114714118961 .call_frame = .{ .alignment = .@"16" },
114715118962 .extra_temps = .{
114716 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
114717 .{ .type = .u32, .kind = .{ .reg = .edi } },
118963 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
118964 .{ .type = .u32, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
114718118965 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsidf" } },
114719 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
118966 .{ .type = .f64, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
114720118967 .unused,
114721118968 .unused,
114722118969 .unused,
......@@ -114728,12 +118975,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
114728118975 .dst_temps = .{ .mem, .unused },
114729118976 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
114730118977 .each = .{ .once = &.{
114731 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
114732 .{ .@"0:", ._, .mov, .tmp1d, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
118978 .{ ._, ._, .mov, .tmp0d, .sia(-4, .src0, .add_unaligned_size), ._, ._ },
118979 .{ .@"0:", ._, .mov, .tmp1d, .memi(.src0d, .tmp0), ._, ._ },
114733118980 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
114734 .{ ._, .v_sd, .mov, .memsia(.dst0q, .@"2", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
114735 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
114736 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
118981 .{ ._, .v_sd, .mov, .memsi(.dst0q, .@"2", .tmp0), .tmp3x, ._, ._ },
118982 .{ ._, ._, .sub, .tmp0d, .si(4), ._, ._ },
118983 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
114737118984 } },
114738118985 }, .{
114739118986 .required_features = .{ .sse2, null, null, null },
......@@ -114744,10 +118991,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
114744118991 },
114745118992 .call_frame = .{ .alignment = .@"16" },
114746118993 .extra_temps = .{
114747 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
114748 .{ .type = .u32, .kind = .{ .reg = .edi } },
118994 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
118995 .{ .type = .u32, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
114749118996 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsidf" } },
114750 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
118997 .{ .type = .f64, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
114751118998 .unused,
114752118999 .unused,
114753119000 .unused,
......@@ -114759,12 +119006,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
114759119006 .dst_temps = .{ .mem, .unused },
114760119007 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
114761119008 .each = .{ .once = &.{
114762 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
114763 .{ .@"0:", ._, .mov, .tmp1d, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
119009 .{ ._, ._, .mov, .tmp0d, .sia(-4, .src0, .add_unaligned_size), ._, ._ },
119010 .{ .@"0:", ._, .mov, .tmp1d, .memi(.src0d, .tmp0), ._, ._ },
114764119011 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
114765 .{ ._, ._sd, .mov, .memsia(.dst0q, .@"2", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
114766 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
114767 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
119012 .{ ._, ._sd, .mov, .memsi(.dst0q, .@"2", .tmp0), .tmp3x, ._, ._ },
119013 .{ ._, ._, .sub, .tmp0d, .si(4), ._, ._ },
119014 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
114768119015 } },
114769119016 }, .{
114770119017 .required_features = .{ .sse, null, null, null },
......@@ -114775,10 +119022,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
114775119022 },
114776119023 .call_frame = .{ .alignment = .@"16" },
114777119024 .extra_temps = .{
114778 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
114779 .{ .type = .u32, .kind = .{ .reg = .edi } },
119025 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
119026 .{ .type = .u32, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
114780119027 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsidf" } },
114781 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
119028 .{ .type = .f64, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
114782119029 .unused,
114783119030 .unused,
114784119031 .unused,
......@@ -114790,12 +119037,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
114790119037 .dst_temps = .{ .mem, .unused },
114791119038 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
114792119039 .each = .{ .once = &.{
114793 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
114794 .{ .@"0:", ._, .mov, .tmp1d, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
119040 .{ ._, ._, .mov, .tmp0d, .sia(-4, .src0, .add_unaligned_size), ._, ._ },
119041 .{ .@"0:", ._, .mov, .tmp1d, .memi(.src0d, .tmp0), ._, ._ },
114795119042 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
114796 .{ ._, ._ps, .movl, .memsia(.dst0q, .@"2", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
114797 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
114798 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
119043 .{ ._, ._ps, .movl, .memsi(.dst0q, .@"2", .tmp0), .tmp3x, ._, ._ },
119044 .{ ._, ._, .sub, .tmp0d, .si(4), ._, ._ },
119045 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
114799119046 } },
114800119047 }, .{
114801119048 .required_features = .{ .@"64bit", .avx, null, null },
......@@ -114805,7 +119052,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
114805119052 .{ .src = .{ .to_mem, .none, .none } },
114806119053 },
114807119054 .extra_temps = .{
114808 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
119055 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
114809119056 .{ .type = .f64, .kind = .{ .rc = .sse } },
114810119057 .unused,
114811119058 .unused,
......@@ -114820,12 +119067,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
114820119067 .dst_temps = .{ .mem, .unused },
114821119068 .clobbers = .{ .eflags = true },
114822119069 .each = .{ .once = &.{
114823 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
119070 .{ ._, ._, .mov, .tmp0d, .sia(-8, .src0, .add_unaligned_size), ._, ._ },
114824119071 .{ .@"0:", .v_pd, .xor, .tmp1x, .tmp1x, .tmp1x, ._ },
114825 .{ ._, .v_sd, .cvtsi2, .tmp1x, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._ },
114826 .{ ._, .v_sd, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
114827 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
114828 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
119072 .{ ._, .v_sd, .cvtsi2, .tmp1x, .tmp1x, .memi(.src0q, .tmp0), ._ },
119073 .{ ._, .v_sd, .mov, .memi(.dst0q, .tmp0), .tmp1x, ._, ._ },
119074 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
119075 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
114829119076 } },
114830119077 }, .{
114831119078 .required_features = .{ .@"64bit", .sse2, null, null },
......@@ -114835,7 +119082,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
114835119082 .{ .src = .{ .to_mem, .none, .none } },
114836119083 },
114837119084 .extra_temps = .{
114838 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
119085 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
114839119086 .{ .type = .f64, .kind = .{ .rc = .sse } },
114840119087 .unused,
114841119088 .unused,
......@@ -114850,12 +119097,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
114850119097 .dst_temps = .{ .mem, .unused },
114851119098 .clobbers = .{ .eflags = true },
114852119099 .each = .{ .once = &.{
114853 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
119100 .{ ._, ._, .mov, .tmp0d, .sia(-8, .src0, .add_unaligned_size), ._, ._ },
114854119101 .{ .@"0:", ._pd, .xor, .tmp1x, .tmp1x, ._, ._ },
114855 .{ ._, ._sd, .cvtsi2, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
114856 .{ ._, ._sd, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
114857 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
114858 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
119102 .{ ._, ._sd, .cvtsi2, .tmp1x, .memi(.src0q, .tmp0), ._, ._ },
119103 .{ ._, ._sd, .mov, .memi(.dst0q, .tmp0), .tmp1x, ._, ._ },
119104 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
119105 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
114859119106 } },
114860119107 }, .{
114861119108 .required_features = .{ .@"64bit", .avx, null, null },
......@@ -114866,10 +119113,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
114866119113 },
114867119114 .call_frame = .{ .alignment = .@"16" },
114868119115 .extra_temps = .{
114869 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
114870 .{ .type = .i64, .kind = .{ .reg = .rdi } },
119116 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
119117 .{ .type = .i64, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
114871119118 .{ .type = .usize, .kind = .{ .extern_func = "__floatdidf" } },
114872 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
119119 .{ .type = .f64, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
114873119120 .unused,
114874119121 .unused,
114875119122 .unused,
......@@ -114881,12 +119128,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
114881119128 .dst_temps = .{ .mem, .unused },
114882119129 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
114883119130 .each = .{ .once = &.{
114884 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
114885 .{ .@"0:", ._, .mov, .tmp1q, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
119131 .{ ._, ._, .mov, .tmp0d, .sia(-8, .src0, .add_unaligned_size), ._, ._ },
119132 .{ .@"0:", ._, .mov, .tmp1q, .memi(.src0q, .tmp0), ._, ._ },
114886119133 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
114887 .{ ._, .v_sd, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
114888 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
114889 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
119134 .{ ._, .v_sd, .mov, .memi(.dst0q, .tmp0), .tmp3x, ._, ._ },
119135 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
119136 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
114890119137 } },
114891119138 }, .{
114892119139 .required_features = .{ .@"64bit", .sse2, null, null },
......@@ -114897,10 +119144,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
114897119144 },
114898119145 .call_frame = .{ .alignment = .@"16" },
114899119146 .extra_temps = .{
114900 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
114901 .{ .type = .i64, .kind = .{ .reg = .rdi } },
119147 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
119148 .{ .type = .i64, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
114902119149 .{ .type = .usize, .kind = .{ .extern_func = "__floatdidf" } },
114903 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
119150 .{ .type = .f64, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
114904119151 .unused,
114905119152 .unused,
114906119153 .unused,
......@@ -114912,12 +119159,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
114912119159 .dst_temps = .{ .mem, .unused },
114913119160 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
114914119161 .each = .{ .once = &.{
114915 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
114916 .{ .@"0:", ._, .mov, .tmp1q, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
119162 .{ ._, ._, .mov, .tmp0d, .sia(-8, .src0, .add_unaligned_size), ._, ._ },
119163 .{ .@"0:", ._, .mov, .tmp1q, .memi(.src0q, .tmp0), ._, ._ },
114917119164 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
114918 .{ ._, ._sd, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
114919 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
114920 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
119165 .{ ._, ._sd, .mov, .memi(.dst0q, .tmp0), .tmp3x, ._, ._ },
119166 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
119167 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
114921119168 } },
114922119169 }, .{
114923119170 .required_features = .{ .@"64bit", .sse, null, null },
......@@ -114928,10 +119175,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
114928119175 },
114929119176 .call_frame = .{ .alignment = .@"16" },
114930119177 .extra_temps = .{
114931 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
114932 .{ .type = .i64, .kind = .{ .reg = .rdi } },
119178 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
119179 .{ .type = .i64, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
114933119180 .{ .type = .usize, .kind = .{ .extern_func = "__floatdidf" } },
114934 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
119181 .{ .type = .f64, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
114935119182 .unused,
114936119183 .unused,
114937119184 .unused,
......@@ -114943,12 +119190,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
114943119190 .dst_temps = .{ .mem, .unused },
114944119191 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
114945119192 .each = .{ .once = &.{
114946 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
114947 .{ .@"0:", ._, .mov, .tmp1q, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
119193 .{ ._, ._, .mov, .tmp0d, .sia(-8, .src0, .add_unaligned_size), ._, ._ },
119194 .{ .@"0:", ._, .mov, .tmp1q, .memi(.src0q, .tmp0), ._, ._ },
114948119195 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
114949 .{ ._, ._ps, .movl, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
114950 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
114951 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
119196 .{ ._, ._ps, .movl, .memi(.dst0q, .tmp0), .tmp3x, ._, ._ },
119197 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
119198 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
114952119199 } },
114953119200 }, .{
114954119201 .required_features = .{ .@"64bit", .avx, null, null },
......@@ -114959,10 +119206,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
114959119206 },
114960119207 .call_frame = .{ .alignment = .@"16" },
114961119208 .extra_temps = .{
114962 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
114963 .{ .type = .u64, .kind = .{ .reg = .rdi } },
119209 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
119210 .{ .type = .u64, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
114964119211 .{ .type = .usize, .kind = .{ .extern_func = "__floatundidf" } },
114965 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
119212 .{ .type = .f64, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
114966119213 .unused,
114967119214 .unused,
114968119215 .unused,
......@@ -114974,12 +119221,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
114974119221 .dst_temps = .{ .mem, .unused },
114975119222 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
114976119223 .each = .{ .once = &.{
114977 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
114978 .{ .@"0:", ._, .mov, .tmp1q, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
119224 .{ ._, ._, .mov, .tmp0d, .sia(-8, .src0, .add_unaligned_size), ._, ._ },
119225 .{ .@"0:", ._, .mov, .tmp1q, .memi(.src0q, .tmp0), ._, ._ },
114979119226 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
114980 .{ ._, .v_sd, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
114981 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
114982 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
119227 .{ ._, .v_sd, .mov, .memi(.dst0q, .tmp0), .tmp3x, ._, ._ },
119228 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
119229 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
114983119230 } },
114984119231 }, .{
114985119232 .required_features = .{ .@"64bit", .sse2, null, null },
......@@ -114990,10 +119237,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
114990119237 },
114991119238 .call_frame = .{ .alignment = .@"16" },
114992119239 .extra_temps = .{
114993 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
114994 .{ .type = .u64, .kind = .{ .reg = .rdi } },
119240 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
119241 .{ .type = .u64, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
114995119242 .{ .type = .usize, .kind = .{ .extern_func = "__floatundidf" } },
114996 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
119243 .{ .type = .f64, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
114997119244 .unused,
114998119245 .unused,
114999119246 .unused,
......@@ -115005,12 +119252,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
115005119252 .dst_temps = .{ .mem, .unused },
115006119253 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
115007119254 .each = .{ .once = &.{
115008 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
115009 .{ .@"0:", ._, .mov, .tmp1q, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
119255 .{ ._, ._, .mov, .tmp0d, .sia(-8, .src0, .add_unaligned_size), ._, ._ },
119256 .{ .@"0:", ._, .mov, .tmp1q, .memi(.src0q, .tmp0), ._, ._ },
115010119257 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
115011 .{ ._, ._sd, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
115012 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
115013 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
119258 .{ ._, ._sd, .mov, .memi(.dst0q, .tmp0), .tmp3x, ._, ._ },
119259 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
119260 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
115014119261 } },
115015119262 }, .{
115016119263 .required_features = .{ .@"64bit", .sse, null, null },
......@@ -115021,10 +119268,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
115021119268 },
115022119269 .call_frame = .{ .alignment = .@"16" },
115023119270 .extra_temps = .{
115024 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
115025 .{ .type = .u64, .kind = .{ .reg = .rdi } },
119271 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
119272 .{ .type = .u64, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
115026119273 .{ .type = .usize, .kind = .{ .extern_func = "__floatundidf" } },
115027 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
119274 .{ .type = .f64, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
115028119275 .unused,
115029119276 .unused,
115030119277 .unused,
......@@ -115036,15 +119283,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
115036119283 .dst_temps = .{ .mem, .unused },
115037119284 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
115038119285 .each = .{ .once = &.{
115039 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
115040 .{ .@"0:", ._, .mov, .tmp1q, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
119286 .{ ._, ._, .mov, .tmp0d, .sia(-8, .src0, .add_unaligned_size), ._, ._ },
119287 .{ .@"0:", ._, .mov, .tmp1q, .memi(.src0q, .tmp0), ._, ._ },
115041119288 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
115042 .{ ._, ._ps, .movl, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
115043 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
115044 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
119289 .{ ._, ._ps, .movl, .memi(.dst0q, .tmp0), .tmp3x, ._, ._ },
119290 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
119291 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
115045119292 } },
115046119293 }, .{
115047 .required_features = .{ .@"64bit", .avx, null, null },
119294 .required_cc_abi = .sysv64,
119295 .required_features = .{ .avx, null, null, null },
115048119296 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any, .any },
115049119297 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },
115050119298 .patterns = &.{
......@@ -115052,11 +119300,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
115052119300 },
115053119301 .call_frame = .{ .alignment = .@"16" },
115054119302 .extra_temps = .{
115055 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
115056 .{ .type = .u64, .kind = .{ .reg = .rdi } },
115057 .{ .type = .i64, .kind = .{ .reg = .rsi } },
119303 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
119304 .{ .type = .i128, .kind = .{ .param_gpr_pair = .{ .cc = .ccc, .after = 0, .at = 0 } } },
115058119305 .{ .type = .usize, .kind = .{ .extern_func = "__floattidf" } },
115059 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
119306 .{ .type = .f64, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
119307 .unused,
115060119308 .unused,
115061119309 .unused,
115062119310 .unused,
......@@ -115067,16 +119315,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
115067119315 .dst_temps = .{ .mem, .unused },
115068119316 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
115069119317 .each = .{ .once = &.{
115070 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
115071 .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
115072 .{ ._, ._, .mov, .tmp2q, .memsiad(.src0q, .@"2", .tmp0, .add_unaligned_size, 8), ._, ._ },
115073 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
115074 .{ ._, .v_sd, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp4x, ._, ._ },
115075 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
115076 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
119318 .{ ._, ._, .mov, .tmp0d, .sia(-8, .dst0, .add_unaligned_size), ._, ._ },
119319 .{ .@"0:", ._, .mov, .tmp1q0, .memsi(.src0q, .@"2", .tmp0), ._, ._ },
119320 .{ ._, ._, .mov, .tmp1q1, .memsid(.src0q, .@"2", .tmp0, 8), ._, ._ },
119321 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
119322 .{ ._, .v_sd, .mov, .memi(.dst0q, .tmp0), .tmp3x, ._, ._ },
119323 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
119324 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
115077119325 } },
115078119326 }, .{
115079 .required_features = .{ .@"64bit", .sse2, null, null },
119327 .required_cc_abi = .win64,
119328 .required_features = .{ .avx, null, null, null },
115080119329 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any, .any },
115081119330 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },
115082119331 .patterns = &.{
......@@ -115084,11 +119333,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
115084119333 },
115085119334 .call_frame = .{ .alignment = .@"16" },
115086119335 .extra_temps = .{
115087 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
115088 .{ .type = .u64, .kind = .{ .reg = .rdi } },
115089 .{ .type = .i64, .kind = .{ .reg = .rsi } },
119336 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
119337 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
115090119338 .{ .type = .usize, .kind = .{ .extern_func = "__floattidf" } },
115091 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
119339 .{ .type = .f64, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
119340 .unused,
115092119341 .unused,
115093119342 .unused,
115094119343 .unused,
......@@ -115099,16 +119348,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
115099119348 .dst_temps = .{ .mem, .unused },
115100119349 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
115101119350 .each = .{ .once = &.{
115102 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
115103 .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
115104 .{ ._, ._, .mov, .tmp2q, .memsiad(.src0q, .@"2", .tmp0, .add_unaligned_size, 8), ._, ._ },
115105 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
115106 .{ ._, ._sd, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp4x, ._, ._ },
115107 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
115108 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
119351 .{ ._, ._, .mov, .tmp0d, .sia(-8, .dst0, .add_unaligned_size), ._, ._ },
119352 .{ .@"0:", ._, .lea, .tmp1p, .memsi(.src0, .@"2", .tmp0), ._, ._ },
119353 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
119354 .{ ._, .v_sd, .mov, .memi(.dst0q, .tmp0), .tmp3x, ._, ._ },
119355 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
119356 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
115109119357 } },
115110119358 }, .{
115111 .required_features = .{ .@"64bit", .sse, null, null },
119359 .required_cc_abi = .sysv64,
119360 .required_features = .{ .sse2, null, null, null },
115112119361 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any, .any },
115113119362 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },
115114119363 .patterns = &.{
......@@ -115116,11 +119365,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
115116119365 },
115117119366 .call_frame = .{ .alignment = .@"16" },
115118119367 .extra_temps = .{
115119 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
115120 .{ .type = .u64, .kind = .{ .reg = .rdi } },
115121 .{ .type = .i64, .kind = .{ .reg = .rsi } },
119368 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
119369 .{ .type = .i128, .kind = .{ .param_gpr_pair = .{ .cc = .ccc, .after = 0, .at = 0 } } },
115122119370 .{ .type = .usize, .kind = .{ .extern_func = "__floattidf" } },
115123 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
119371 .{ .type = .f64, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
119372 .unused,
115124119373 .unused,
115125119374 .unused,
115126119375 .unused,
......@@ -115131,16 +119380,114 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
115131119380 .dst_temps = .{ .mem, .unused },
115132119381 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
115133119382 .each = .{ .once = &.{
115134 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
115135 .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
115136 .{ ._, ._, .mov, .tmp2q, .memsiad(.src0q, .@"2", .tmp0, .add_unaligned_size, 8), ._, ._ },
115137 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
115138 .{ ._, ._ps, .movl, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp4x, ._, ._ },
115139 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
115140 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
119383 .{ ._, ._, .mov, .tmp0d, .sia(-8, .dst0, .add_unaligned_size), ._, ._ },
119384 .{ .@"0:", ._, .mov, .tmp1q0, .memsi(.src0q, .@"2", .tmp0), ._, ._ },
119385 .{ ._, ._, .mov, .tmp1q1, .memsid(.src0q, .@"2", .tmp0, 8), ._, ._ },
119386 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
119387 .{ ._, ._sd, .mov, .memi(.dst0q, .tmp0), .tmp3x, ._, ._ },
119388 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
119389 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
115141119390 } },
115142119391 }, .{
115143 .required_features = .{ .@"64bit", .avx, null, null },
119392 .required_cc_abi = .win64,
119393 .required_features = .{ .sse2, null, null, null },
119394 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any, .any },
119395 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },
119396 .patterns = &.{
119397 .{ .src = .{ .to_mem, .none, .none } },
119398 },
119399 .call_frame = .{ .alignment = .@"16" },
119400 .extra_temps = .{
119401 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
119402 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
119403 .{ .type = .usize, .kind = .{ .extern_func = "__floattidf" } },
119404 .{ .type = .f64, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
119405 .unused,
119406 .unused,
119407 .unused,
119408 .unused,
119409 .unused,
119410 .unused,
119411 .unused,
119412 },
119413 .dst_temps = .{ .mem, .unused },
119414 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
119415 .each = .{ .once = &.{
119416 .{ ._, ._, .mov, .tmp0d, .sia(-8, .dst0, .add_unaligned_size), ._, ._ },
119417 .{ .@"0:", ._, .lea, .tmp1p, .memsi(.src0, .@"2", .tmp0), ._, ._ },
119418 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
119419 .{ ._, ._sd, .mov, .memi(.dst0q, .tmp0), .tmp3x, ._, ._ },
119420 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
119421 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
119422 } },
119423 }, .{
119424 .required_cc_abi = .sysv64,
119425 .required_features = .{ .sse, null, null, null },
119426 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any, .any },
119427 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },
119428 .patterns = &.{
119429 .{ .src = .{ .to_mem, .none, .none } },
119430 },
119431 .call_frame = .{ .alignment = .@"16" },
119432 .extra_temps = .{
119433 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
119434 .{ .type = .i128, .kind = .{ .param_gpr_pair = .{ .cc = .ccc, .after = 0, .at = 0 } } },
119435 .{ .type = .usize, .kind = .{ .extern_func = "__floattidf" } },
119436 .{ .type = .f64, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
119437 .unused,
119438 .unused,
119439 .unused,
119440 .unused,
119441 .unused,
119442 .unused,
119443 .unused,
119444 },
119445 .dst_temps = .{ .mem, .unused },
119446 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
119447 .each = .{ .once = &.{
119448 .{ ._, ._, .mov, .tmp0d, .sia(-8, .dst0, .add_unaligned_size), ._, ._ },
119449 .{ .@"0:", ._, .mov, .tmp1q0, .memsi(.src0q, .@"2", .tmp0), ._, ._ },
119450 .{ ._, ._, .mov, .tmp1q1, .memsid(.src0q, .@"2", .tmp0, 8), ._, ._ },
119451 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
119452 .{ ._, ._ps, .movl, .memi(.dst0q, .tmp0), .tmp3x, ._, ._ },
119453 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
119454 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
119455 } },
119456 }, .{
119457 .required_cc_abi = .win64,
119458 .required_features = .{ .sse, null, null, null },
119459 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any, .any },
119460 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },
119461 .patterns = &.{
119462 .{ .src = .{ .to_mem, .none, .none } },
119463 },
119464 .call_frame = .{ .alignment = .@"16" },
119465 .extra_temps = .{
119466 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
119467 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
119468 .{ .type = .usize, .kind = .{ .extern_func = "__floattidf" } },
119469 .{ .type = .f64, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
119470 .unused,
119471 .unused,
119472 .unused,
119473 .unused,
119474 .unused,
119475 .unused,
119476 .unused,
119477 },
119478 .dst_temps = .{ .mem, .unused },
119479 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
119480 .each = .{ .once = &.{
119481 .{ ._, ._, .mov, .tmp0d, .sia(-8, .dst0, .add_unaligned_size), ._, ._ },
119482 .{ .@"0:", ._, .lea, .tmp1p, .memsi(.src0, .@"2", .tmp0), ._, ._ },
119483 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
119484 .{ ._, ._ps, .movl, .memi(.dst0q, .tmp0), .tmp3x, ._, ._ },
119485 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
119486 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
119487 } },
119488 }, .{
119489 .required_cc_abi = .sysv64,
119490 .required_features = .{ .avx, null, null, null },
115144119491 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any, .any },
115145119492 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },
115146119493 .patterns = &.{
......@@ -115148,11 +119495,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
115148119495 },
115149119496 .call_frame = .{ .alignment = .@"16" },
115150119497 .extra_temps = .{
115151 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
115152 .{ .type = .u64, .kind = .{ .reg = .rdi } },
115153 .{ .type = .u64, .kind = .{ .reg = .rsi } },
119498 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
119499 .{ .type = .u128, .kind = .{ .param_gpr_pair = .{ .cc = .ccc, .after = 0, .at = 0 } } },
115154119500 .{ .type = .usize, .kind = .{ .extern_func = "__floatuntidf" } },
115155 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
119501 .{ .type = .f64, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
119502 .unused,
115156119503 .unused,
115157119504 .unused,
115158119505 .unused,
......@@ -115163,16 +119510,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
115163119510 .dst_temps = .{ .mem, .unused },
115164119511 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
115165119512 .each = .{ .once = &.{
115166 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
115167 .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
115168 .{ ._, ._, .mov, .tmp2q, .memsiad(.src0q, .@"2", .tmp0, .add_unaligned_size, 8), ._, ._ },
115169 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
115170 .{ ._, .v_sd, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp4x, ._, ._ },
115171 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
115172 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
119513 .{ ._, ._, .mov, .tmp0d, .sia(-8, .dst0, .add_unaligned_size), ._, ._ },
119514 .{ .@"0:", ._, .mov, .tmp1q0, .memsi(.src0q, .@"2", .tmp0), ._, ._ },
119515 .{ ._, ._, .mov, .tmp1q1, .memsid(.src0q, .@"2", .tmp0, 8), ._, ._ },
119516 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
119517 .{ ._, .v_sd, .mov, .memi(.dst0q, .tmp0), .tmp3x, ._, ._ },
119518 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
119519 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
115173119520 } },
115174119521 }, .{
115175 .required_features = .{ .@"64bit", .sse2, null, null },
119522 .required_cc_abi = .win64,
119523 .required_features = .{ .avx, null, null, null },
115176119524 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any, .any },
115177119525 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },
115178119526 .patterns = &.{
......@@ -115180,11 +119528,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
115180119528 },
115181119529 .call_frame = .{ .alignment = .@"16" },
115182119530 .extra_temps = .{
115183 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
115184 .{ .type = .u64, .kind = .{ .reg = .rdi } },
115185 .{ .type = .u64, .kind = .{ .reg = .rsi } },
119531 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
119532 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
115186119533 .{ .type = .usize, .kind = .{ .extern_func = "__floatuntidf" } },
115187 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
119534 .{ .type = .f64, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
119535 .unused,
115188119536 .unused,
115189119537 .unused,
115190119538 .unused,
......@@ -115195,16 +119543,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
115195119543 .dst_temps = .{ .mem, .unused },
115196119544 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
115197119545 .each = .{ .once = &.{
115198 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
115199 .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
115200 .{ ._, ._, .mov, .tmp2q, .memsiad(.src0q, .@"2", .tmp0, .add_unaligned_size, 8), ._, ._ },
115201 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
115202 .{ ._, ._sd, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp4x, ._, ._ },
115203 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
115204 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
119546 .{ ._, ._, .mov, .tmp0d, .sia(-8, .dst0, .add_unaligned_size), ._, ._ },
119547 .{ .@"0:", ._, .lea, .tmp1p, .memsi(.src0, .@"2", .tmp0), ._, ._ },
119548 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
119549 .{ ._, .v_sd, .mov, .memi(.dst0q, .tmp0), .tmp3x, ._, ._ },
119550 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
119551 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
115205119552 } },
115206119553 }, .{
115207 .required_features = .{ .@"64bit", .sse, null, null },
119554 .required_cc_abi = .sysv64,
119555 .required_features = .{ .sse2, null, null, null },
115208119556 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any, .any },
115209119557 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },
115210119558 .patterns = &.{
......@@ -115212,11 +119560,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
115212119560 },
115213119561 .call_frame = .{ .alignment = .@"16" },
115214119562 .extra_temps = .{
115215 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
115216 .{ .type = .u64, .kind = .{ .reg = .rdi } },
115217 .{ .type = .u64, .kind = .{ .reg = .rsi } },
119563 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
119564 .{ .type = .u128, .kind = .{ .param_gpr_pair = .{ .cc = .ccc, .after = 0, .at = 0 } } },
115218119565 .{ .type = .usize, .kind = .{ .extern_func = "__floatuntidf" } },
115219 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
119566 .{ .type = .f64, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
119567 .unused,
115220119568 .unused,
115221119569 .unused,
115222119570 .unused,
......@@ -115227,13 +119575,110 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
115227119575 .dst_temps = .{ .mem, .unused },
115228119576 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
115229119577 .each = .{ .once = &.{
115230 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
115231 .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
115232 .{ ._, ._, .mov, .tmp2q, .memsiad(.src0q, .@"2", .tmp0, .add_unaligned_size, 8), ._, ._ },
115233 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
115234 .{ ._, ._ps, .movl, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp4x, ._, ._ },
115235 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
115236 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
119578 .{ ._, ._, .mov, .tmp0d, .sia(-8, .dst0, .add_unaligned_size), ._, ._ },
119579 .{ .@"0:", ._, .mov, .tmp1q0, .memsi(.src0q, .@"2", .tmp0), ._, ._ },
119580 .{ ._, ._, .mov, .tmp1q1, .memsid(.src0q, .@"2", .tmp0, 8), ._, ._ },
119581 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
119582 .{ ._, ._sd, .mov, .memi(.dst0q, .tmp0), .tmp3x, ._, ._ },
119583 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
119584 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
119585 } },
119586 }, .{
119587 .required_cc_abi = .win64,
119588 .required_features = .{ .sse2, null, null, null },
119589 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any, .any },
119590 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },
119591 .patterns = &.{
119592 .{ .src = .{ .to_mem, .none, .none } },
119593 },
119594 .call_frame = .{ .alignment = .@"16" },
119595 .extra_temps = .{
119596 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
119597 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
119598 .{ .type = .usize, .kind = .{ .extern_func = "__floatuntidf" } },
119599 .{ .type = .f64, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
119600 .unused,
119601 .unused,
119602 .unused,
119603 .unused,
119604 .unused,
119605 .unused,
119606 .unused,
119607 },
119608 .dst_temps = .{ .mem, .unused },
119609 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
119610 .each = .{ .once = &.{
119611 .{ ._, ._, .mov, .tmp0d, .sia(-8, .dst0, .add_unaligned_size), ._, ._ },
119612 .{ .@"0:", ._, .lea, .tmp1p, .memsi(.src0, .@"2", .tmp0), ._, ._ },
119613 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
119614 .{ ._, ._sd, .mov, .memi(.dst0q, .tmp0), .tmp3x, ._, ._ },
119615 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
119616 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
119617 } },
119618 }, .{
119619 .required_cc_abi = .sysv64,
119620 .required_features = .{ .sse, null, null, null },
119621 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any, .any },
119622 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },
119623 .patterns = &.{
119624 .{ .src = .{ .to_mem, .none, .none } },
119625 },
119626 .call_frame = .{ .alignment = .@"16" },
119627 .extra_temps = .{
119628 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
119629 .{ .type = .u128, .kind = .{ .param_gpr_pair = .{ .cc = .ccc, .after = 0, .at = 0 } } },
119630 .{ .type = .usize, .kind = .{ .extern_func = "__floatuntidf" } },
119631 .{ .type = .f64, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
119632 .unused,
119633 .unused,
119634 .unused,
119635 .unused,
119636 .unused,
119637 .unused,
119638 .unused,
119639 },
119640 .dst_temps = .{ .mem, .unused },
119641 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
119642 .each = .{ .once = &.{
119643 .{ ._, ._, .mov, .tmp0d, .sia(-8, .dst0, .add_unaligned_size), ._, ._ },
119644 .{ .@"0:", ._, .mov, .tmp1q0, .memsi(.src0q, .@"2", .tmp0), ._, ._ },
119645 .{ ._, ._, .mov, .tmp1q1, .memsid(.src0q, .@"2", .tmp0, 8), ._, ._ },
119646 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
119647 .{ ._, ._ps, .movl, .memi(.dst0q, .tmp0), .tmp3x, ._, ._ },
119648 .{ ._, ._, .sub, .tmp0p, .si(8), ._, ._ },
119649 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
119650 } },
119651 }, .{
119652 .required_cc_abi = .win64,
119653 .required_features = .{ .sse, null, null, null },
119654 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any, .any },
119655 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },
119656 .patterns = &.{
119657 .{ .src = .{ .to_mem, .none, .none } },
119658 },
119659 .call_frame = .{ .alignment = .@"16" },
119660 .extra_temps = .{
119661 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
119662 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
119663 .{ .type = .usize, .kind = .{ .extern_func = "__floatuntidf" } },
119664 .{ .type = .f64, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
119665 .unused,
119666 .unused,
119667 .unused,
119668 .unused,
119669 .unused,
119670 .unused,
119671 .unused,
119672 },
119673 .dst_temps = .{ .mem, .unused },
119674 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
119675 .each = .{ .once = &.{
119676 .{ ._, ._, .mov, .tmp0d, .sia(-8, .dst0, .add_unaligned_size), ._, ._ },
119677 .{ .@"0:", ._, .lea, .tmp1p, .memsi(.src0, .@"2", .tmp0), ._, ._ },
119678 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
119679 .{ ._, ._ps, .movl, .memi(.dst0q, .tmp0), .tmp3x, ._, ._ },
119680 .{ ._, ._, .sub, .tmp0p, .si(8), ._, ._ },
119681 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
115237119682 } },
115238119683 }, .{
115239119684 .required_features = .{ .@"64bit", .avx, null, null },
......@@ -115245,11 +119690,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
115245119690 .call_frame = .{ .alignment = .@"16" },
115246119691 .extra_temps = .{
115247119692 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
115248 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
115249 .{ .type = .usize, .kind = .{ .reg = .rdi } },
115250 .{ .type = .usize, .kind = .{ .reg = .rsi } },
119693 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
119694 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
119695 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
115251119696 .{ .type = .usize, .kind = .{ .extern_func = "__floateidf" } },
115252 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
119697 .{ .type = .f64, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
115253119698 .unused,
115254119699 .unused,
115255119700 .unused,
......@@ -115259,15 +119704,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
115259119704 .dst_temps = .{ .mem, .unused },
115260119705 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
115261119706 .each = .{ .once = &.{
115262 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
115263 .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
119707 .{ ._, ._, .lea, .tmp0p, .mema(.src0, .add_unaligned_size_sub_elem_size), ._, ._ },
119708 .{ ._, ._, .mov, .tmp1d, .sia(-8, .dst0, .add_unaligned_size), ._, ._ },
115264119709 .{ .@"0:", ._, .mov, .tmp2p, .tmp0p, ._, ._ },
115265119710 .{ ._, ._, .mov, .tmp3d, .sa(.src0, .add_bit_size), ._, ._ },
115266119711 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
115267 .{ ._, .v_sd, .mov, .memia(.dst0q, .tmp1, .add_unaligned_size), .tmp5x, ._, ._ },
115268 .{ ._, ._, .lea, .tmp0p, .leaa(.tmp0, .add_src0_elem_size), ._, ._ },
115269 .{ ._, ._, .add, .tmp1p, .si(8), ._, ._ },
115270 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
119712 .{ ._, .v_sd, .mov, .memi(.dst0q, .tmp1), .tmp5x, ._, ._ },
119713 .{ ._, ._, .lea, .tmp0p, .leaa(.tmp0, .sub_src0_elem_size), ._, ._ },
119714 .{ ._, ._, .sub, .tmp1d, .si(8), ._, ._ },
119715 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
115271119716 } },
115272119717 }, .{
115273119718 .required_features = .{ .@"64bit", .sse2, null, null },
......@@ -115279,11 +119724,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
115279119724 .call_frame = .{ .alignment = .@"16" },
115280119725 .extra_temps = .{
115281119726 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
115282 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
115283 .{ .type = .usize, .kind = .{ .reg = .rdi } },
115284 .{ .type = .usize, .kind = .{ .reg = .rsi } },
119727 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
119728 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
119729 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
115285119730 .{ .type = .usize, .kind = .{ .extern_func = "__floateidf" } },
115286 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
119731 .{ .type = .f64, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
115287119732 .unused,
115288119733 .unused,
115289119734 .unused,
......@@ -115293,15 +119738,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
115293119738 .dst_temps = .{ .mem, .unused },
115294119739 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
115295119740 .each = .{ .once = &.{
115296 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
115297 .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
119741 .{ ._, ._, .lea, .tmp0p, .mema(.src0, .add_unaligned_size_sub_elem_size), ._, ._ },
119742 .{ ._, ._, .mov, .tmp1d, .sia(-8, .dst0, .add_unaligned_size), ._, ._ },
115298119743 .{ .@"0:", ._, .mov, .tmp2p, .tmp0p, ._, ._ },
115299119744 .{ ._, ._, .mov, .tmp3d, .sa(.src0, .add_bit_size), ._, ._ },
115300119745 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
115301 .{ ._, ._sd, .mov, .memia(.dst0q, .tmp1, .add_unaligned_size), .tmp5x, ._, ._ },
115302 .{ ._, ._, .lea, .tmp0p, .leaa(.tmp0, .add_src0_elem_size), ._, ._ },
115303 .{ ._, ._, .add, .tmp1p, .si(8), ._, ._ },
115304 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
119746 .{ ._, ._sd, .mov, .memi(.dst0q, .tmp1), .tmp5x, ._, ._ },
119747 .{ ._, ._, .lea, .tmp0p, .leaa(.tmp0, .sub_src0_elem_size), ._, ._ },
119748 .{ ._, ._, .sub, .tmp1d, .si(8), ._, ._ },
119749 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
115305119750 } },
115306119751 }, .{
115307119752 .required_features = .{ .@"64bit", .sse, null, null },
......@@ -115313,11 +119758,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
115313119758 .call_frame = .{ .alignment = .@"16" },
115314119759 .extra_temps = .{
115315119760 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
115316 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
115317 .{ .type = .usize, .kind = .{ .reg = .rdi } },
115318 .{ .type = .usize, .kind = .{ .reg = .rsi } },
119761 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
119762 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
119763 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
115319119764 .{ .type = .usize, .kind = .{ .extern_func = "__floateidf" } },
115320 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
119765 .{ .type = .f64, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
115321119766 .unused,
115322119767 .unused,
115323119768 .unused,
......@@ -115327,15 +119772,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
115327119772 .dst_temps = .{ .mem, .unused },
115328119773 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
115329119774 .each = .{ .once = &.{
115330 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
115331 .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
119775 .{ ._, ._, .lea, .tmp0p, .mema(.src0, .add_unaligned_size_sub_elem_size), ._, ._ },
119776 .{ ._, ._, .mov, .tmp1d, .sia(-8, .dst0, .add_unaligned_size), ._, ._ },
115332119777 .{ .@"0:", ._, .mov, .tmp2p, .tmp0p, ._, ._ },
115333119778 .{ ._, ._, .mov, .tmp3d, .sa(.src0, .add_bit_size), ._, ._ },
115334119779 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
115335 .{ ._, ._ps, .movl, .memia(.dst0q, .tmp1, .add_unaligned_size), .tmp5x, ._, ._ },
115336 .{ ._, ._, .lea, .tmp0p, .leaa(.tmp0, .add_src0_elem_size), ._, ._ },
115337 .{ ._, ._, .add, .tmp1p, .si(8), ._, ._ },
115338 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
119780 .{ ._, ._ps, .movl, .memi(.dst0q, .tmp1), .tmp5x, ._, ._ },
119781 .{ ._, ._, .lea, .tmp0p, .leaa(.tmp0, .sub_src0_elem_size), ._, ._ },
119782 .{ ._, ._, .sub, .tmp1d, .si(8), ._, ._ },
119783 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
115339119784 } },
115340119785 }, .{
115341119786 .required_features = .{ .@"64bit", .avx, null, null },
......@@ -115347,11 +119792,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
115347119792 .call_frame = .{ .alignment = .@"16" },
115348119793 .extra_temps = .{
115349119794 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
115350 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
115351 .{ .type = .usize, .kind = .{ .reg = .rdi } },
115352 .{ .type = .usize, .kind = .{ .reg = .rsi } },
119795 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
119796 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
119797 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
115353119798 .{ .type = .usize, .kind = .{ .extern_func = "__floatuneidf" } },
115354 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
119799 .{ .type = .f64, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
115355119800 .unused,
115356119801 .unused,
115357119802 .unused,
......@@ -115361,15 +119806,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
115361119806 .dst_temps = .{ .mem, .unused },
115362119807 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
115363119808 .each = .{ .once = &.{
115364 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
115365 .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
119809 .{ ._, ._, .lea, .tmp0p, .mema(.src0, .add_unaligned_size_sub_elem_size), ._, ._ },
119810 .{ ._, ._, .mov, .tmp1d, .sia(-8, .dst0, .add_unaligned_size), ._, ._ },
115366119811 .{ .@"0:", ._, .mov, .tmp2p, .tmp0p, ._, ._ },
115367119812 .{ ._, ._, .mov, .tmp3d, .sa(.src0, .add_bit_size), ._, ._ },
115368119813 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
115369 .{ ._, .v_sd, .mov, .memia(.dst0q, .tmp1, .add_unaligned_size), .tmp5x, ._, ._ },
115370 .{ ._, ._, .lea, .tmp0p, .leaa(.tmp0, .add_src0_elem_size), ._, ._ },
115371 .{ ._, ._, .add, .tmp1p, .si(8), ._, ._ },
115372 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
119814 .{ ._, .v_sd, .mov, .memi(.dst0q, .tmp1), .tmp5x, ._, ._ },
119815 .{ ._, ._, .lea, .tmp0p, .leaa(.tmp0, .sub_src0_elem_size), ._, ._ },
119816 .{ ._, ._, .sub, .tmp1d, .si(8), ._, ._ },
119817 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
115373119818 } },
115374119819 }, .{
115375119820 .required_features = .{ .@"64bit", .sse2, null, null },
......@@ -115381,11 +119826,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
115381119826 .call_frame = .{ .alignment = .@"16" },
115382119827 .extra_temps = .{
115383119828 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
115384 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
115385 .{ .type = .usize, .kind = .{ .reg = .rdi } },
115386 .{ .type = .usize, .kind = .{ .reg = .rsi } },
119829 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
119830 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
119831 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
115387119832 .{ .type = .usize, .kind = .{ .extern_func = "__floatuneidf" } },
115388 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
119833 .{ .type = .f64, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
115389119834 .unused,
115390119835 .unused,
115391119836 .unused,
......@@ -115395,15 +119840,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
115395119840 .dst_temps = .{ .mem, .unused },
115396119841 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
115397119842 .each = .{ .once = &.{
115398 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
115399 .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
119843 .{ ._, ._, .lea, .tmp0p, .mema(.src0, .add_unaligned_size_sub_elem_size), ._, ._ },
119844 .{ ._, ._, .mov, .tmp1d, .sia(-8, .dst0, .add_unaligned_size), ._, ._ },
115400119845 .{ .@"0:", ._, .mov, .tmp2p, .tmp0p, ._, ._ },
115401119846 .{ ._, ._, .mov, .tmp3d, .sa(.src0, .add_bit_size), ._, ._ },
115402119847 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
115403 .{ ._, ._sd, .mov, .memia(.dst0q, .tmp1, .add_unaligned_size), .tmp5x, ._, ._ },
115404 .{ ._, ._, .lea, .tmp0p, .leaa(.tmp0, .add_src0_elem_size), ._, ._ },
115405 .{ ._, ._, .add, .tmp1p, .si(8), ._, ._ },
115406 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
119848 .{ ._, ._sd, .mov, .memi(.dst0q, .tmp1), .tmp5x, ._, ._ },
119849 .{ ._, ._, .lea, .tmp0p, .leaa(.tmp0, .sub_src0_elem_size), ._, ._ },
119850 .{ ._, ._, .sub, .tmp1d, .si(8), ._, ._ },
119851 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
115407119852 } },
115408119853 }, .{
115409119854 .required_features = .{ .@"64bit", .sse, null, null },
......@@ -115415,11 +119860,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
115415119860 .call_frame = .{ .alignment = .@"16" },
115416119861 .extra_temps = .{
115417119862 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
115418 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
115419 .{ .type = .usize, .kind = .{ .reg = .rdi } },
115420 .{ .type = .usize, .kind = .{ .reg = .rsi } },
119863 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
119864 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
119865 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
115421119866 .{ .type = .usize, .kind = .{ .extern_func = "__floatuneidf" } },
115422 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
119867 .{ .type = .f64, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
115423119868 .unused,
115424119869 .unused,
115425119870 .unused,
......@@ -115429,15 +119874,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
115429119874 .dst_temps = .{ .mem, .unused },
115430119875 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
115431119876 .each = .{ .once = &.{
115432 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
115433 .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
119877 .{ ._, ._, .lea, .tmp0p, .mema(.src0, .add_unaligned_size_sub_elem_size), ._, ._ },
119878 .{ ._, ._, .mov, .tmp1d, .sia(-8, .dst0, .add_unaligned_size), ._, ._ },
115434119879 .{ .@"0:", ._, .mov, .tmp2p, .tmp0p, ._, ._ },
115435119880 .{ ._, ._, .mov, .tmp3d, .sa(.src0, .add_bit_size), ._, ._ },
115436119881 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
115437 .{ ._, ._ps, .movl, .memia(.dst0q, .tmp1, .add_unaligned_size), .tmp5x, ._, ._ },
115438 .{ ._, ._, .lea, .tmp0p, .leaa(.tmp0, .add_src0_elem_size), ._, ._ },
115439 .{ ._, ._, .add, .tmp1p, .si(8), ._, ._ },
115440 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
119882 .{ ._, ._ps, .movl, .memi(.dst0q, .tmp1), .tmp5x, ._, ._ },
119883 .{ ._, ._, .lea, .tmp0p, .leaa(.tmp0, .sub_src0_elem_size), ._, ._ },
119884 .{ ._, ._, .sub, .tmp1d, .si(8), ._, ._ },
119885 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
115441119886 } },
115442119887 }, .{
115443119888 .required_features = .{ .x87, null, null, null },
......@@ -115627,6 +120072,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
115627120072 .{ ._, .f_p, .st, .dst0t, ._, ._, ._ },
115628120073 } },
115629120074 }, .{
120075 .required_abi = .gnu,
115630120076 .required_features = .{ .x87, null, null, null },
115631120077 .src_constraints = .{ .{ .exact_unsigned_int = 64 }, .any, .any },
115632120078 .dst_constraints = .{ .{ .float = .tbyte }, .any },
......@@ -115634,10 +120080,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
115634120080 .{ .src = .{ .to_mem, .none, .none } },
115635120081 },
115636120082 .extra_temps = .{
120083 .{ .type = .f80, .kind = .{ .reg = .st7 } },
115637120084 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
115638 .{ .type = .u1, .kind = .{ .rc = .general_purpose } },
115639120085 .{ .type = .vector_2_f32, .kind = .f32_0_0x1p64_mem },
115640 .{ .type = .f80, .kind = .{ .reg = .st7 } },
120086 .{ .type = .u1, .kind = .{ .rc = .general_purpose } },
115641120087 .unused,
115642120088 .unused,
115643120089 .unused,
......@@ -115650,18 +120096,56 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
115650120096 .clobbers = .{ .eflags = true },
115651120097 .each = .{ .once = &.{
115652120098 .{ ._, .fi_, .ld, .src0q, ._, ._, ._ },
115653 .{ ._, ._, .lea, .tmp0p, .mem(.tmp2), ._, ._ },
120099 .{ ._, ._, .lea, .tmp1p, .mem(.tmp2), ._, ._ },
120100 .{ ._, ._, .mov, .tmp3d, .memd(.src0d, 4), ._, ._ },
120101 .{ ._, ._r, .sh, .tmp3d, .ui(31), ._, ._ },
120102 .{ ._, .f_, .add, .leasi(.tmp1d, .@"4", .tmp3), ._, ._, ._ },
120103 .{ ._, .f_p, .st, .dst0t, ._, ._, ._ },
120104 } },
120105 }, .{
120106 .required_abi = .msvc,
120107 .required_features = .{ .x87, null, null, null },
120108 .src_constraints = .{ .{ .exact_unsigned_int = 64 }, .any, .any },
120109 .dst_constraints = .{ .{ .float = .tbyte }, .any },
120110 .patterns = &.{
120111 .{ .src = .{ .to_mem, .none, .none } },
120112 },
120113 .extra_temps = .{
120114 .{ .type = .f80, .kind = .{ .reg = .st7 } },
120115 .{ .type = .u1, .kind = .{ .rc = .general_purpose } },
120116 .{ .type = .u16, .kind = .mem },
120117 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
120118 .{ .type = .vector_2_f32, .kind = .f32_0_0x1p64_mem },
120119 .unused,
120120 .unused,
120121 .unused,
120122 .unused,
120123 .unused,
120124 .unused,
120125 },
120126 .dst_temps = .{ .{ .rc = .x87 }, .unused },
120127 .clobbers = .{ .eflags = true },
120128 .each = .{ .once = &.{
120129 .{ ._, .fi_, .ld, .src0q, ._, ._, ._ },
115654120130 .{ ._, ._, .mov, .tmp1d, .memd(.src0d, 4), ._, ._ },
115655120131 .{ ._, ._r, .sh, .tmp1d, .ui(31), ._, ._ },
115656 .{ ._, .f_, .add, .leasi(.tmp0d, .@"4", .tmp1), ._, ._, ._ },
120132 .{ ._, .fn_cw, .st, .tmp2w, ._, ._, ._ },
120133 .{ ._, ._, .movzx, .tmp3d, .memd(.tmp2b, 1), ._, ._ },
120134 .{ ._, ._, .@"or", .memd(.tmp2b, 1), .ui(0b000_0_00_11), ._, ._ },
120135 .{ ._, .f_cw, .ld, .tmp2w, ._, ._, ._ },
120136 .{ ._, ._, .mov, .memd(.tmp2b, 1), .tmp3b, ._, ._ },
120137 .{ ._, ._, .lea, .tmp3p, .mem(.tmp4), ._, ._ },
120138 .{ ._, .f_, .add, .leasi(.tmp3d, .@"4", .tmp1), ._, ._, ._ },
120139 .{ ._, .f_cw, .ld, .tmp2w, ._, ._, ._ },
115657120140 .{ ._, .f_p, .st, .dst0t, ._, ._, ._ },
115658120141 } },
115659120142 }, .{
115660 .required_features = .{ .@"64bit", .sse, null, null },
120143 .required_cc_abi = .sysv64,
120144 .required_features = .{ .sse, null, null, null },
115661120145 .src_constraints = .{ .{ .signed_int = .xword }, .any, .any },
115662120146 .dst_constraints = .{ .{ .float = .tbyte }, .any },
115663120147 .patterns = &.{
115664 .{ .src = .{ .{ .to_reg_pair = .{ .rdi, .rsi } }, .none, .none } },
120148 .{ .src = .{ .{ .to_param_gpr_pair = .{ .cc = .ccc, .after = 0, .at = 0 } }, .none, .none } },
115665120149 },
115666120150 .call_frame = .{ .alignment = .@"16" },
115667120151 .extra_temps = .{
......@@ -115683,11 +120167,40 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
115683120167 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
115684120168 } },
115685120169 }, .{
115686 .required_features = .{ .@"64bit", .sse, null, null },
120170 .required_cc_abi = .win64,
120171 .src_constraints = .{ .{ .signed_int = .xword }, .any, .any },
120172 .dst_constraints = .{ .{ .float = .tbyte }, .any },
120173 .patterns = &.{
120174 .{ .src = .{ .to_mem, .none, .none } },
120175 },
120176 .call_frame = .{ .alignment = .@"16" },
120177 .extra_temps = .{
120178 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
120179 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
120180 .{ .type = .usize, .kind = .{ .extern_func = "__floattixf" } },
120181 .unused,
120182 .unused,
120183 .unused,
120184 .unused,
120185 .unused,
120186 .unused,
120187 .unused,
120188 .unused,
120189 },
120190 .dst_temps = .{ .mem, .unused },
120191 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
120192 .each = .{ .once = &.{
120193 .{ ._, ._, .lea, .tmp0p, .mem(.dst0), ._, ._ },
120194 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },
120195 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
120196 } },
120197 }, .{
120198 .required_cc_abi = .sysv64,
120199 .required_features = .{ .sse, null, null, null },
115687120200 .src_constraints = .{ .{ .unsigned_int = .xword }, .any, .any },
115688120201 .dst_constraints = .{ .{ .float = .tbyte }, .any },
115689120202 .patterns = &.{
115690 .{ .src = .{ .{ .to_reg_pair = .{ .rdi, .rsi } }, .none, .none } },
120203 .{ .src = .{ .{ .to_param_gpr_pair = .{ .cc = .ccc, .after = 0, .at = 0 } }, .none, .none } },
115691120204 },
115692120205 .call_frame = .{ .alignment = .@"16" },
115693120206 .extra_temps = .{
......@@ -115709,7 +120222,36 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
115709120222 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
115710120223 } },
115711120224 }, .{
115712 .required_features = .{ .@"64bit", .sse, null, null },
120225 .required_cc_abi = .win64,
120226 .src_constraints = .{ .{ .unsigned_int = .xword }, .any, .any },
120227 .dst_constraints = .{ .{ .float = .tbyte }, .any },
120228 .patterns = &.{
120229 .{ .src = .{ .to_mem, .none, .none } },
120230 },
120231 .call_frame = .{ .alignment = .@"16" },
120232 .extra_temps = .{
120233 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
120234 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
120235 .{ .type = .usize, .kind = .{ .extern_func = "__floatuntixf" } },
120236 .unused,
120237 .unused,
120238 .unused,
120239 .unused,
120240 .unused,
120241 .unused,
120242 .unused,
120243 .unused,
120244 },
120245 .dst_temps = .{ .mem, .unused },
120246 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
120247 .each = .{ .once = &.{
120248 .{ ._, ._, .lea, .tmp0p, .mem(.dst0), ._, ._ },
120249 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },
120250 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
120251 } },
120252 }, .{
120253 .required_cc_abi = .sysv64,
120254 .required_features = .{ .sse, null, null, null },
115713120255 .src_constraints = .{ .{ .remainder_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any },
115714120256 .dst_constraints = .{ .{ .float = .tbyte }, .any },
115715120257 .patterns = &.{
......@@ -115717,8 +120259,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
115717120259 },
115718120260 .call_frame = .{ .alignment = .@"16" },
115719120261 .extra_temps = .{
115720 .{ .type = .usize, .kind = .{ .reg = .rdi } },
115721 .{ .type = .usize, .kind = .{ .reg = .rsi } },
120262 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
120263 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
115722120264 .{ .type = .usize, .kind = .{ .extern_func = "__floateixf" } },
115723120265 .unused,
115724120266 .unused,
......@@ -115737,7 +120279,38 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
115737120279 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
115738120280 } },
115739120281 }, .{
115740 .required_features = .{ .@"64bit", .sse, null, null },
120282 .required_cc_abi = .win64,
120283 .required_features = .{ .sse, null, null, null },
120284 .src_constraints = .{ .{ .remainder_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any },
120285 .dst_constraints = .{ .{ .float = .tbyte }, .any },
120286 .patterns = &.{
120287 .{ .src = .{ .to_mem, .none, .none } },
120288 },
120289 .call_frame = .{ .alignment = .@"16" },
120290 .extra_temps = .{
120291 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
120292 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
120293 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 2, .at = 2 } } },
120294 .{ .type = .usize, .kind = .{ .extern_func = "__floateixf" } },
120295 .unused,
120296 .unused,
120297 .unused,
120298 .unused,
120299 .unused,
120300 .unused,
120301 .unused,
120302 },
120303 .dst_temps = .{ .mem, .unused },
120304 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
120305 .each = .{ .once = &.{
120306 .{ ._, ._, .lea, .tmp0p, .mem(.dst0), ._, ._ },
120307 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },
120308 .{ ._, ._, .mov, .tmp2d, .sa(.src0, .add_bit_size), ._, ._ },
120309 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
120310 } },
120311 }, .{
120312 .required_cc_abi = .sysv64,
120313 .required_features = .{ .sse, null, null, null },
115741120314 .src_constraints = .{ .{ .remainder_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any },
115742120315 .dst_constraints = .{ .{ .float = .tbyte }, .any },
115743120316 .patterns = &.{
......@@ -115745,8 +120318,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
115745120318 },
115746120319 .call_frame = .{ .alignment = .@"16" },
115747120320 .extra_temps = .{
115748 .{ .type = .usize, .kind = .{ .reg = .rdi } },
115749 .{ .type = .usize, .kind = .{ .reg = .rsi } },
120321 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
120322 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
115750120323 .{ .type = .usize, .kind = .{ .extern_func = "__floatuneixf" } },
115751120324 .unused,
115752120325 .unused,
......@@ -115764,6 +120337,36 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
115764120337 .{ ._, ._, .mov, .tmp1d, .sa(.src0, .add_bit_size), ._, ._ },
115765120338 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
115766120339 } },
120340 }, .{
120341 .required_cc_abi = .win64,
120342 .required_features = .{ .sse, null, null, null },
120343 .src_constraints = .{ .{ .remainder_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any },
120344 .dst_constraints = .{ .{ .float = .tbyte }, .any },
120345 .patterns = &.{
120346 .{ .src = .{ .to_mem, .none, .none } },
120347 },
120348 .call_frame = .{ .alignment = .@"16" },
120349 .extra_temps = .{
120350 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
120351 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
120352 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 2, .at = 2 } } },
120353 .{ .type = .usize, .kind = .{ .extern_func = "__floatuneixf" } },
120354 .unused,
120355 .unused,
120356 .unused,
120357 .unused,
120358 .unused,
120359 .unused,
120360 .unused,
120361 },
120362 .dst_temps = .{ .mem, .unused },
120363 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
120364 .each = .{ .once = &.{
120365 .{ ._, ._, .lea, .tmp0p, .mem(.dst0), ._, ._ },
120366 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },
120367 .{ ._, ._, .mov, .tmp2d, .sa(.src0, .add_bit_size), ._, ._ },
120368 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
120369 } },
115767120370 }, .{
115768120371 .required_features = .{ .x87, .slow_incdec, null, null },
115769120372 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any },
......@@ -115772,7 +120375,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
115772120375 .{ .src = .{ .to_mem, .none, .none } },
115773120376 },
115774120377 .extra_temps = .{
115775 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
120378 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
115776120379 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
115777120380 .{ .type = .i8, .kind = .{ .rc = .general_purpose } },
115778120381 .{ .type = .i16, .kind = .mem },
......@@ -115787,15 +120390,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
115787120390 .dst_temps = .{ .mem, .unused },
115788120391 .clobbers = .{ .eflags = true },
115789120392 .each = .{ .once = &.{
115790 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
115791 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
115792 .{ .@"0:", ._, .movsx, .tmp2d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
120393 .{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_unaligned_size), ._, ._ },
120394 .{ ._, ._, .lea, .tmp1p, .memad(.dst0, .add_unaligned_size, -16), ._, ._ },
120395 .{ .@"0:", ._, .movsx, .tmp2d, .memi(.src0b, .tmp0), ._, ._ },
115793120396 .{ ._, ._, .mov, .tmp3w, .tmp2w, ._, ._ },
115794120397 .{ ._, .fi_, .ld, .tmp3w, ._, ._, ._ },
115795120398 .{ ._, .f_p, .st, .lea(.tmp1t), ._, ._, ._ },
115796 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 16), ._, ._ },
115797 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
115798 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
120399 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, -16), ._, ._ },
120400 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
120401 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
115799120402 } },
115800120403 }, .{
115801120404 .required_features = .{ .x87, null, null, null },
......@@ -115805,7 +120408,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
115805120408 .{ .src = .{ .to_mem, .none, .none } },
115806120409 },
115807120410 .extra_temps = .{
115808 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
120411 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
115809120412 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
115810120413 .{ .type = .i8, .kind = .{ .rc = .general_purpose } },
115811120414 .{ .type = .i16, .kind = .mem },
......@@ -115820,15 +120423,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
115820120423 .dst_temps = .{ .mem, .unused },
115821120424 .clobbers = .{ .eflags = true },
115822120425 .each = .{ .once = &.{
115823 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
115824 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
115825 .{ .@"0:", ._, .movsx, .tmp2d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
120426 .{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_unaligned_size), ._, ._ },
120427 .{ ._, ._, .lea, .tmp1p, .memad(.dst0, .add_unaligned_size, -16), ._, ._ },
120428 .{ .@"0:", ._, .movsx, .tmp2d, .memi(.src0b, .tmp0), ._, ._ },
115826120429 .{ ._, ._, .mov, .tmp3w, .tmp2w, ._, ._ },
115827120430 .{ ._, .fi_, .ld, .tmp3w, ._, ._, ._ },
115828120431 .{ ._, .f_p, .st, .lea(.tmp1t), ._, ._, ._ },
115829 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 16), ._, ._ },
115830 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
115831 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
120432 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, -16), ._, ._ },
120433 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
120434 .{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
115832120435 } },
115833120436 }, .{
115834120437 .required_features = .{ .x87, .slow_incdec, null, null },
......@@ -115838,7 +120441,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
115838120441 .{ .src = .{ .to_mem, .none, .none } },
115839120442 },
115840120443 .extra_temps = .{
115841 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
120444 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
115842120445 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
115843120446 .{ .type = .i8, .kind = .{ .rc = .general_purpose } },
115844120447 .{ .type = .i16, .kind = .mem },
......@@ -115853,15 +120456,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
115853120456 .dst_temps = .{ .mem, .unused },
115854120457 .clobbers = .{ .eflags = true },
115855120458 .each = .{ .once = &.{
115856 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
115857 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
115858 .{ .@"0:", ._, .movzx, .tmp2d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
120459 .{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_unaligned_size), ._, ._ },
120460 .{ ._, ._, .lea, .tmp1p, .memad(.dst0, .add_unaligned_size, -16), ._, ._ },
120461 .{ .@"0:", ._, .movzx, .tmp2d, .memi(.src0b, .tmp0), ._, ._ },
115859120462 .{ ._, ._, .mov, .tmp3w, .tmp2w, ._, ._ },
115860120463 .{ ._, .fi_, .ld, .tmp3w, ._, ._, ._ },
115861120464 .{ ._, .f_p, .st, .lea(.tmp1t), ._, ._, ._ },
115862 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 16), ._, ._ },
115863 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
115864 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
120465 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, -16), ._, ._ },
120466 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
120467 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
115865120468 } },
115866120469 }, .{
115867120470 .required_features = .{ .x87, null, null, null },
......@@ -115871,7 +120474,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
115871120474 .{ .src = .{ .to_mem, .none, .none } },
115872120475 },
115873120476 .extra_temps = .{
115874 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
120477 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
115875120478 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
115876120479 .{ .type = .i8, .kind = .{ .rc = .general_purpose } },
115877120480 .{ .type = .i16, .kind = .mem },
......@@ -115886,17 +120489,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
115886120489 .dst_temps = .{ .mem, .unused },
115887120490 .clobbers = .{ .eflags = true },
115888120491 .each = .{ .once = &.{
115889 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
115890 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
115891 .{ .@"0:", ._, .movzx, .tmp2d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
120492 .{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_unaligned_size), ._, ._ },
120493 .{ ._, ._, .lea, .tmp1p, .memad(.dst0, .add_unaligned_size, -16), ._, ._ },
120494 .{ .@"0:", ._, .movzx, .tmp2d, .memi(.src0b, .tmp0), ._, ._ },
115892120495 .{ ._, ._, .mov, .tmp3w, .tmp2w, ._, ._ },
115893120496 .{ ._, .fi_, .ld, .tmp3w, ._, ._, ._ },
115894120497 .{ ._, .f_p, .st, .lea(.tmp1t), ._, ._, ._ },
115895 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 16), ._, ._ },
115896 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
115897 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
120498 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, -16), ._, ._ },
120499 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
120500 .{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
115898120501 } },
115899120502 }, .{
120503 .required_cc_abi = .sysv64,
115900120504 .required_features = .{ .x87, .slow_incdec, null, null },
115901120505 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any },
115902120506 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },
......@@ -115905,9 +120509,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
115905120509 },
115906120510 .call_frame = .{ .alignment = .@"16" },
115907120511 .extra_temps = .{
115908 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
120512 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
115909120513 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
115910 .{ .type = .i32, .kind = .{ .reg = .edi } },
120514 .{ .type = .i32, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
115911120515 .{ .type = .usize, .kind = .{ .extern_func = "__floatsixf" } },
115912120516 .{ .type = .f80, .kind = .{ .reg = .st7 } },
115913120517 .unused,
......@@ -115920,17 +120524,52 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
115920120524 .dst_temps = .{ .mem, .unused },
115921120525 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
115922120526 .each = .{ .once = &.{
115923 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
115924 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
115925 .{ .@"0:", ._, .movsx, .tmp2d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
120527 .{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_unaligned_size), ._, ._ },
120528 .{ ._, ._, .lea, .tmp1p, .memad(.dst0, .add_unaligned_size, -16), ._, ._ },
120529 .{ .@"0:", ._, .movsx, .tmp2d, .memi(.src0b, .tmp0), ._, ._ },
115926120530 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
115927120531 .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ },
115928120532 .{ ._, .f_p, .st, .lea(.tmp1t), ._, ._, ._ },
115929 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 16), ._, ._ },
115930 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
115931 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
120533 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, -16), ._, ._ },
120534 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
120535 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
115932120536 } },
115933120537 }, .{
120538 .required_cc_abi = .win64,
120539 .required_features = .{ .slow_incdec, null, null, null },
120540 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any },
120541 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },
120542 .patterns = &.{
120543 .{ .src = .{ .to_mem, .none, .none } },
120544 },
120545 .call_frame = .{ .alignment = .@"16" },
120546 .extra_temps = .{
120547 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
120548 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
120549 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
120550 .{ .type = .i32, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
120551 .{ .type = .usize, .kind = .{ .extern_func = "__floatsixf" } },
120552 .unused,
120553 .unused,
120554 .unused,
120555 .unused,
120556 .unused,
120557 .unused,
120558 },
120559 .dst_temps = .{ .mem, .unused },
120560 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
120561 .each = .{ .once = &.{
120562 .{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_unaligned_size), ._, ._ },
120563 .{ ._, ._, .lea, .tmp1p, .memad(.dst0, .add_unaligned_size, -16), ._, ._ },
120564 .{ .@"0:", ._, .mov, .tmp2p, .tmp1p, ._, ._ },
120565 .{ ._, ._, .movsx, .tmp3d, .memi(.src0b, .tmp0), ._, ._ },
120566 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
120567 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, -16), ._, ._ },
120568 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
120569 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
120570 } },
120571 }, .{
120572 .required_cc_abi = .sysv64,
115934120573 .required_features = .{ .x87, null, null, null },
115935120574 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any },
115936120575 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },
......@@ -115939,9 +120578,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
115939120578 },
115940120579 .call_frame = .{ .alignment = .@"16" },
115941120580 .extra_temps = .{
115942 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
120581 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
115943120582 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
115944 .{ .type = .i32, .kind = .{ .reg = .edi } },
120583 .{ .type = .i32, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
115945120584 .{ .type = .usize, .kind = .{ .extern_func = "__floatsixf" } },
115946120585 .{ .type = .f80, .kind = .{ .reg = .st7 } },
115947120586 .unused,
......@@ -115954,17 +120593,51 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
115954120593 .dst_temps = .{ .mem, .unused },
115955120594 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
115956120595 .each = .{ .once = &.{
115957 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
115958 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
115959 .{ .@"0:", ._, .movsx, .tmp2d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
120596 .{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_unaligned_size), ._, ._ },
120597 .{ ._, ._, .lea, .tmp1p, .memad(.dst0, .add_unaligned_size, -16), ._, ._ },
120598 .{ .@"0:", ._, .movsx, .tmp2d, .memi(.src0b, .tmp0), ._, ._ },
115960120599 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
115961120600 .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ },
115962120601 .{ ._, .f_p, .st, .lea(.tmp1t), ._, ._, ._ },
115963 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 16), ._, ._ },
115964 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
115965 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
120602 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, -16), ._, ._ },
120603 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
120604 .{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
120605 } },
120606 }, .{
120607 .required_cc_abi = .win64,
120608 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any },
120609 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },
120610 .patterns = &.{
120611 .{ .src = .{ .to_mem, .none, .none } },
120612 },
120613 .call_frame = .{ .alignment = .@"16" },
120614 .extra_temps = .{
120615 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
120616 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
120617 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
120618 .{ .type = .i32, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
120619 .{ .type = .usize, .kind = .{ .extern_func = "__floatsixf" } },
120620 .unused,
120621 .unused,
120622 .unused,
120623 .unused,
120624 .unused,
120625 .unused,
120626 },
120627 .dst_temps = .{ .mem, .unused },
120628 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
120629 .each = .{ .once = &.{
120630 .{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_unaligned_size), ._, ._ },
120631 .{ ._, ._, .lea, .tmp1p, .memad(.dst0, .add_unaligned_size, -16), ._, ._ },
120632 .{ .@"0:", ._, .mov, .tmp2p, .tmp1p, ._, ._ },
120633 .{ ._, ._, .movsx, .tmp3d, .memi(.src0b, .tmp0), ._, ._ },
120634 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
120635 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, -16), ._, ._ },
120636 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
120637 .{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
115966120638 } },
115967120639 }, .{
120640 .required_cc_abi = .sysv64,
115968120641 .required_features = .{ .x87, .slow_incdec, null, null },
115969120642 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any, .any },
115970120643 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },
......@@ -115973,9 +120646,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
115973120646 },
115974120647 .call_frame = .{ .alignment = .@"16" },
115975120648 .extra_temps = .{
115976 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
120649 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
115977120650 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
115978 .{ .type = .u32, .kind = .{ .reg = .edi } },
120651 .{ .type = .u32, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
115979120652 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsixf" } },
115980120653 .{ .type = .f80, .kind = .{ .reg = .st7 } },
115981120654 .unused,
......@@ -115988,17 +120661,52 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
115988120661 .dst_temps = .{ .mem, .unused },
115989120662 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
115990120663 .each = .{ .once = &.{
115991 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
115992 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
115993 .{ .@"0:", ._, .movzx, .tmp2d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
120664 .{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_unaligned_size), ._, ._ },
120665 .{ ._, ._, .lea, .tmp1p, .memad(.dst0, .add_unaligned_size, -16), ._, ._ },
120666 .{ .@"0:", ._, .movzx, .tmp2d, .memi(.src0b, .tmp0), ._, ._ },
115994120667 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
115995120668 .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ },
115996120669 .{ ._, .f_p, .st, .lea(.tmp1t), ._, ._, ._ },
115997 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 16), ._, ._ },
115998 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
115999 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
120670 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, -16), ._, ._ },
120671 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
120672 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
120673 } },
120674 }, .{
120675 .required_cc_abi = .win64,
120676 .required_features = .{ .slow_incdec, null, null, null },
120677 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any, .any },
120678 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },
120679 .patterns = &.{
120680 .{ .src = .{ .to_mem, .none, .none } },
120681 },
120682 .call_frame = .{ .alignment = .@"16" },
120683 .extra_temps = .{
120684 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
120685 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
120686 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
120687 .{ .type = .u32, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
120688 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsixf" } },
120689 .unused,
120690 .unused,
120691 .unused,
120692 .unused,
120693 .unused,
120694 .unused,
120695 },
120696 .dst_temps = .{ .mem, .unused },
120697 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
120698 .each = .{ .once = &.{
120699 .{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_unaligned_size), ._, ._ },
120700 .{ ._, ._, .lea, .tmp1p, .memad(.dst0, .add_unaligned_size, -16), ._, ._ },
120701 .{ .@"0:", ._, .mov, .tmp2p, .tmp1p, ._, ._ },
120702 .{ ._, ._, .movzx, .tmp3d, .memi(.src0b, .tmp0), ._, ._ },
120703 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
120704 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, -16), ._, ._ },
120705 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
120706 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
116000120707 } },
116001120708 }, .{
120709 .required_cc_abi = .sysv64,
116002120710 .required_features = .{ .x87, null, null, null },
116003120711 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any, .any },
116004120712 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },
......@@ -116007,9 +120715,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116007120715 },
116008120716 .call_frame = .{ .alignment = .@"16" },
116009120717 .extra_temps = .{
116010 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
120718 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
116011120719 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
116012 .{ .type = .u32, .kind = .{ .reg = .edi } },
120720 .{ .type = .u32, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
116013120721 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsixf" } },
116014120722 .{ .type = .f80, .kind = .{ .reg = .st7 } },
116015120723 .unused,
......@@ -116022,15 +120730,48 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116022120730 .dst_temps = .{ .mem, .unused },
116023120731 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
116024120732 .each = .{ .once = &.{
116025 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
116026 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
116027 .{ .@"0:", ._, .movzx, .tmp2d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
120733 .{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_unaligned_size), ._, ._ },
120734 .{ ._, ._, .lea, .tmp1p, .memad(.dst0, .add_unaligned_size, -16), ._, ._ },
120735 .{ .@"0:", ._, .movzx, .tmp2d, .memi(.src0b, .tmp0), ._, ._ },
116028120736 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
116029120737 .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ },
116030120738 .{ ._, .f_p, .st, .lea(.tmp1t), ._, ._, ._ },
116031 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 16), ._, ._ },
116032 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
116033 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
120739 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, -16), ._, ._ },
120740 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
120741 .{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
120742 } },
120743 }, .{
120744 .required_cc_abi = .win64,
120745 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any, .any },
120746 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },
120747 .patterns = &.{
120748 .{ .src = .{ .to_mem, .none, .none } },
120749 },
120750 .call_frame = .{ .alignment = .@"16" },
120751 .extra_temps = .{
120752 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
120753 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
120754 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
120755 .{ .type = .u32, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
120756 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsixf" } },
120757 .unused,
120758 .unused,
120759 .unused,
120760 .unused,
120761 .unused,
120762 .unused,
120763 },
120764 .dst_temps = .{ .mem, .unused },
120765 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
120766 .each = .{ .once = &.{
120767 .{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_unaligned_size), ._, ._ },
120768 .{ ._, ._, .lea, .tmp1p, .memad(.dst0, .add_unaligned_size, -16), ._, ._ },
120769 .{ .@"0:", ._, .mov, .tmp2p, .tmp1p, ._, ._ },
120770 .{ ._, ._, .movzx, .tmp3d, .memi(.src0b, .tmp0), ._, ._ },
120771 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
120772 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, -16), ._, ._ },
120773 .{ ._, ._c, .de, .tmp0d, .si(1), ._, ._ },
120774 .{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
116034120775 } },
116035120776 }, .{
116036120777 .required_features = .{ .x87, null, null, null },
......@@ -116040,7 +120781,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116040120781 .{ .src = .{ .to_mem, .none, .none } },
116041120782 },
116042120783 .extra_temps = .{
116043 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
120784 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
116044120785 .{ .type = .f80, .kind = .{ .reg = .st7 } },
116045120786 .unused,
116046120787 .unused,
......@@ -116055,13 +120796,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116055120796 .dst_temps = .{ .mem, .unused },
116056120797 .clobbers = .{ .eflags = true },
116057120798 .each = .{ .once = &.{
116058 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
116059 .{ .@"0:", .fi_, .ld, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._, ._ },
116060 .{ ._, .f_p, .st, .memsia(.dst0t, .@"8", .tmp0, .add_unaligned_size), ._, ._, ._ },
116061 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
116062 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
120799 .{ ._, ._, .mov, .tmp0d, .sia(-2, .src0, .add_unaligned_size), ._, ._ },
120800 .{ .@"0:", .fi_, .ld, .memi(.src0w, .tmp0), ._, ._, ._ },
120801 .{ ._, .f_p, .st, .memsi(.dst0t, .@"8", .tmp0), ._, ._, ._ },
120802 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
120803 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
116063120804 } },
116064120805 }, .{
120806 .required_cc_abi = .sysv64,
116065120807 .required_features = .{ .x87, null, null, null },
116066120808 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }, .any, .any },
116067120809 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },
......@@ -116070,8 +120812,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116070120812 },
116071120813 .call_frame = .{ .alignment = .@"16" },
116072120814 .extra_temps = .{
116073 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
116074 .{ .type = .i32, .kind = .{ .reg = .edi } },
120815 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
120816 .{ .type = .i32, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
116075120817 .{ .type = .usize, .kind = .{ .extern_func = "__floatsixf" } },
116076120818 .{ .type = .f80, .kind = .{ .reg = .st7 } },
116077120819 .unused,
......@@ -116085,15 +120827,47 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116085120827 .dst_temps = .{ .mem, .unused },
116086120828 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
116087120829 .each = .{ .once = &.{
116088 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
116089 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
120830 .{ ._, ._, .mov, .tmp0d, .sia(-2, .src0, .add_unaligned_size), ._, ._ },
120831 .{ .@"0:", ._, .movsx, .tmp1d, .memi(.src0w, .tmp0), ._, ._ },
116090120832 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
116091120833 .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ },
116092 .{ ._, .f_p, .st, .memsia(.dst0t, .@"8", .tmp0, .add_unaligned_size), ._, ._, ._ },
116093 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
116094 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
120834 .{ ._, .f_p, .st, .memsi(.dst0t, .@"8", .tmp0), ._, ._, ._ },
120835 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
120836 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
116095120837 } },
116096120838 }, .{
120839 .required_cc_abi = .win64,
120840 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }, .any, .any },
120841 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },
120842 .patterns = &.{
120843 .{ .src = .{ .to_mem, .none, .none } },
120844 },
120845 .call_frame = .{ .alignment = .@"16" },
120846 .extra_temps = .{
120847 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
120848 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
120849 .{ .type = .i32, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
120850 .{ .type = .usize, .kind = .{ .extern_func = "__floatsixf" } },
120851 .unused,
120852 .unused,
120853 .unused,
120854 .unused,
120855 .unused,
120856 .unused,
120857 .unused,
120858 },
120859 .dst_temps = .{ .mem, .unused },
120860 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
120861 .each = .{ .once = &.{
120862 .{ ._, ._, .mov, .tmp0d, .sia(-2, .src0, .add_unaligned_size), ._, ._ },
120863 .{ .@"0:", ._, .lea, .tmp1p, .memsi(.dst0, .@"8", .tmp0), ._, ._ },
120864 .{ ._, ._, .movsx, .tmp2d, .memi(.src0w, .tmp0), ._, ._ },
120865 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
120866 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
120867 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
120868 } },
120869 }, .{
120870 .required_cc_abi = .sysv64,
116097120871 .required_features = .{ .x87, null, null, null },
116098120872 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }, .any, .any },
116099120873 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },
......@@ -116102,8 +120876,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116102120876 },
116103120877 .call_frame = .{ .alignment = .@"16" },
116104120878 .extra_temps = .{
116105 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
116106 .{ .type = .u32, .kind = .{ .reg = .edi } },
120879 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
120880 .{ .type = .u32, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
116107120881 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsixf" } },
116108120882 .{ .type = .f80, .kind = .{ .reg = .st7 } },
116109120883 .unused,
......@@ -116117,13 +120891,44 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116117120891 .dst_temps = .{ .mem, .unused },
116118120892 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
116119120893 .each = .{ .once = &.{
116120 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
116121 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
120894 .{ ._, ._, .mov, .tmp0d, .sia(-2, .src0, .add_unaligned_size), ._, ._ },
120895 .{ .@"0:", ._, .movzx, .tmp1d, .memi(.src0w, .tmp0), ._, ._ },
116122120896 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
116123120897 .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ },
116124 .{ ._, .f_p, .st, .memsia(.dst0t, .@"8", .tmp0, .add_unaligned_size), ._, ._, ._ },
116125 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
116126 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
120898 .{ ._, .f_p, .st, .memsi(.dst0t, .@"8", .tmp0), ._, ._, ._ },
120899 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
120900 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
120901 } },
120902 }, .{
120903 .required_cc_abi = .win64,
120904 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }, .any, .any },
120905 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },
120906 .patterns = &.{
120907 .{ .src = .{ .to_mem, .none, .none } },
120908 },
120909 .call_frame = .{ .alignment = .@"16" },
120910 .extra_temps = .{
120911 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
120912 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
120913 .{ .type = .u32, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
120914 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsixf" } },
120915 .unused,
120916 .unused,
120917 .unused,
120918 .unused,
120919 .unused,
120920 .unused,
120921 .unused,
120922 },
120923 .dst_temps = .{ .mem, .unused },
120924 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
120925 .each = .{ .once = &.{
120926 .{ ._, ._, .mov, .tmp0d, .sia(-2, .src0, .add_unaligned_size), ._, ._ },
120927 .{ .@"0:", ._, .lea, .tmp1p, .memsi(.dst0, .@"8", .tmp0), ._, ._ },
120928 .{ ._, ._, .movzx, .tmp2d, .memi(.src0w, .tmp0), ._, ._ },
120929 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
120930 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
120931 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
116127120932 } },
116128120933 }, .{
116129120934 .required_features = .{ .x87, null, null, null },
......@@ -116133,7 +120938,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116133120938 .{ .src = .{ .to_mem, .none, .none } },
116134120939 },
116135120940 .extra_temps = .{
116136 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
120941 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
116137120942 .{ .type = .f80, .kind = .{ .reg = .st7 } },
116138120943 .unused,
116139120944 .unused,
......@@ -116148,13 +120953,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116148120953 .dst_temps = .{ .mem, .unused },
116149120954 .clobbers = .{ .eflags = true },
116150120955 .each = .{ .once = &.{
116151 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
116152 .{ .@"0:", .fi_, .ld, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._, ._ },
116153 .{ ._, .f_p, .st, .memsia(.dst0t, .@"4", .tmp0, .add_unaligned_size), ._, ._, ._ },
116154 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
116155 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
120956 .{ ._, ._, .mov, .tmp0d, .sia(-4, .src0, .add_unaligned_size), ._, ._ },
120957 .{ .@"0:", .fi_, .ld, .memi(.src0d, .tmp0), ._, ._, ._ },
120958 .{ ._, .f_p, .st, .memsi(.dst0t, .@"4", .tmp0), ._, ._, ._ },
120959 .{ ._, ._, .sub, .tmp0d, .si(4), ._, ._ },
120960 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
116156120961 } },
116157120962 }, .{
120963 .required_cc_abi = .sysv64,
116158120964 .required_features = .{ .x87, null, null, null },
116159120965 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any },
116160120966 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },
......@@ -116163,8 +120969,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116163120969 },
116164120970 .call_frame = .{ .alignment = .@"16" },
116165120971 .extra_temps = .{
116166 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
116167 .{ .type = .i32, .kind = .{ .reg = .edi } },
120972 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
120973 .{ .type = .i32, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
116168120974 .{ .type = .usize, .kind = .{ .extern_func = "__floatsixf" } },
116169120975 .{ .type = .f80, .kind = .{ .reg = .st7 } },
116170120976 .unused,
......@@ -116178,15 +120984,47 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116178120984 .dst_temps = .{ .mem, .unused },
116179120985 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
116180120986 .each = .{ .once = &.{
116181 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
116182 .{ .@"0:", ._, .mov, .tmp1d, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
120987 .{ ._, ._, .mov, .tmp0d, .sia(-4, .src0, .add_unaligned_size), ._, ._ },
120988 .{ .@"0:", ._, .mov, .tmp1d, .memi(.src0d, .tmp0), ._, ._ },
116183120989 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
116184120990 .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ },
116185 .{ ._, .f_p, .st, .memsia(.dst0t, .@"4", .tmp0, .add_unaligned_size), ._, ._, ._ },
116186 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
116187 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
120991 .{ ._, .f_p, .st, .memsi(.dst0t, .@"4", .tmp0), ._, ._, ._ },
120992 .{ ._, ._, .sub, .tmp0d, .si(4), ._, ._ },
120993 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
120994 } },
120995 }, .{
120996 .required_cc_abi = .win64,
120997 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any },
120998 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },
120999 .patterns = &.{
121000 .{ .src = .{ .to_mem, .none, .none } },
121001 },
121002 .call_frame = .{ .alignment = .@"16" },
121003 .extra_temps = .{
121004 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
121005 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
121006 .{ .type = .i32, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
121007 .{ .type = .usize, .kind = .{ .extern_func = "__floatsixf" } },
121008 .unused,
121009 .unused,
121010 .unused,
121011 .unused,
121012 .unused,
121013 .unused,
121014 .unused,
121015 },
121016 .dst_temps = .{ .mem, .unused },
121017 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
121018 .each = .{ .once = &.{
121019 .{ ._, ._, .mov, .tmp0d, .sia(-4, .src0, .add_unaligned_size), ._, ._ },
121020 .{ .@"0:", ._, .lea, .tmp1p, .memsi(.dst0, .@"4", .tmp0), ._, ._ },
121021 .{ ._, ._, .mov, .tmp2d, .memi(.src0d, .tmp0), ._, ._ },
121022 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
121023 .{ ._, ._, .sub, .tmp0d, .si(4), ._, ._ },
121024 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
116188121025 } },
116189121026 }, .{
121027 .required_cc_abi = .sysv64,
116190121028 .required_features = .{ .x87, null, null, null },
116191121029 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any },
116192121030 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },
......@@ -116195,8 +121033,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116195121033 },
116196121034 .call_frame = .{ .alignment = .@"16" },
116197121035 .extra_temps = .{
116198 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
116199 .{ .type = .u32, .kind = .{ .reg = .edi } },
121036 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
121037 .{ .type = .u32, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
116200121038 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsixf" } },
116201121039 .{ .type = .f80, .kind = .{ .reg = .st7 } },
116202121040 .unused,
......@@ -116210,13 +121048,44 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116210121048 .dst_temps = .{ .mem, .unused },
116211121049 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
116212121050 .each = .{ .once = &.{
116213 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
116214 .{ .@"0:", ._, .mov, .tmp1d, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
121051 .{ ._, ._, .mov, .tmp0d, .sia(-4, .src0, .add_unaligned_size), ._, ._ },
121052 .{ .@"0:", ._, .mov, .tmp1d, .memi(.src0d, .tmp0), ._, ._ },
116215121053 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
116216121054 .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ },
116217 .{ ._, .f_p, .st, .memsia(.dst0t, .@"4", .tmp0, .add_unaligned_size), ._, ._, ._ },
116218 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
116219 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
121055 .{ ._, .f_p, .st, .memsi(.dst0t, .@"4", .tmp0), ._, ._, ._ },
121056 .{ ._, ._, .sub, .tmp0d, .si(4), ._, ._ },
121057 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
121058 } },
121059 }, .{
121060 .required_cc_abi = .win64,
121061 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any },
121062 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },
121063 .patterns = &.{
121064 .{ .src = .{ .to_mem, .none, .none } },
121065 },
121066 .call_frame = .{ .alignment = .@"16" },
121067 .extra_temps = .{
121068 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
121069 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
121070 .{ .type = .u32, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
121071 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsixf" } },
121072 .unused,
121073 .unused,
121074 .unused,
121075 .unused,
121076 .unused,
121077 .unused,
121078 .unused,
121079 },
121080 .dst_temps = .{ .mem, .unused },
121081 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
121082 .each = .{ .once = &.{
121083 .{ ._, ._, .mov, .tmp0d, .sia(-4, .src0, .add_unaligned_size), ._, ._ },
121084 .{ .@"0:", ._, .lea, .tmp1p, .memsi(.dst0, .@"4", .tmp0), ._, ._ },
121085 .{ ._, ._, .mov, .tmp2d, .memi(.src0d, .tmp0), ._, ._ },
121086 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
121087 .{ ._, ._, .sub, .tmp0d, .si(4), ._, ._ },
121088 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
116220121089 } },
116221121090 }, .{
116222121091 .required_features = .{ .x87, null, null, null },
......@@ -116226,7 +121095,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116226121095 .{ .src = .{ .to_mem, .none, .none } },
116227121096 },
116228121097 .extra_temps = .{
116229 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
121098 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
116230121099 .{ .type = .f80, .kind = .{ .reg = .st7 } },
116231121100 .unused,
116232121101 .unused,
......@@ -116241,14 +121110,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116241121110 .dst_temps = .{ .mem, .unused },
116242121111 .clobbers = .{ .eflags = true },
116243121112 .each = .{ .once = &.{
116244 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
116245 .{ .@"0:", .fi_, .ld, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._, ._ },
116246 .{ ._, .f_p, .st, .memsia(.dst0t, .@"2", .tmp0, .add_unaligned_size), ._, ._, ._ },
116247 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
116248 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
121113 .{ ._, ._, .mov, .tmp0d, .sia(-8, .src0, .add_unaligned_size), ._, ._ },
121114 .{ .@"0:", .fi_, .ld, .memi(.src0q, .tmp0), ._, ._, ._ },
121115 .{ ._, .f_p, .st, .memsi(.dst0t, .@"2", .tmp0), ._, ._, ._ },
121116 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
121117 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
116249121118 } },
116250121119 }, .{
116251 .required_features = .{ .@"64bit", .x87, null, null },
121120 .required_cc_abi = .sysv64,
121121 .required_features = .{ .x87, null, null, null },
116252121122 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any, .any },
116253121123 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },
116254121124 .patterns = &.{
......@@ -116256,8 +121126,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116256121126 },
116257121127 .call_frame = .{ .alignment = .@"16" },
116258121128 .extra_temps = .{
116259 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
116260 .{ .type = .i64, .kind = .{ .reg = .rdi } },
121129 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
121130 .{ .type = .i64, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
116261121131 .{ .type = .usize, .kind = .{ .extern_func = "__floatdixf" } },
116262121132 .{ .type = .f80, .kind = .{ .reg = .st7 } },
116263121133 .unused,
......@@ -116271,16 +121141,48 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116271121141 .dst_temps = .{ .mem, .unused },
116272121142 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
116273121143 .each = .{ .once = &.{
116274 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
116275 .{ .@"0:", ._, .mov, .tmp1q, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
121144 .{ ._, ._, .mov, .tmp0d, .sia(-8, .src0, .add_unaligned_size), ._, ._ },
121145 .{ .@"0:", ._, .mov, .tmp1q, .memi(.src0q, .tmp0), ._, ._ },
116276121146 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
116277121147 .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ },
116278 .{ ._, .f_p, .st, .memsia(.dst0t, .@"2", .tmp0, .add_unaligned_size), ._, ._, ._ },
116279 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
116280 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
121148 .{ ._, .f_p, .st, .memsi(.dst0t, .@"2", .tmp0), ._, ._, ._ },
121149 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
121150 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
116281121151 } },
116282121152 }, .{
116283 .required_features = .{ .@"64bit", .x87, null, null },
121153 .required_cc_abi = .win64,
121154 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any, .any },
121155 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },
121156 .patterns = &.{
121157 .{ .src = .{ .to_mem, .none, .none } },
121158 },
121159 .call_frame = .{ .alignment = .@"16" },
121160 .extra_temps = .{
121161 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
121162 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
121163 .{ .type = .i64, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
121164 .{ .type = .usize, .kind = .{ .extern_func = "__floatdixf" } },
121165 .unused,
121166 .unused,
121167 .unused,
121168 .unused,
121169 .unused,
121170 .unused,
121171 .unused,
121172 },
121173 .dst_temps = .{ .mem, .unused },
121174 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
121175 .each = .{ .once = &.{
121176 .{ ._, ._, .mov, .tmp0d, .sia(-8, .src0, .add_unaligned_size), ._, ._ },
121177 .{ .@"0:", ._, .lea, .tmp1p, .memsi(.dst0, .@"2", .tmp0), ._, ._ },
121178 .{ ._, ._, .mov, .tmp2q, .memi(.src0q, .tmp0), ._, ._ },
121179 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
121180 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
121181 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
121182 } },
121183 }, .{
121184 .required_cc_abi = .sysv64,
121185 .required_features = .{ .x87, null, null, null },
116284121186 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any, .any },
116285121187 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },
116286121188 .patterns = &.{
......@@ -116288,8 +121190,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116288121190 },
116289121191 .call_frame = .{ .alignment = .@"16" },
116290121192 .extra_temps = .{
116291 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
116292 .{ .type = .u64, .kind = .{ .reg = .rdi } },
121193 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
121194 .{ .type = .u64, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
116293121195 .{ .type = .usize, .kind = .{ .extern_func = "__floatundixf" } },
116294121196 .{ .type = .f80, .kind = .{ .reg = .st7 } },
116295121197 .unused,
......@@ -116303,16 +121205,48 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116303121205 .dst_temps = .{ .mem, .unused },
116304121206 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
116305121207 .each = .{ .once = &.{
116306 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
116307 .{ .@"0:", ._, .mov, .tmp1q, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
121208 .{ ._, ._, .mov, .tmp0d, .sia(-8, .src0, .add_unaligned_size), ._, ._ },
121209 .{ .@"0:", ._, .mov, .tmp1q, .memi(.src0q, .tmp0), ._, ._ },
116308121210 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
116309121211 .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ },
116310 .{ ._, .f_p, .st, .memsia(.dst0t, .@"2", .tmp0, .add_unaligned_size), ._, ._, ._ },
116311 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
116312 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
121212 .{ ._, .f_p, .st, .memsi(.dst0t, .@"2", .tmp0), ._, ._, ._ },
121213 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
121214 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
116313121215 } },
116314121216 }, .{
116315 .required_features = .{ .@"64bit", .x87, null, null },
121217 .required_cc_abi = .win64,
121218 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any, .any },
121219 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },
121220 .patterns = &.{
121221 .{ .src = .{ .to_mem, .none, .none } },
121222 },
121223 .call_frame = .{ .alignment = .@"16" },
121224 .extra_temps = .{
121225 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
121226 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
121227 .{ .type = .i64, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
121228 .{ .type = .usize, .kind = .{ .extern_func = "__floatundixf" } },
121229 .unused,
121230 .unused,
121231 .unused,
121232 .unused,
121233 .unused,
121234 .unused,
121235 .unused,
121236 },
121237 .dst_temps = .{ .mem, .unused },
121238 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
121239 .each = .{ .once = &.{
121240 .{ ._, ._, .mov, .tmp0d, .sia(-8, .src0, .add_unaligned_size), ._, ._ },
121241 .{ .@"0:", ._, .lea, .tmp1p, .memsi(.dst0, .@"2", .tmp0), ._, ._ },
121242 .{ ._, ._, .mov, .tmp2q, .memi(.src0q, .tmp0), ._, ._ },
121243 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
121244 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
121245 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
121246 } },
121247 }, .{
121248 .required_cc_abi = .sysv64,
121249 .required_features = .{ .x87, null, null, null },
116316121250 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any, .any },
116317121251 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },
116318121252 .patterns = &.{
......@@ -116320,9 +121254,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116320121254 },
116321121255 .call_frame = .{ .alignment = .@"16" },
116322121256 .extra_temps = .{
116323 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
116324 .{ .type = .u64, .kind = .{ .reg = .rdi } },
116325 .{ .type = .i64, .kind = .{ .reg = .rsi } },
121257 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
121258 .{ .type = .i128, .kind = .{ .param_gpr_pair = .{ .cc = .ccc, .after = 0, .at = 0 } } },
116326121259 .{ .type = .usize, .kind = .{ .extern_func = "__floattixf" } },
116327121260 .{ .type = .f80, .kind = .{ .reg = .st7 } },
116328121261 .unused,
......@@ -116331,21 +121264,54 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116331121264 .unused,
116332121265 .unused,
116333121266 .unused,
121267 .unused,
116334121268 },
116335121269 .dst_temps = .{ .mem, .unused },
116336121270 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
116337121271 .each = .{ .once = &.{
116338 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
116339 .{ .@"0:", ._, .mov, .tmp1q, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
116340 .{ ._, ._, .mov, .tmp2q, .memiad(.src0q, .tmp0, .add_unaligned_size, 8), ._, ._ },
116341 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
121272 .{ ._, ._, .mov, .tmp0d, .sia(-16, .src0, .add_unaligned_size), ._, ._ },
121273 .{ .@"0:", ._, .mov, .tmp1q0, .memi(.src0q, .tmp0), ._, ._ },
121274 .{ ._, ._, .mov, .tmp1q1, .memid(.src0q, .tmp0, 8), ._, ._ },
121275 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
116342121276 .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ },
116343 .{ ._, .f_p, .st, .memia(.dst0t, .tmp0, .add_unaligned_size), ._, ._, ._ },
116344 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
116345 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
121277 .{ ._, .f_p, .st, .memi(.dst0t, .tmp0), ._, ._, ._ },
121278 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
121279 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
116346121280 } },
116347121281 }, .{
116348 .required_features = .{ .@"64bit", .x87, null, null },
121282 .required_cc_abi = .win64,
121283 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any, .any },
121284 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },
121285 .patterns = &.{
121286 .{ .src = .{ .to_mem, .none, .none } },
121287 },
121288 .call_frame = .{ .alignment = .@"16" },
121289 .extra_temps = .{
121290 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
121291 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
121292 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
121293 .{ .type = .usize, .kind = .{ .extern_func = "__floattixf" } },
121294 .unused,
121295 .unused,
121296 .unused,
121297 .unused,
121298 .unused,
121299 .unused,
121300 .unused,
121301 },
121302 .dst_temps = .{ .mem, .unused },
121303 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
121304 .each = .{ .once = &.{
121305 .{ ._, ._, .mov, .tmp0d, .sia(-16, .src0, .add_unaligned_size), ._, ._ },
121306 .{ .@"0:", ._, .lea, .tmp1p, .memi(.dst0, .tmp0), ._, ._ },
121307 .{ ._, ._, .lea, .tmp2p, .memi(.src0, .tmp0), ._, ._ },
121308 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
121309 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
121310 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
121311 } },
121312 }, .{
121313 .required_cc_abi = .sysv64,
121314 .required_features = .{ .x87, null, null, null },
116349121315 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any, .any },
116350121316 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },
116351121317 .patterns = &.{
......@@ -116353,9 +121319,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116353121319 },
116354121320 .call_frame = .{ .alignment = .@"16" },
116355121321 .extra_temps = .{
116356 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
116357 .{ .type = .u64, .kind = .{ .reg = .rdi } },
116358 .{ .type = .u64, .kind = .{ .reg = .rsi } },
121322 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
121323 .{ .type = .u128, .kind = .{ .param_gpr_pair = .{ .cc = .ccc, .after = 0, .at = 0 } } },
116359121324 .{ .type = .usize, .kind = .{ .extern_func = "__floatuntixf" } },
116360121325 .{ .type = .f80, .kind = .{ .reg = .st7 } },
116361121326 .unused,
......@@ -116364,21 +121329,54 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116364121329 .unused,
116365121330 .unused,
116366121331 .unused,
121332 .unused,
116367121333 },
116368121334 .dst_temps = .{ .mem, .unused },
116369121335 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
116370121336 .each = .{ .once = &.{
116371 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
116372 .{ .@"0:", ._, .mov, .tmp1q, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
116373 .{ ._, ._, .mov, .tmp2q, .memiad(.src0q, .tmp0, .add_unaligned_size, 8), ._, ._ },
116374 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
121337 .{ ._, ._, .mov, .tmp0d, .sia(-16, .src0, .add_unaligned_size), ._, ._ },
121338 .{ .@"0:", ._, .mov, .tmp1q0, .memi(.src0q, .tmp0), ._, ._ },
121339 .{ ._, ._, .mov, .tmp1q1, .memid(.src0q, .tmp0, 8), ._, ._ },
121340 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
116375121341 .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ },
116376 .{ ._, .f_p, .st, .memia(.dst0t, .tmp0, .add_unaligned_size), ._, ._, ._ },
116377 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
116378 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
121342 .{ ._, .f_p, .st, .memi(.dst0t, .tmp0), ._, ._, ._ },
121343 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
121344 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
116379121345 } },
116380121346 }, .{
116381 .required_features = .{ .@"64bit", .x87, null, null },
121347 .required_cc_abi = .win64,
121348 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any, .any },
121349 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },
121350 .patterns = &.{
121351 .{ .src = .{ .to_mem, .none, .none } },
121352 },
121353 .call_frame = .{ .alignment = .@"16" },
121354 .extra_temps = .{
121355 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
121356 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
121357 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
121358 .{ .type = .usize, .kind = .{ .extern_func = "__floatuntixf" } },
121359 .unused,
121360 .unused,
121361 .unused,
121362 .unused,
121363 .unused,
121364 .unused,
121365 .unused,
121366 },
121367 .dst_temps = .{ .mem, .unused },
121368 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
121369 .each = .{ .once = &.{
121370 .{ ._, ._, .mov, .tmp0d, .sia(-16, .src0, .add_unaligned_size), ._, ._ },
121371 .{ .@"0:", ._, .lea, .tmp1p, .memi(.dst0, .tmp0), ._, ._ },
121372 .{ ._, ._, .lea, .tmp2p, .memi(.src0, .tmp0), ._, ._ },
121373 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
121374 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
121375 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
121376 } },
121377 }, .{
121378 .required_cc_abi = .sysv64,
121379 .required_features = .{ .x87, null, null, null },
116382121380 .src_constraints = .{ .{ .scalar_remainder_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any },
116383121381 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },
116384121382 .patterns = &.{
......@@ -116387,9 +121385,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116387121385 .call_frame = .{ .alignment = .@"16" },
116388121386 .extra_temps = .{
116389121387 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
116390 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
116391 .{ .type = .usize, .kind = .{ .reg = .rdi } },
116392 .{ .type = .usize, .kind = .{ .reg = .rsi } },
121388 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
121389 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
121390 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
116393121391 .{ .type = .usize, .kind = .{ .extern_func = "__floateixf" } },
116394121392 .{ .type = .f80, .kind = .{ .reg = .st7 } },
116395121393 .unused,
......@@ -116401,19 +121399,54 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116401121399 .dst_temps = .{ .mem, .unused },
116402121400 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
116403121401 .each = .{ .once = &.{
116404 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
116405 .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
121402 .{ ._, ._, .lea, .tmp0p, .mema(.src0, .add_unaligned_size_sub_elem_size), ._, ._ },
121403 .{ ._, ._, .mov, .tmp1d, .sia(-16, .dst0, .add_unaligned_size), ._, ._ },
116406121404 .{ .@"0:", ._, .mov, .tmp2p, .tmp0p, ._, ._ },
116407121405 .{ ._, ._, .mov, .tmp3d, .sa(.src0, .add_bit_size), ._, ._ },
116408121406 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
116409121407 .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ },
116410 .{ ._, .f_p, .st, .memia(.dst0t, .tmp1, .add_unaligned_size), ._, ._, ._ },
116411 .{ ._, ._, .lea, .tmp0p, .leaa(.tmp0, .add_src0_elem_size), ._, ._ },
116412 .{ ._, ._, .add, .tmp1p, .si(16), ._, ._ },
116413 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
121408 .{ ._, .f_p, .st, .memi(.dst0t, .tmp1), ._, ._, ._ },
121409 .{ ._, ._, .lea, .tmp0p, .leaa(.tmp0, .sub_src0_elem_size), ._, ._ },
121410 .{ ._, ._, .sub, .tmp1d, .si(16), ._, ._ },
121411 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
116414121412 } },
116415121413 }, .{
116416 .required_features = .{ .@"64bit", .x87, null, null },
121414 .required_cc_abi = .win64,
121415 .src_constraints = .{ .{ .scalar_remainder_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any },
121416 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },
121417 .patterns = &.{
121418 .{ .src = .{ .to_mem, .none, .none } },
121419 },
121420 .call_frame = .{ .alignment = .@"16" },
121421 .extra_temps = .{
121422 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
121423 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
121424 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
121425 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
121426 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 2, .at = 2 } } },
121427 .{ .type = .usize, .kind = .{ .extern_func = "__floateixf" } },
121428 .unused,
121429 .unused,
121430 .unused,
121431 .unused,
121432 .unused,
121433 },
121434 .dst_temps = .{ .mem, .unused },
121435 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
121436 .each = .{ .once = &.{
121437 .{ ._, ._, .lea, .tmp0p, .mema(.src0, .add_unaligned_size_sub_elem_size), ._, ._ },
121438 .{ ._, ._, .mov, .tmp1d, .sia(-16, .dst0, .add_unaligned_size), ._, ._ },
121439 .{ .@"0:", ._, .lea, .tmp2p, .memi(.dst0, .tmp1), ._, ._ },
121440 .{ ._, ._, .mov, .tmp3p, .tmp0p, ._, ._ },
121441 .{ ._, ._, .mov, .tmp4d, .sa(.src0, .add_bit_size), ._, ._ },
121442 .{ ._, ._, .call, .tmp5d, ._, ._, ._ },
121443 .{ ._, ._, .lea, .tmp0p, .leaa(.tmp0, .sub_src0_elem_size), ._, ._ },
121444 .{ ._, ._, .sub, .tmp1d, .si(16), ._, ._ },
121445 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
121446 } },
121447 }, .{
121448 .required_cc_abi = .sysv64,
121449 .required_features = .{ .x87, null, null, null },
116417121450 .src_constraints = .{ .{ .scalar_remainder_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any },
116418121451 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },
116419121452 .patterns = &.{
......@@ -116422,9 +121455,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116422121455 .call_frame = .{ .alignment = .@"16" },
116423121456 .extra_temps = .{
116424121457 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
116425 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
116426 .{ .type = .usize, .kind = .{ .reg = .rdi } },
116427 .{ .type = .usize, .kind = .{ .reg = .rsi } },
121458 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
121459 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
121460 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
116428121461 .{ .type = .usize, .kind = .{ .extern_func = "__floatuneixf" } },
116429121462 .{ .type = .f80, .kind = .{ .reg = .st7 } },
116430121463 .unused,
......@@ -116436,16 +121469,50 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116436121469 .dst_temps = .{ .mem, .unused },
116437121470 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
116438121471 .each = .{ .once = &.{
116439 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
116440 .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
121472 .{ ._, ._, .lea, .tmp0p, .mema(.src0, .add_unaligned_size_sub_elem_size), ._, ._ },
121473 .{ ._, ._, .mov, .tmp1d, .sia(-16, .dst0, .add_unaligned_size), ._, ._ },
116441121474 .{ .@"0:", ._, .mov, .tmp2p, .tmp0p, ._, ._ },
116442121475 .{ ._, ._, .mov, .tmp3d, .sa(.src0, .add_bit_size), ._, ._ },
116443121476 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
116444121477 .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ },
116445 .{ ._, .f_p, .st, .memia(.dst0t, .tmp1, .add_unaligned_size), ._, ._, ._ },
116446 .{ ._, ._, .lea, .tmp0p, .leaa(.tmp0, .add_src0_elem_size), ._, ._ },
116447 .{ ._, ._, .add, .tmp1p, .si(16), ._, ._ },
116448 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
121478 .{ ._, .f_p, .st, .memi(.dst0t, .tmp1), ._, ._, ._ },
121479 .{ ._, ._, .lea, .tmp0p, .leaa(.tmp0, .sub_src0_elem_size), ._, ._ },
121480 .{ ._, ._, .sub, .tmp1d, .si(16), ._, ._ },
121481 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
121482 } },
121483 }, .{
121484 .required_cc_abi = .win64,
121485 .src_constraints = .{ .{ .scalar_remainder_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any },
121486 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },
121487 .patterns = &.{
121488 .{ .src = .{ .to_mem, .none, .none } },
121489 },
121490 .call_frame = .{ .alignment = .@"16" },
121491 .extra_temps = .{
121492 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
121493 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
121494 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
121495 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
121496 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 2, .at = 2 } } },
121497 .{ .type = .usize, .kind = .{ .extern_func = "__floatuneixf" } },
121498 .unused,
121499 .unused,
121500 .unused,
121501 .unused,
121502 .unused,
121503 },
121504 .dst_temps = .{ .mem, .unused },
121505 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
121506 .each = .{ .once = &.{
121507 .{ ._, ._, .lea, .tmp0p, .mema(.src0, .add_unaligned_size_sub_elem_size), ._, ._ },
121508 .{ ._, ._, .mov, .tmp1d, .sia(-16, .dst0, .add_unaligned_size), ._, ._ },
121509 .{ .@"0:", ._, .lea, .tmp2p, .memi(.dst0, .tmp1), ._, ._ },
121510 .{ ._, ._, .mov, .tmp3p, .tmp0p, ._, ._ },
121511 .{ ._, ._, .mov, .tmp4d, .sa(.src0, .add_bit_size), ._, ._ },
121512 .{ ._, ._, .call, .tmp5d, ._, ._, ._ },
121513 .{ ._, ._, .lea, .tmp0p, .leaa(.tmp0, .sub_src0_elem_size), ._, ._ },
121514 .{ ._, ._, .sub, .tmp1d, .si(16), ._, ._ },
121515 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
116449121516 } },
116450121517 }, .{
116451121518 .required_features = .{ .sse, null, null, null },
......@@ -116457,7 +121524,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116457121524 },
116458121525 .call_frame = .{ .alignment = .@"16" },
116459121526 .extra_temps = .{
116460 .{ .type = .i32, .kind = .{ .reg = .edi } },
121527 .{ .type = .i32, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
116461121528 .{ .type = .usize, .kind = .{ .extern_func = "__floatsitf" } },
116462121529 .unused,
116463121530 .unused,
......@@ -116469,7 +121536,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116469121536 .unused,
116470121537 .unused,
116471121538 },
116472 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },
121539 .dst_temps = .{ .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
116473121540 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
116474121541 .each = .{ .once = &.{
116475121542 .{ ._, ._, .movsx, .tmp0d, .src0b, ._, ._ },
......@@ -116485,7 +121552,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116485121552 },
116486121553 .call_frame = .{ .alignment = .@"16" },
116487121554 .extra_temps = .{
116488 .{ .type = .u32, .kind = .{ .reg = .edi } },
121555 .{ .type = .u32, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
116489121556 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsitf" } },
116490121557 .unused,
116491121558 .unused,
......@@ -116497,7 +121564,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116497121564 .unused,
116498121565 .unused,
116499121566 },
116500 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },
121567 .dst_temps = .{ .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
116501121568 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
116502121569 .each = .{ .once = &.{
116503121570 .{ ._, ._, .movzx, .tmp0d, .src0b, ._, ._ },
......@@ -116513,7 +121580,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116513121580 },
116514121581 .call_frame = .{ .alignment = .@"16" },
116515121582 .extra_temps = .{
116516 .{ .type = .i32, .kind = .{ .reg = .edi } },
121583 .{ .type = .i32, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
116517121584 .{ .type = .usize, .kind = .{ .extern_func = "__floatsitf" } },
116518121585 .unused,
116519121586 .unused,
......@@ -116525,7 +121592,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116525121592 .unused,
116526121593 .unused,
116527121594 },
116528 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },
121595 .dst_temps = .{ .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
116529121596 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
116530121597 .each = .{ .once = &.{
116531121598 .{ ._, ._, .movsx, .tmp0d, .src0w, ._, ._ },
......@@ -116541,7 +121608,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116541121608 },
116542121609 .call_frame = .{ .alignment = .@"16" },
116543121610 .extra_temps = .{
116544 .{ .type = .u32, .kind = .{ .reg = .edi } },
121611 .{ .type = .u32, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
116545121612 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsitf" } },
116546121613 .unused,
116547121614 .unused,
......@@ -116553,7 +121620,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116553121620 .unused,
116554121621 .unused,
116555121622 },
116556 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },
121623 .dst_temps = .{ .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
116557121624 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
116558121625 .each = .{ .once = &.{
116559121626 .{ ._, ._, .movzx, .tmp0d, .src0w, ._, ._ },
......@@ -116564,7 +121631,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116564121631 .src_constraints = .{ .{ .signed_int = .dword }, .any, .any },
116565121632 .dst_constraints = .{ .{ .float = .xword }, .any },
116566121633 .patterns = &.{
116567 .{ .src = .{ .{ .to_reg = .edi }, .none, .none } },
121634 .{ .src = .{ .{ .to_param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } }, .none, .none } },
116568121635 },
116569121636 .call_frame = .{ .alignment = .@"16" },
116570121637 .extra_temps = .{
......@@ -116580,7 +121647,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116580121647 .unused,
116581121648 .unused,
116582121649 },
116583 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },
121650 .dst_temps = .{ .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
116584121651 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
116585121652 .each = .{ .once = &.{
116586121653 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
......@@ -116590,7 +121657,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116590121657 .src_constraints = .{ .{ .unsigned_int = .dword }, .any, .any },
116591121658 .dst_constraints = .{ .{ .float = .xword }, .any },
116592121659 .patterns = &.{
116593 .{ .src = .{ .{ .to_reg = .edi }, .none, .none } },
121660 .{ .src = .{ .{ .to_param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } }, .none, .none } },
116594121661 },
116595121662 .call_frame = .{ .alignment = .@"16" },
116596121663 .extra_temps = .{
......@@ -116606,7 +121673,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116606121673 .unused,
116607121674 .unused,
116608121675 },
116609 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },
121676 .dst_temps = .{ .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
116610121677 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
116611121678 .each = .{ .once = &.{
116612121679 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
......@@ -116616,7 +121683,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116616121683 .src_constraints = .{ .{ .signed_int = .qword }, .any, .any },
116617121684 .dst_constraints = .{ .{ .float = .xword }, .any },
116618121685 .patterns = &.{
116619 .{ .src = .{ .{ .to_reg = .rdi }, .none, .none } },
121686 .{ .src = .{ .{ .to_param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } }, .none, .none } },
116620121687 },
116621121688 .call_frame = .{ .alignment = .@"16" },
116622121689 .extra_temps = .{
......@@ -116632,7 +121699,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116632121699 .unused,
116633121700 .unused,
116634121701 },
116635 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },
121702 .dst_temps = .{ .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
116636121703 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
116637121704 .each = .{ .once = &.{
116638121705 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
......@@ -116642,7 +121709,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116642121709 .src_constraints = .{ .{ .unsigned_int = .qword }, .any, .any },
116643121710 .dst_constraints = .{ .{ .float = .xword }, .any },
116644121711 .patterns = &.{
116645 .{ .src = .{ .{ .to_reg = .rdi }, .none, .none } },
121712 .{ .src = .{ .{ .to_param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } }, .none, .none } },
116646121713 },
116647121714 .call_frame = .{ .alignment = .@"16" },
116648121715 .extra_temps = .{
......@@ -116658,17 +121725,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116658121725 .unused,
116659121726 .unused,
116660121727 },
116661 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },
121728 .dst_temps = .{ .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
116662121729 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
116663121730 .each = .{ .once = &.{
116664121731 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
116665121732 } },
116666121733 }, .{
116667 .required_features = .{ .@"64bit", .sse, null, null },
121734 .required_cc_abi = .sysv64,
121735 .required_features = .{ .sse, null, null, null },
116668121736 .src_constraints = .{ .{ .signed_int = .xword }, .any, .any },
116669121737 .dst_constraints = .{ .{ .float = .xword }, .any },
116670121738 .patterns = &.{
116671 .{ .src = .{ .{ .to_reg_pair = .{ .rdi, .rsi } }, .none, .none } },
121739 .{ .src = .{ .{ .to_param_gpr_pair = .{ .cc = .ccc, .after = 0, .at = 0 } }, .none, .none } },
116672121740 },
116673121741 .call_frame = .{ .alignment = .@"16" },
116674121742 .extra_temps = .{
......@@ -116684,17 +121752,46 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116684121752 .unused,
116685121753 .unused,
116686121754 },
116687 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },
121755 .dst_temps = .{ .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
116688121756 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
116689121757 .each = .{ .once = &.{
116690121758 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
116691121759 } },
116692121760 }, .{
116693 .required_features = .{ .@"64bit", .sse, null, null },
121761 .required_cc_abi = .win64,
121762 .required_features = .{ .sse, null, null, null },
121763 .src_constraints = .{ .{ .signed_int = .xword }, .any, .any },
121764 .dst_constraints = .{ .{ .float = .xword }, .any },
121765 .patterns = &.{
121766 .{ .src = .{ .to_mem, .none, .none } },
121767 },
121768 .call_frame = .{ .alignment = .@"16" },
121769 .extra_temps = .{
121770 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
121771 .{ .type = .usize, .kind = .{ .extern_func = "__floattitf" } },
121772 .unused,
121773 .unused,
121774 .unused,
121775 .unused,
121776 .unused,
121777 .unused,
121778 .unused,
121779 .unused,
121780 .unused,
121781 },
121782 .dst_temps = .{ .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
121783 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
121784 .each = .{ .once = &.{
121785 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
121786 .{ ._, ._, .call, .tmp1d, ._, ._, ._ },
121787 } },
121788 }, .{
121789 .required_cc_abi = .sysv64,
121790 .required_features = .{ .sse, null, null, null },
116694121791 .src_constraints = .{ .{ .unsigned_int = .xword }, .any, .any },
116695121792 .dst_constraints = .{ .{ .float = .xword }, .any },
116696121793 .patterns = &.{
116697 .{ .src = .{ .{ .to_reg_pair = .{ .rdi, .rsi } }, .none, .none } },
121794 .{ .src = .{ .{ .to_param_gpr_pair = .{ .cc = .ccc, .after = 0, .at = 0 } }, .none, .none } },
116698121795 },
116699121796 .call_frame = .{ .alignment = .@"16" },
116700121797 .extra_temps = .{
......@@ -116710,11 +121807,39 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116710121807 .unused,
116711121808 .unused,
116712121809 },
116713 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },
121810 .dst_temps = .{ .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
116714121811 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
116715121812 .each = .{ .once = &.{
116716121813 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
116717121814 } },
121815 }, .{
121816 .required_cc_abi = .win64,
121817 .required_features = .{ .sse, null, null, null },
121818 .src_constraints = .{ .{ .unsigned_int = .xword }, .any, .any },
121819 .dst_constraints = .{ .{ .float = .xword }, .any },
121820 .patterns = &.{
121821 .{ .src = .{ .to_mem, .none, .none } },
121822 },
121823 .call_frame = .{ .alignment = .@"16" },
121824 .extra_temps = .{
121825 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
121826 .{ .type = .usize, .kind = .{ .extern_func = "__floatuntitf" } },
121827 .unused,
121828 .unused,
121829 .unused,
121830 .unused,
121831 .unused,
121832 .unused,
121833 .unused,
121834 .unused,
121835 .unused,
121836 },
121837 .dst_temps = .{ .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
121838 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
121839 .each = .{ .once = &.{
121840 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
121841 .{ ._, ._, .call, .tmp1d, ._, ._, ._ },
121842 } },
116718121843 }, .{
116719121844 .required_features = .{ .@"64bit", .sse, null, null },
116720121845 .src_constraints = .{ .{ .remainder_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any },
......@@ -116724,8 +121849,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116724121849 },
116725121850 .call_frame = .{ .alignment = .@"16" },
116726121851 .extra_temps = .{
116727 .{ .type = .usize, .kind = .{ .reg = .rdi } },
116728 .{ .type = .usize, .kind = .{ .reg = .rsi } },
121852 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
121853 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
116729121854 .{ .type = .usize, .kind = .{ .extern_func = "__floateitf" } },
116730121855 .unused,
116731121856 .unused,
......@@ -116736,7 +121861,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116736121861 .unused,
116737121862 .unused,
116738121863 },
116739 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },
121864 .dst_temps = .{ .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
116740121865 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
116741121866 .each = .{ .once = &.{
116742121867 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
......@@ -116752,8 +121877,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116752121877 },
116753121878 .call_frame = .{ .alignment = .@"16" },
116754121879 .extra_temps = .{
116755 .{ .type = .usize, .kind = .{ .reg = .rdi } },
116756 .{ .type = .usize, .kind = .{ .reg = .rsi } },
121880 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
121881 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
116757121882 .{ .type = .usize, .kind = .{ .extern_func = "__floatuneitf" } },
116758121883 .unused,
116759121884 .unused,
......@@ -116764,7 +121889,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116764121889 .unused,
116765121890 .unused,
116766121891 },
116767 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },
121892 .dst_temps = .{ .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
116768121893 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
116769121894 .each = .{ .once = &.{
116770121895 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
......@@ -116780,11 +121905,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116780121905 },
116781121906 .call_frame = .{ .alignment = .@"16" },
116782121907 .extra_temps = .{
116783 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
121908 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
116784121909 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
116785 .{ .type = .i32, .kind = .{ .reg = .edi } },
121910 .{ .type = .i32, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
116786121911 .{ .type = .usize, .kind = .{ .extern_func = "__floatsitf" } },
116787 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
121912 .{ .type = .f128, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
116788121913 .unused,
116789121914 .unused,
116790121915 .unused,
......@@ -116795,14 +121920,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116795121920 .dst_temps = .{ .mem, .unused },
116796121921 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
116797121922 .each = .{ .once = &.{
116798 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
116799 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
116800 .{ .@"0:", ._, .movsx, .tmp2d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
121923 .{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_unaligned_size), ._, ._ },
121924 .{ ._, ._, .lea, .tmp1p, .memad(.dst0, .add_unaligned_size, -16), ._, ._ },
121925 .{ .@"0:", ._, .movsx, .tmp2d, .memi(.src0b, .tmp0), ._, ._ },
116801121926 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
116802121927 .{ ._, .v_dqa, .mov, .lea(.tmp1x), .tmp4x, ._, ._ },
116803 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 16), ._, ._ },
116804 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
116805 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
121928 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, -16), ._, ._ },
121929 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
121930 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
116806121931 } },
116807121932 }, .{
116808121933 .required_features = .{ .avx, null, null, null },
......@@ -116813,11 +121938,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116813121938 },
116814121939 .call_frame = .{ .alignment = .@"16" },
116815121940 .extra_temps = .{
116816 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
121941 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
116817121942 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
116818 .{ .type = .i32, .kind = .{ .reg = .edi } },
121943 .{ .type = .i32, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
116819121944 .{ .type = .usize, .kind = .{ .extern_func = "__floatsitf" } },
116820 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
121945 .{ .type = .f128, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
116821121946 .unused,
116822121947 .unused,
116823121948 .unused,
......@@ -116828,14 +121953,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116828121953 .dst_temps = .{ .mem, .unused },
116829121954 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
116830121955 .each = .{ .once = &.{
116831 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
116832 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
116833 .{ .@"0:", ._, .movsx, .tmp2d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
121956 .{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_unaligned_size), ._, ._ },
121957 .{ ._, ._, .lea, .tmp1p, .memad(.dst0, .add_unaligned_size, -16), ._, ._ },
121958 .{ .@"0:", ._, .movsx, .tmp2d, .memi(.src0b, .tmp0), ._, ._ },
116834121959 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
116835121960 .{ ._, .v_dqa, .mov, .lea(.tmp1x), .tmp4x, ._, ._ },
116836 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 16), ._, ._ },
116837 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
116838 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
121961 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, -16), ._, ._ },
121962 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
121963 .{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
116839121964 } },
116840121965 }, .{
116841121966 .required_features = .{ .sse2, .slow_incdec, null, null },
......@@ -116846,11 +121971,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116846121971 },
116847121972 .call_frame = .{ .alignment = .@"16" },
116848121973 .extra_temps = .{
116849 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
121974 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
116850121975 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
116851 .{ .type = .i32, .kind = .{ .reg = .edi } },
121976 .{ .type = .i32, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
116852121977 .{ .type = .usize, .kind = .{ .extern_func = "__floatsitf" } },
116853 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
121978 .{ .type = .f128, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
116854121979 .unused,
116855121980 .unused,
116856121981 .unused,
......@@ -116861,14 +121986,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116861121986 .dst_temps = .{ .mem, .unused },
116862121987 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
116863121988 .each = .{ .once = &.{
116864 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
116865 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
116866 .{ .@"0:", ._, .movsx, .tmp2d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
121989 .{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_unaligned_size), ._, ._ },
121990 .{ ._, ._, .lea, .tmp1p, .memad(.dst0, .add_unaligned_size, -16), ._, ._ },
121991 .{ .@"0:", ._, .movsx, .tmp2d, .memi(.src0b, .tmp0), ._, ._ },
116867121992 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
116868121993 .{ ._, ._dqa, .mov, .lea(.tmp1x), .tmp4x, ._, ._ },
116869 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 16), ._, ._ },
116870 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
116871 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
121994 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, -16), ._, ._ },
121995 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
121996 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
116872121997 } },
116873121998 }, .{
116874121999 .required_features = .{ .sse2, null, null, null },
......@@ -116879,11 +122004,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116879122004 },
116880122005 .call_frame = .{ .alignment = .@"16" },
116881122006 .extra_temps = .{
116882 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
122007 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
116883122008 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
116884 .{ .type = .i32, .kind = .{ .reg = .edi } },
122009 .{ .type = .i32, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
116885122010 .{ .type = .usize, .kind = .{ .extern_func = "__floatsitf" } },
116886 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
122011 .{ .type = .f128, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
116887122012 .unused,
116888122013 .unused,
116889122014 .unused,
......@@ -116894,14 +122019,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116894122019 .dst_temps = .{ .mem, .unused },
116895122020 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
116896122021 .each = .{ .once = &.{
116897 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
116898 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
116899 .{ .@"0:", ._, .movsx, .tmp2d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
122022 .{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_unaligned_size), ._, ._ },
122023 .{ ._, ._, .lea, .tmp1p, .memad(.dst0, .add_unaligned_size, -16), ._, ._ },
122024 .{ .@"0:", ._, .movsx, .tmp2d, .memi(.src0b, .tmp0), ._, ._ },
116900122025 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
116901122026 .{ ._, ._dqa, .mov, .lea(.tmp1x), .tmp4x, ._, ._ },
116902 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 16), ._, ._ },
116903 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
116904 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
122027 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, -16), ._, ._ },
122028 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
122029 .{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
116905122030 } },
116906122031 }, .{
116907122032 .required_features = .{ .sse, .slow_incdec, null, null },
......@@ -116912,11 +122037,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116912122037 },
116913122038 .call_frame = .{ .alignment = .@"16" },
116914122039 .extra_temps = .{
116915 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
122040 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
116916122041 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
116917 .{ .type = .i32, .kind = .{ .reg = .edi } },
122042 .{ .type = .i32, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
116918122043 .{ .type = .usize, .kind = .{ .extern_func = "__floatsitf" } },
116919 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
122044 .{ .type = .f128, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
116920122045 .unused,
116921122046 .unused,
116922122047 .unused,
......@@ -116927,14 +122052,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116927122052 .dst_temps = .{ .mem, .unused },
116928122053 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
116929122054 .each = .{ .once = &.{
116930 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
116931 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
116932 .{ .@"0:", ._, .movsx, .tmp2d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
122055 .{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_unaligned_size), ._, ._ },
122056 .{ ._, ._, .lea, .tmp1p, .memad(.dst0, .add_unaligned_size, -16), ._, ._ },
122057 .{ .@"0:", ._, .movsx, .tmp2d, .memi(.src0b, .tmp0), ._, ._ },
116933122058 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
116934122059 .{ ._, ._ps, .mova, .lea(.tmp1x), .tmp4x, ._, ._ },
116935 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 16), ._, ._ },
116936 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
116937 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
122060 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, -16), ._, ._ },
122061 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
122062 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
116938122063 } },
116939122064 }, .{
116940122065 .required_features = .{ .sse, null, null, null },
......@@ -116945,11 +122070,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116945122070 },
116946122071 .call_frame = .{ .alignment = .@"16" },
116947122072 .extra_temps = .{
116948 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
122073 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
116949122074 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
116950 .{ .type = .i32, .kind = .{ .reg = .edi } },
122075 .{ .type = .i32, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
116951122076 .{ .type = .usize, .kind = .{ .extern_func = "__floatsitf" } },
116952 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
122077 .{ .type = .f128, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
116953122078 .unused,
116954122079 .unused,
116955122080 .unused,
......@@ -116960,14 +122085,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116960122085 .dst_temps = .{ .mem, .unused },
116961122086 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
116962122087 .each = .{ .once = &.{
116963 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
116964 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
116965 .{ .@"0:", ._, .movsx, .tmp2d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
122088 .{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_unaligned_size), ._, ._ },
122089 .{ ._, ._, .lea, .tmp1p, .memad(.dst0, .add_unaligned_size, -16), ._, ._ },
122090 .{ .@"0:", ._, .movsx, .tmp2d, .memi(.src0b, .tmp0), ._, ._ },
116966122091 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
116967122092 .{ ._, ._ps, .mova, .lea(.tmp1x), .tmp4x, ._, ._ },
116968 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 16), ._, ._ },
116969 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
116970 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
122093 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, -16), ._, ._ },
122094 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
122095 .{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
116971122096 } },
116972122097 }, .{
116973122098 .required_features = .{ .avx, .slow_incdec, null, null },
......@@ -116978,11 +122103,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116978122103 },
116979122104 .call_frame = .{ .alignment = .@"16" },
116980122105 .extra_temps = .{
116981 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
122106 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
116982122107 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
116983 .{ .type = .u32, .kind = .{ .reg = .edi } },
122108 .{ .type = .u32, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
116984122109 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsitf" } },
116985 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
122110 .{ .type = .f128, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
116986122111 .unused,
116987122112 .unused,
116988122113 .unused,
......@@ -116993,14 +122118,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116993122118 .dst_temps = .{ .mem, .unused },
116994122119 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
116995122120 .each = .{ .once = &.{
116996 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
116997 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
116998 .{ .@"0:", ._, .movzx, .tmp2d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
122121 .{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_unaligned_size), ._, ._ },
122122 .{ ._, ._, .lea, .tmp1p, .memad(.dst0, .add_unaligned_size, -16), ._, ._ },
122123 .{ .@"0:", ._, .movzx, .tmp2d, .memi(.src0b, .tmp0), ._, ._ },
116999122124 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
117000122125 .{ ._, .v_dqa, .mov, .lea(.tmp1x), .tmp4x, ._, ._ },
117001 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 16), ._, ._ },
117002 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
117003 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
122126 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, -16), ._, ._ },
122127 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
122128 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
117004122129 } },
117005122130 }, .{
117006122131 .required_features = .{ .avx, null, null, null },
......@@ -117011,11 +122136,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
117011122136 },
117012122137 .call_frame = .{ .alignment = .@"16" },
117013122138 .extra_temps = .{
117014 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
122139 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
117015122140 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
117016 .{ .type = .u32, .kind = .{ .reg = .edi } },
122141 .{ .type = .u32, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
117017122142 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsitf" } },
117018 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
122143 .{ .type = .f128, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
117019122144 .unused,
117020122145 .unused,
117021122146 .unused,
......@@ -117026,14 +122151,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
117026122151 .dst_temps = .{ .mem, .unused },
117027122152 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
117028122153 .each = .{ .once = &.{
117029 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
117030 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
117031 .{ .@"0:", ._, .movzx, .tmp2d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
122154 .{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_unaligned_size), ._, ._ },
122155 .{ ._, ._, .lea, .tmp1p, .memad(.dst0, .add_unaligned_size, -16), ._, ._ },
122156 .{ .@"0:", ._, .movzx, .tmp2d, .memi(.src0b, .tmp0), ._, ._ },
117032122157 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
117033122158 .{ ._, .v_dqa, .mov, .lea(.tmp1x), .tmp4x, ._, ._ },
117034 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 16), ._, ._ },
117035 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
117036 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
122159 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, -16), ._, ._ },
122160 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
122161 .{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
117037122162 } },
117038122163 }, .{
117039122164 .required_features = .{ .sse2, .slow_incdec, null, null },
......@@ -117044,11 +122169,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
117044122169 },
117045122170 .call_frame = .{ .alignment = .@"16" },
117046122171 .extra_temps = .{
117047 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
122172 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
117048122173 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
117049 .{ .type = .u32, .kind = .{ .reg = .edi } },
122174 .{ .type = .u32, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
117050122175 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsitf" } },
117051 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
122176 .{ .type = .f128, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
117052122177 .unused,
117053122178 .unused,
117054122179 .unused,
......@@ -117059,14 +122184,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
117059122184 .dst_temps = .{ .mem, .unused },
117060122185 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
117061122186 .each = .{ .once = &.{
117062 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
117063 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
117064 .{ .@"0:", ._, .movzx, .tmp2d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
122187 .{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_unaligned_size), ._, ._ },
122188 .{ ._, ._, .lea, .tmp1p, .memad(.dst0, .add_unaligned_size, -16), ._, ._ },
122189 .{ .@"0:", ._, .movzx, .tmp2d, .memi(.src0b, .tmp0), ._, ._ },
117065122190 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
117066122191 .{ ._, ._dqa, .mov, .lea(.tmp1x), .tmp4x, ._, ._ },
117067 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 16), ._, ._ },
117068 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
117069 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
122192 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, -16), ._, ._ },
122193 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
122194 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
117070122195 } },
117071122196 }, .{
117072122197 .required_features = .{ .sse2, null, null, null },
......@@ -117077,11 +122202,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
117077122202 },
117078122203 .call_frame = .{ .alignment = .@"16" },
117079122204 .extra_temps = .{
117080 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
122205 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
117081122206 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
117082 .{ .type = .u32, .kind = .{ .reg = .edi } },
122207 .{ .type = .u32, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
117083122208 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsitf" } },
117084 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
122209 .{ .type = .f128, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
117085122210 .unused,
117086122211 .unused,
117087122212 .unused,
......@@ -117092,14 +122217,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
117092122217 .dst_temps = .{ .mem, .unused },
117093122218 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
117094122219 .each = .{ .once = &.{
117095 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
117096 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
117097 .{ .@"0:", ._, .movzx, .tmp2d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
122220 .{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_unaligned_size), ._, ._ },
122221 .{ ._, ._, .lea, .tmp1p, .memad(.dst0, .add_unaligned_size, -16), ._, ._ },
122222 .{ .@"0:", ._, .movzx, .tmp2d, .memi(.src0b, .tmp0), ._, ._ },
117098122223 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
117099122224 .{ ._, ._dqa, .mov, .lea(.tmp1x), .tmp4x, ._, ._ },
117100 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 16), ._, ._ },
117101 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
117102 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
122225 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, -16), ._, ._ },
122226 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
122227 .{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
117103122228 } },
117104122229 }, .{
117105122230 .required_features = .{ .sse, .slow_incdec, null, null },
......@@ -117110,11 +122235,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
117110122235 },
117111122236 .call_frame = .{ .alignment = .@"16" },
117112122237 .extra_temps = .{
117113 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
122238 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
117114122239 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
117115 .{ .type = .u32, .kind = .{ .reg = .edi } },
122240 .{ .type = .u32, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
117116122241 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsitf" } },
117117 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
122242 .{ .type = .f128, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
117118122243 .unused,
117119122244 .unused,
117120122245 .unused,
......@@ -117125,14 +122250,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
117125122250 .dst_temps = .{ .mem, .unused },
117126122251 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
117127122252 .each = .{ .once = &.{
117128 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
117129 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
117130 .{ .@"0:", ._, .movzx, .tmp2d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
122253 .{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_unaligned_size), ._, ._ },
122254 .{ ._, ._, .lea, .tmp1p, .memad(.dst0, .add_unaligned_size, -16), ._, ._ },
122255 .{ .@"0:", ._, .movzx, .tmp2d, .memi(.src0b, .tmp0), ._, ._ },
117131122256 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
117132122257 .{ ._, ._ps, .mova, .lea(.tmp1x), .tmp4x, ._, ._ },
117133 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 16), ._, ._ },
117134 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
117135 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
122258 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, -16), ._, ._ },
122259 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
122260 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
117136122261 } },
117137122262 }, .{
117138122263 .required_features = .{ .sse, null, null, null },
......@@ -117143,11 +122268,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
117143122268 },
117144122269 .call_frame = .{ .alignment = .@"16" },
117145122270 .extra_temps = .{
117146 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
122271 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
117147122272 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
117148 .{ .type = .u32, .kind = .{ .reg = .edi } },
122273 .{ .type = .u32, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
117149122274 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsitf" } },
117150 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
122275 .{ .type = .f128, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
117151122276 .unused,
117152122277 .unused,
117153122278 .unused,
......@@ -117158,14 +122283,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
117158122283 .dst_temps = .{ .mem, .unused },
117159122284 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
117160122285 .each = .{ .once = &.{
117161 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
117162 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
117163 .{ .@"0:", ._, .movzx, .tmp2d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
122286 .{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_unaligned_size), ._, ._ },
122287 .{ ._, ._, .lea, .tmp1p, .memad(.dst0, .add_unaligned_size, -16), ._, ._ },
122288 .{ .@"0:", ._, .movzx, .tmp2d, .memi(.src0b, .tmp0), ._, ._ },
117164122289 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
117165122290 .{ ._, ._ps, .mova, .lea(.tmp1x), .tmp4x, ._, ._ },
117166 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 16), ._, ._ },
117167 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
117168 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
122291 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, -16), ._, ._ },
122292 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
122293 .{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
117169122294 } },
117170122295 }, .{
117171122296 .required_features = .{ .avx, null, null, null },
......@@ -117176,10 +122301,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
117176122301 },
117177122302 .call_frame = .{ .alignment = .@"16" },
117178122303 .extra_temps = .{
117179 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
117180 .{ .type = .i32, .kind = .{ .reg = .edi } },
122304 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
122305 .{ .type = .i32, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
117181122306 .{ .type = .usize, .kind = .{ .extern_func = "__floatsitf" } },
117182 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
122307 .{ .type = .f128, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
117183122308 .unused,
117184122309 .unused,
117185122310 .unused,
......@@ -117191,12 +122316,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
117191122316 .dst_temps = .{ .mem, .unused },
117192122317 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
117193122318 .each = .{ .once = &.{
117194 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
117195 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
122319 .{ ._, ._, .mov, .tmp0d, .sia(-2, .src0, .add_unaligned_size), ._, ._ },
122320 .{ .@"0:", ._, .movsx, .tmp1d, .memi(.src0w, .tmp0), ._, ._ },
117196122321 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
117197 .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"8", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
117198 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
117199 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
122322 .{ ._, .v_dqa, .mov, .memsi(.dst0x, .@"8", .tmp0), .tmp3x, ._, ._ },
122323 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
122324 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
117200122325 } },
117201122326 }, .{
117202122327 .required_features = .{ .sse2, null, null, null },
......@@ -117207,10 +122332,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
117207122332 },
117208122333 .call_frame = .{ .alignment = .@"16" },
117209122334 .extra_temps = .{
117210 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
117211 .{ .type = .i32, .kind = .{ .reg = .edi } },
122335 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
122336 .{ .type = .i32, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
117212122337 .{ .type = .usize, .kind = .{ .extern_func = "__floatsitf" } },
117213 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
122338 .{ .type = .f128, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
117214122339 .unused,
117215122340 .unused,
117216122341 .unused,
......@@ -117222,12 +122347,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
117222122347 .dst_temps = .{ .mem, .unused },
117223122348 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
117224122349 .each = .{ .once = &.{
117225 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
117226 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
122350 .{ ._, ._, .mov, .tmp0d, .sia(-2, .src0, .add_unaligned_size), ._, ._ },
122351 .{ .@"0:", ._, .movsx, .tmp1d, .memi(.src0w, .tmp0), ._, ._ },
117227122352 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
117228 .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"8", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
117229 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
117230 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
122353 .{ ._, ._dqa, .mov, .memsi(.dst0x, .@"8", .tmp0), .tmp3x, ._, ._ },
122354 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
122355 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
117231122356 } },
117232122357 }, .{
117233122358 .required_features = .{ .sse, null, null, null },
......@@ -117238,10 +122363,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
117238122363 },
117239122364 .call_frame = .{ .alignment = .@"16" },
117240122365 .extra_temps = .{
117241 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
117242 .{ .type = .i32, .kind = .{ .reg = .edi } },
122366 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
122367 .{ .type = .i32, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
117243122368 .{ .type = .usize, .kind = .{ .extern_func = "__floatsitf" } },
117244 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
122369 .{ .type = .f128, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
117245122370 .unused,
117246122371 .unused,
117247122372 .unused,
......@@ -117253,12 +122378,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
117253122378 .dst_temps = .{ .mem, .unused },
117254122379 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
117255122380 .each = .{ .once = &.{
117256 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
117257 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
122381 .{ ._, ._, .mov, .tmp0d, .sia(-2, .src0, .add_unaligned_size), ._, ._ },
122382 .{ .@"0:", ._, .movsx, .tmp1d, .memi(.src0w, .tmp0), ._, ._ },
117258122383 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
117259 .{ ._, ._ps, .mova, .memsia(.dst0x, .@"8", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
117260 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
117261 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
122384 .{ ._, ._ps, .mova, .memsi(.dst0x, .@"8", .tmp0), .tmp3x, ._, ._ },
122385 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
122386 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
117262122387 } },
117263122388 }, .{
117264122389 .required_features = .{ .avx, null, null, null },
......@@ -117269,10 +122394,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
117269122394 },
117270122395 .call_frame = .{ .alignment = .@"16" },
117271122396 .extra_temps = .{
117272 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
117273 .{ .type = .u32, .kind = .{ .reg = .edi } },
122397 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
122398 .{ .type = .u32, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
117274122399 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsitf" } },
117275 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
122400 .{ .type = .f128, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
117276122401 .unused,
117277122402 .unused,
117278122403 .unused,
......@@ -117284,12 +122409,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
117284122409 .dst_temps = .{ .mem, .unused },
117285122410 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
117286122411 .each = .{ .once = &.{
117287 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
117288 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
122412 .{ ._, ._, .mov, .tmp0d, .sia(-2, .src0, .add_unaligned_size), ._, ._ },
122413 .{ .@"0:", ._, .movzx, .tmp1d, .memi(.src0w, .tmp0), ._, ._ },
117289122414 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
117290 .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"8", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
117291 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
117292 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
122415 .{ ._, .v_dqa, .mov, .memsi(.dst0x, .@"8", .tmp0), .tmp3x, ._, ._ },
122416 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
122417 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
117293122418 } },
117294122419 }, .{
117295122420 .required_features = .{ .sse2, null, null, null },
......@@ -117300,10 +122425,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
117300122425 },
117301122426 .call_frame = .{ .alignment = .@"16" },
117302122427 .extra_temps = .{
117303 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
117304 .{ .type = .u32, .kind = .{ .reg = .edi } },
122428 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
122429 .{ .type = .u32, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
117305122430 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsitf" } },
117306 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
122431 .{ .type = .f128, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
117307122432 .unused,
117308122433 .unused,
117309122434 .unused,
......@@ -117315,12 +122440,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
117315122440 .dst_temps = .{ .mem, .unused },
117316122441 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
117317122442 .each = .{ .once = &.{
117318 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
117319 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
122443 .{ ._, ._, .mov, .tmp0d, .sia(-2, .src0, .add_unaligned_size), ._, ._ },
122444 .{ .@"0:", ._, .movzx, .tmp1d, .memi(.src0w, .tmp0), ._, ._ },
117320122445 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
117321 .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"8", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
117322 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
117323 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
122446 .{ ._, ._dqa, .mov, .memsi(.dst0x, .@"8", .tmp0), .tmp3x, ._, ._ },
122447 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
122448 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
117324122449 } },
117325122450 }, .{
117326122451 .required_features = .{ .sse, null, null, null },
......@@ -117331,10 +122456,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
117331122456 },
117332122457 .call_frame = .{ .alignment = .@"16" },
117333122458 .extra_temps = .{
117334 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
117335 .{ .type = .u32, .kind = .{ .reg = .edi } },
122459 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
122460 .{ .type = .u32, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
117336122461 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsitf" } },
117337 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
122462 .{ .type = .f128, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
117338122463 .unused,
117339122464 .unused,
117340122465 .unused,
......@@ -117346,12 +122471,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
117346122471 .dst_temps = .{ .mem, .unused },
117347122472 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
117348122473 .each = .{ .once = &.{
117349 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
117350 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
122474 .{ ._, ._, .mov, .tmp0d, .sia(-2, .src0, .add_unaligned_size), ._, ._ },
122475 .{ .@"0:", ._, .movzx, .tmp1d, .memi(.src0w, .tmp0), ._, ._ },
117351122476 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
117352 .{ ._, ._ps, .mova, .memsia(.dst0x, .@"8", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
117353 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
117354 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
122477 .{ ._, ._ps, .mova, .memsi(.dst0x, .@"8", .tmp0), .tmp3x, ._, ._ },
122478 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
122479 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
117355122480 } },
117356122481 }, .{
117357122482 .required_features = .{ .avx, null, null, null },
......@@ -117362,10 +122487,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
117362122487 },
117363122488 .call_frame = .{ .alignment = .@"16" },
117364122489 .extra_temps = .{
117365 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
117366 .{ .type = .i32, .kind = .{ .reg = .edi } },
122490 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
122491 .{ .type = .i32, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
117367122492 .{ .type = .usize, .kind = .{ .extern_func = "__floatsitf" } },
117368 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
122493 .{ .type = .f128, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
117369122494 .unused,
117370122495 .unused,
117371122496 .unused,
......@@ -117377,12 +122502,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
117377122502 .dst_temps = .{ .mem, .unused },
117378122503 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
117379122504 .each = .{ .once = &.{
117380 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
117381 .{ .@"0:", ._, .mov, .tmp1d, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
122505 .{ ._, ._, .mov, .tmp0d, .sia(-4, .src0, .add_unaligned_size), ._, ._ },
122506 .{ .@"0:", ._, .mov, .tmp1d, .memi(.src0d, .tmp0), ._, ._ },
117382122507 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
117383 .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"4", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
117384 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
117385 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
122508 .{ ._, .v_dqa, .mov, .memsi(.dst0x, .@"4", .tmp0), .tmp3x, ._, ._ },
122509 .{ ._, ._, .sub, .tmp0d, .si(4), ._, ._ },
122510 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
117386122511 } },
117387122512 }, .{
117388122513 .required_features = .{ .sse2, null, null, null },
......@@ -117393,10 +122518,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
117393122518 },
117394122519 .call_frame = .{ .alignment = .@"16" },
117395122520 .extra_temps = .{
117396 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
117397 .{ .type = .i32, .kind = .{ .reg = .edi } },
122521 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
122522 .{ .type = .i32, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
117398122523 .{ .type = .usize, .kind = .{ .extern_func = "__floatsitf" } },
117399 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
122524 .{ .type = .f128, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
117400122525 .unused,
117401122526 .unused,
117402122527 .unused,
......@@ -117408,12 +122533,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
117408122533 .dst_temps = .{ .mem, .unused },
117409122534 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
117410122535 .each = .{ .once = &.{
117411 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
117412 .{ .@"0:", ._, .mov, .tmp1d, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
122536 .{ ._, ._, .mov, .tmp0d, .sia(-4, .src0, .add_unaligned_size), ._, ._ },
122537 .{ .@"0:", ._, .mov, .tmp1d, .memi(.src0d, .tmp0), ._, ._ },
117413122538 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
117414 .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"4", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
117415 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
117416 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
122539 .{ ._, ._dqa, .mov, .memsi(.dst0x, .@"4", .tmp0), .tmp3x, ._, ._ },
122540 .{ ._, ._, .sub, .tmp0d, .si(4), ._, ._ },
122541 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
117417122542 } },
117418122543 }, .{
117419122544 .required_features = .{ .sse, null, null, null },
......@@ -117424,10 +122549,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
117424122549 },
117425122550 .call_frame = .{ .alignment = .@"16" },
117426122551 .extra_temps = .{
117427 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
117428 .{ .type = .i32, .kind = .{ .reg = .edi } },
122552 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
122553 .{ .type = .i32, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
117429122554 .{ .type = .usize, .kind = .{ .extern_func = "__floatsitf" } },
117430 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
122555 .{ .type = .f128, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
117431122556 .unused,
117432122557 .unused,
117433122558 .unused,
......@@ -117439,12 +122564,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
117439122564 .dst_temps = .{ .mem, .unused },
117440122565 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
117441122566 .each = .{ .once = &.{
117442 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
117443 .{ .@"0:", ._, .mov, .tmp1d, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
122567 .{ ._, ._, .mov, .tmp0d, .sia(-4, .src0, .add_unaligned_size), ._, ._ },
122568 .{ .@"0:", ._, .mov, .tmp1d, .memi(.src0d, .tmp0), ._, ._ },
117444122569 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
117445 .{ ._, ._ps, .mova, .memsia(.dst0x, .@"4", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
117446 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
117447 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
122570 .{ ._, ._ps, .mova, .memsi(.dst0x, .@"4", .tmp0), .tmp3x, ._, ._ },
122571 .{ ._, ._, .sub, .tmp0d, .si(4), ._, ._ },
122572 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
117448122573 } },
117449122574 }, .{
117450122575 .required_features = .{ .avx, null, null, null },
......@@ -117455,10 +122580,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
117455122580 },
117456122581 .call_frame = .{ .alignment = .@"16" },
117457122582 .extra_temps = .{
117458 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
117459 .{ .type = .u32, .kind = .{ .reg = .edi } },
122583 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
122584 .{ .type = .u32, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
117460122585 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsitf" } },
117461 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
122586 .{ .type = .f128, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
117462122587 .unused,
117463122588 .unused,
117464122589 .unused,
......@@ -117470,12 +122595,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
117470122595 .dst_temps = .{ .mem, .unused },
117471122596 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
117472122597 .each = .{ .once = &.{
117473 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
117474 .{ .@"0:", ._, .mov, .tmp1d, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
122598 .{ ._, ._, .mov, .tmp0d, .sia(-4, .src0, .add_unaligned_size), ._, ._ },
122599 .{ .@"0:", ._, .mov, .tmp1d, .memi(.src0d, .tmp0), ._, ._ },
117475122600 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
117476 .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"4", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
117477 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
117478 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
122601 .{ ._, .v_dqa, .mov, .memsi(.dst0x, .@"4", .tmp0), .tmp3x, ._, ._ },
122602 .{ ._, ._, .sub, .tmp0d, .si(4), ._, ._ },
122603 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
117479122604 } },
117480122605 }, .{
117481122606 .required_features = .{ .sse2, null, null, null },
......@@ -117486,10 +122611,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
117486122611 },
117487122612 .call_frame = .{ .alignment = .@"16" },
117488122613 .extra_temps = .{
117489 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
117490 .{ .type = .u32, .kind = .{ .reg = .edi } },
122614 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
122615 .{ .type = .u32, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
117491122616 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsitf" } },
117492 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
122617 .{ .type = .f128, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
117493122618 .unused,
117494122619 .unused,
117495122620 .unused,
......@@ -117501,12 +122626,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
117501122626 .dst_temps = .{ .mem, .unused },
117502122627 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
117503122628 .each = .{ .once = &.{
117504 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
117505 .{ .@"0:", ._, .mov, .tmp1d, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
122629 .{ ._, ._, .mov, .tmp0d, .sia(-4, .src0, .add_unaligned_size), ._, ._ },
122630 .{ .@"0:", ._, .mov, .tmp1d, .memi(.src0d, .tmp0), ._, ._ },
117506122631 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
117507 .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"4", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
117508 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
117509 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
122632 .{ ._, ._dqa, .mov, .memsi(.dst0x, .@"4", .tmp0), .tmp3x, ._, ._ },
122633 .{ ._, ._, .sub, .tmp0d, .si(4), ._, ._ },
122634 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
117510122635 } },
117511122636 }, .{
117512122637 .required_features = .{ .sse, null, null, null },
......@@ -117517,10 +122642,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
117517122642 },
117518122643 .call_frame = .{ .alignment = .@"16" },
117519122644 .extra_temps = .{
117520 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
117521 .{ .type = .u32, .kind = .{ .reg = .edi } },
122645 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
122646 .{ .type = .u32, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
117522122647 .{ .type = .usize, .kind = .{ .extern_func = "__floatunsitf" } },
117523 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
122648 .{ .type = .f128, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
117524122649 .unused,
117525122650 .unused,
117526122651 .unused,
......@@ -117532,12 +122657,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
117532122657 .dst_temps = .{ .mem, .unused },
117533122658 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
117534122659 .each = .{ .once = &.{
117535 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
117536 .{ .@"0:", ._, .mov, .tmp1d, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
122660 .{ ._, ._, .mov, .tmp0d, .sia(-4, .src0, .add_unaligned_size), ._, ._ },
122661 .{ .@"0:", ._, .mov, .tmp1d, .memi(.src0d, .tmp0), ._, ._ },
117537122662 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
117538 .{ ._, ._ps, .mova, .memsia(.dst0x, .@"4", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
117539 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
117540 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
122663 .{ ._, ._ps, .mova, .memsi(.dst0x, .@"4", .tmp0), .tmp3x, ._, ._ },
122664 .{ ._, ._, .sub, .tmp0d, .si(4), ._, ._ },
122665 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
117541122666 } },
117542122667 }, .{
117543122668 .required_features = .{ .@"64bit", .avx, null, null },
......@@ -117548,10 +122673,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
117548122673 },
117549122674 .call_frame = .{ .alignment = .@"16" },
117550122675 .extra_temps = .{
117551 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
117552 .{ .type = .i64, .kind = .{ .reg = .rdi } },
122676 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
122677 .{ .type = .i64, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
117553122678 .{ .type = .usize, .kind = .{ .extern_func = "__floatditf" } },
117554 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
122679 .{ .type = .f128, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
117555122680 .unused,
117556122681 .unused,
117557122682 .unused,
......@@ -117563,12 +122688,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
117563122688 .dst_temps = .{ .mem, .unused },
117564122689 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
117565122690 .each = .{ .once = &.{
117566 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
117567 .{ .@"0:", ._, .mov, .tmp1q, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
122691 .{ ._, ._, .mov, .tmp0d, .sia(-8, .src0, .add_unaligned_size), ._, ._ },
122692 .{ .@"0:", ._, .mov, .tmp1q, .memi(.src0q, .tmp0), ._, ._ },
117568122693 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
117569 .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
117570 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
117571 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
122694 .{ ._, .v_dqa, .mov, .memsi(.dst0x, .@"2", .tmp0), .tmp3x, ._, ._ },
122695 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
122696 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
117572122697 } },
117573122698 }, .{
117574122699 .required_features = .{ .@"64bit", .sse2, null, null },
......@@ -117579,10 +122704,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
117579122704 },
117580122705 .call_frame = .{ .alignment = .@"16" },
117581122706 .extra_temps = .{
117582 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
117583 .{ .type = .i64, .kind = .{ .reg = .rdi } },
122707 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
122708 .{ .type = .i64, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
117584122709 .{ .type = .usize, .kind = .{ .extern_func = "__floatditf" } },
117585 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
122710 .{ .type = .f128, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
117586122711 .unused,
117587122712 .unused,
117588122713 .unused,
......@@ -117594,12 +122719,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
117594122719 .dst_temps = .{ .mem, .unused },
117595122720 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
117596122721 .each = .{ .once = &.{
117597 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
117598 .{ .@"0:", ._, .mov, .tmp1q, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
122722 .{ ._, ._, .mov, .tmp0d, .sia(-8, .src0, .add_unaligned_size), ._, ._ },
122723 .{ .@"0:", ._, .mov, .tmp1q, .memi(.src0q, .tmp0), ._, ._ },
117599122724 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
117600 .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
117601 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
117602 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
122725 .{ ._, ._dqa, .mov, .memsi(.dst0x, .@"2", .tmp0), .tmp3x, ._, ._ },
122726 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
122727 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
117603122728 } },
117604122729 }, .{
117605122730 .required_features = .{ .@"64bit", .sse, null, null },
......@@ -117610,10 +122735,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
117610122735 },
117611122736 .call_frame = .{ .alignment = .@"16" },
117612122737 .extra_temps = .{
117613 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
117614 .{ .type = .i64, .kind = .{ .reg = .rdi } },
122738 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
122739 .{ .type = .i64, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
117615122740 .{ .type = .usize, .kind = .{ .extern_func = "__floatditf" } },
117616 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
122741 .{ .type = .f128, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
117617122742 .unused,
117618122743 .unused,
117619122744 .unused,
......@@ -117625,12 +122750,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
117625122750 .dst_temps = .{ .mem, .unused },
117626122751 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
117627122752 .each = .{ .once = &.{
117628 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
117629 .{ .@"0:", ._, .mov, .tmp1q, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
122753 .{ ._, ._, .mov, .tmp0d, .sia(-8, .src0, .add_unaligned_size), ._, ._ },
122754 .{ .@"0:", ._, .mov, .tmp1q, .memi(.src0q, .tmp0), ._, ._ },
117630122755 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
117631 .{ ._, ._ps, .mova, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
117632 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
117633 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
122756 .{ ._, ._ps, .mova, .memsi(.dst0x, .@"2", .tmp0), .tmp3x, ._, ._ },
122757 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
122758 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
117634122759 } },
117635122760 }, .{
117636122761 .required_features = .{ .@"64bit", .avx, null, null },
......@@ -117641,10 +122766,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
117641122766 },
117642122767 .call_frame = .{ .alignment = .@"16" },
117643122768 .extra_temps = .{
117644 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
117645 .{ .type = .u64, .kind = .{ .reg = .rdi } },
122769 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
122770 .{ .type = .u64, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
117646122771 .{ .type = .usize, .kind = .{ .extern_func = "__floatunditf" } },
117647 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
122772 .{ .type = .f128, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
117648122773 .unused,
117649122774 .unused,
117650122775 .unused,
......@@ -117656,12 +122781,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
117656122781 .dst_temps = .{ .mem, .unused },
117657122782 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
117658122783 .each = .{ .once = &.{
117659 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
117660 .{ .@"0:", ._, .mov, .tmp1q, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
122784 .{ ._, ._, .mov, .tmp0d, .sia(-8, .src0, .add_unaligned_size), ._, ._ },
122785 .{ .@"0:", ._, .mov, .tmp1q, .memi(.src0q, .tmp0), ._, ._ },
117661122786 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
117662 .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
117663 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
117664 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
122787 .{ ._, .v_dqa, .mov, .memsi(.dst0x, .@"2", .tmp0), .tmp3x, ._, ._ },
122788 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
122789 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
117665122790 } },
117666122791 }, .{
117667122792 .required_features = .{ .@"64bit", .sse2, null, null },
......@@ -117672,10 +122797,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
117672122797 },
117673122798 .call_frame = .{ .alignment = .@"16" },
117674122799 .extra_temps = .{
117675 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
117676 .{ .type = .u64, .kind = .{ .reg = .rdi } },
122800 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
122801 .{ .type = .u64, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
117677122802 .{ .type = .usize, .kind = .{ .extern_func = "__floatunditf" } },
117678 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
122803 .{ .type = .f128, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
117679122804 .unused,
117680122805 .unused,
117681122806 .unused,
......@@ -117687,12 +122812,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
117687122812 .dst_temps = .{ .mem, .unused },
117688122813 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
117689122814 .each = .{ .once = &.{
117690 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
117691 .{ .@"0:", ._, .mov, .tmp1q, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
122815 .{ ._, ._, .mov, .tmp0d, .sia(-8, .src0, .add_unaligned_size), ._, ._ },
122816 .{ .@"0:", ._, .mov, .tmp1q, .memi(.src0q, .tmp0), ._, ._ },
117692122817 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
117693 .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
117694 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
117695 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
122818 .{ ._, ._dqa, .mov, .memsi(.dst0x, .@"2", .tmp0), .tmp3x, ._, ._ },
122819 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
122820 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
117696122821 } },
117697122822 }, .{
117698122823 .required_features = .{ .@"64bit", .sse, null, null },
......@@ -117703,10 +122828,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
117703122828 },
117704122829 .call_frame = .{ .alignment = .@"16" },
117705122830 .extra_temps = .{
117706 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
117707 .{ .type = .u64, .kind = .{ .reg = .rdi } },
122831 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
122832 .{ .type = .u64, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
117708122833 .{ .type = .usize, .kind = .{ .extern_func = "__floatunditf" } },
117709 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
122834 .{ .type = .f128, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
117710122835 .unused,
117711122836 .unused,
117712122837 .unused,
......@@ -117718,15 +122843,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
117718122843 .dst_temps = .{ .mem, .unused },
117719122844 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
117720122845 .each = .{ .once = &.{
117721 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
117722 .{ .@"0:", ._, .mov, .tmp1q, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
122846 .{ ._, ._, .mov, .tmp0d, .sia(-8, .src0, .add_unaligned_size), ._, ._ },
122847 .{ .@"0:", ._, .mov, .tmp1q, .memi(.src0q, .tmp0), ._, ._ },
117723122848 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
117724 .{ ._, ._ps, .mova, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
117725 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
117726 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
122849 .{ ._, ._ps, .mova, .memsi(.dst0x, .@"2", .tmp0), .tmp3x, ._, ._ },
122850 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
122851 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
117727122852 } },
117728122853 }, .{
117729 .required_features = .{ .@"64bit", .avx, null, null },
122854 .required_cc_abi = .sysv64,
122855 .required_features = .{ .avx, null, null, null },
117730122856 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any, .any },
117731122857 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },
117732122858 .patterns = &.{
......@@ -117734,11 +122860,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
117734122860 },
117735122861 .call_frame = .{ .alignment = .@"16" },
117736122862 .extra_temps = .{
117737 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
117738 .{ .type = .u64, .kind = .{ .reg = .rdi } },
117739 .{ .type = .i64, .kind = .{ .reg = .rsi } },
122863 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
122864 .{ .type = .i128, .kind = .{ .param_gpr_pair = .{ .cc = .ccc, .after = 0, .at = 0 } } },
117740122865 .{ .type = .usize, .kind = .{ .extern_func = "__floattitf" } },
117741 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
122866 .{ .type = .f128, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
122867 .unused,
117742122868 .unused,
117743122869 .unused,
117744122870 .unused,
......@@ -117749,16 +122875,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
117749122875 .dst_temps = .{ .mem, .unused },
117750122876 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
117751122877 .each = .{ .once = &.{
117752 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
117753 .{ .@"0:", ._, .mov, .tmp1q, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
117754 .{ ._, ._, .mov, .tmp2q, .memiad(.src0q, .tmp0, .add_unaligned_size, 8), ._, ._ },
117755 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
117756 .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp4x, ._, ._ },
117757 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
117758 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
122878 .{ ._, ._, .mov, .tmp0d, .sia(-16, .src0, .add_unaligned_size), ._, ._ },
122879 .{ .@"0:", ._, .mov, .tmp1q0, .memi(.src0q, .tmp0), ._, ._ },
122880 .{ ._, ._, .mov, .tmp1q1, .memid(.src0q, .tmp0, 8), ._, ._ },
122881 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
122882 .{ ._, .v_dqa, .mov, .memi(.dst0x, .tmp0), .tmp3x, ._, ._ },
122883 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
122884 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
117759122885 } },
117760122886 }, .{
117761 .required_features = .{ .@"64bit", .sse2, null, null },
122887 .required_cc_abi = .win64,
122888 .required_features = .{ .avx, null, null, null },
117762122889 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any, .any },
117763122890 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },
117764122891 .patterns = &.{
......@@ -117766,11 +122893,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
117766122893 },
117767122894 .call_frame = .{ .alignment = .@"16" },
117768122895 .extra_temps = .{
117769 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
117770 .{ .type = .u64, .kind = .{ .reg = .rdi } },
117771 .{ .type = .i64, .kind = .{ .reg = .rsi } },
122896 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
122897 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
117772122898 .{ .type = .usize, .kind = .{ .extern_func = "__floattitf" } },
117773 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
122899 .{ .type = .f128, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
122900 .unused,
117774122901 .unused,
117775122902 .unused,
117776122903 .unused,
......@@ -117781,16 +122908,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
117781122908 .dst_temps = .{ .mem, .unused },
117782122909 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
117783122910 .each = .{ .once = &.{
117784 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
117785 .{ .@"0:", ._, .mov, .tmp1q, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
117786 .{ ._, ._, .mov, .tmp2q, .memiad(.src0q, .tmp0, .add_unaligned_size, 8), ._, ._ },
117787 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
117788 .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp4x, ._, ._ },
117789 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
117790 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
122911 .{ ._, ._, .mov, .tmp0d, .sia(-16, .src0, .add_unaligned_size), ._, ._ },
122912 .{ .@"0:", ._, .lea, .tmp1p, .memi(.src0, .tmp0), ._, ._ },
122913 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
122914 .{ ._, .v_dqa, .mov, .memi(.dst0x, .tmp0), .tmp3x, ._, ._ },
122915 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
122916 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
117791122917 } },
117792122918 }, .{
117793 .required_features = .{ .@"64bit", .sse, null, null },
122919 .required_cc_abi = .sysv64,
122920 .required_features = .{ .sse2, null, null, null },
117794122921 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any, .any },
117795122922 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },
117796122923 .patterns = &.{
......@@ -117798,11 +122925,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
117798122925 },
117799122926 .call_frame = .{ .alignment = .@"16" },
117800122927 .extra_temps = .{
117801 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
117802 .{ .type = .u64, .kind = .{ .reg = .rdi } },
117803 .{ .type = .i64, .kind = .{ .reg = .rsi } },
122928 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
122929 .{ .type = .i128, .kind = .{ .param_gpr_pair = .{ .cc = .ccc, .after = 0, .at = 0 } } },
117804122930 .{ .type = .usize, .kind = .{ .extern_func = "__floattitf" } },
117805 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
122931 .{ .type = .f128, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
122932 .unused,
117806122933 .unused,
117807122934 .unused,
117808122935 .unused,
......@@ -117813,16 +122940,114 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
117813122940 .dst_temps = .{ .mem, .unused },
117814122941 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
117815122942 .each = .{ .once = &.{
117816 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
117817 .{ .@"0:", ._, .mov, .tmp1q, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
117818 .{ ._, ._, .mov, .tmp2q, .memiad(.src0q, .tmp0, .add_unaligned_size, 8), ._, ._ },
117819 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
117820 .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp4x, ._, ._ },
117821 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
117822 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
122943 .{ ._, ._, .mov, .tmp0d, .sia(-16, .src0, .add_unaligned_size), ._, ._ },
122944 .{ .@"0:", ._, .mov, .tmp1q0, .memi(.src0q, .tmp0), ._, ._ },
122945 .{ ._, ._, .mov, .tmp1q1, .memid(.src0q, .tmp0, 8), ._, ._ },
122946 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
122947 .{ ._, ._dqa, .mov, .memi(.dst0x, .tmp0), .tmp3x, ._, ._ },
122948 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
122949 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
117823122950 } },
117824122951 }, .{
117825 .required_features = .{ .@"64bit", .avx, null, null },
122952 .required_cc_abi = .win64,
122953 .required_features = .{ .sse2, null, null, null },
122954 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any, .any },
122955 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },
122956 .patterns = &.{
122957 .{ .src = .{ .to_mem, .none, .none } },
122958 },
122959 .call_frame = .{ .alignment = .@"16" },
122960 .extra_temps = .{
122961 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
122962 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
122963 .{ .type = .usize, .kind = .{ .extern_func = "__floattitf" } },
122964 .{ .type = .f128, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
122965 .unused,
122966 .unused,
122967 .unused,
122968 .unused,
122969 .unused,
122970 .unused,
122971 .unused,
122972 },
122973 .dst_temps = .{ .mem, .unused },
122974 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
122975 .each = .{ .once = &.{
122976 .{ ._, ._, .mov, .tmp0d, .sia(-16, .src0, .add_unaligned_size), ._, ._ },
122977 .{ .@"0:", ._, .lea, .tmp1p, .memi(.src0, .tmp0), ._, ._ },
122978 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
122979 .{ ._, ._dqa, .mov, .memi(.dst0x, .tmp0), .tmp3x, ._, ._ },
122980 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
122981 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
122982 } },
122983 }, .{
122984 .required_cc_abi = .sysv64,
122985 .required_features = .{ .sse, null, null, null },
122986 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any, .any },
122987 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },
122988 .patterns = &.{
122989 .{ .src = .{ .to_mem, .none, .none } },
122990 },
122991 .call_frame = .{ .alignment = .@"16" },
122992 .extra_temps = .{
122993 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
122994 .{ .type = .u128, .kind = .{ .param_gpr_pair = .{ .cc = .ccc, .after = 0, .at = 0 } } },
122995 .{ .type = .usize, .kind = .{ .extern_func = "__floattitf" } },
122996 .{ .type = .f128, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
122997 .unused,
122998 .unused,
122999 .unused,
123000 .unused,
123001 .unused,
123002 .unused,
123003 .unused,
123004 },
123005 .dst_temps = .{ .mem, .unused },
123006 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
123007 .each = .{ .once = &.{
123008 .{ ._, ._, .mov, .tmp0d, .sia(-16, .src0, .add_unaligned_size), ._, ._ },
123009 .{ .@"0:", ._, .mov, .tmp1q0, .memi(.src0q, .tmp0), ._, ._ },
123010 .{ ._, ._, .mov, .tmp1q1, .memid(.src0q, .tmp0, 8), ._, ._ },
123011 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
123012 .{ ._, ._ps, .mova, .memi(.dst0x, .tmp0), .tmp3x, ._, ._ },
123013 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
123014 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
123015 } },
123016 }, .{
123017 .required_cc_abi = .win64,
123018 .required_features = .{ .sse, null, null, null },
123019 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any, .any },
123020 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },
123021 .patterns = &.{
123022 .{ .src = .{ .to_mem, .none, .none } },
123023 },
123024 .call_frame = .{ .alignment = .@"16" },
123025 .extra_temps = .{
123026 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
123027 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
123028 .{ .type = .usize, .kind = .{ .extern_func = "__floattitf" } },
123029 .{ .type = .f128, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
123030 .unused,
123031 .unused,
123032 .unused,
123033 .unused,
123034 .unused,
123035 .unused,
123036 .unused,
123037 },
123038 .dst_temps = .{ .mem, .unused },
123039 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
123040 .each = .{ .once = &.{
123041 .{ ._, ._, .mov, .tmp0d, .sia(-16, .src0, .add_unaligned_size), ._, ._ },
123042 .{ .@"0:", ._, .lea, .tmp1p, .memi(.src0, .tmp0), ._, ._ },
123043 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
123044 .{ ._, ._ps, .mova, .memi(.dst0x, .tmp0), .tmp3x, ._, ._ },
123045 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
123046 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
123047 } },
123048 }, .{
123049 .required_cc_abi = .sysv64,
123050 .required_features = .{ .avx, null, null, null },
117826123051 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any, .any },
117827123052 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },
117828123053 .patterns = &.{
......@@ -117830,11 +123055,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
117830123055 },
117831123056 .call_frame = .{ .alignment = .@"16" },
117832123057 .extra_temps = .{
117833 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
117834 .{ .type = .u64, .kind = .{ .reg = .rdi } },
117835 .{ .type = .u64, .kind = .{ .reg = .rsi } },
123058 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
123059 .{ .type = .u128, .kind = .{ .param_gpr_pair = .{ .cc = .ccc, .after = 0, .at = 0 } } },
117836123060 .{ .type = .usize, .kind = .{ .extern_func = "__floatuntitf" } },
117837 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
123061 .{ .type = .f128, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
123062 .unused,
117838123063 .unused,
117839123064 .unused,
117840123065 .unused,
......@@ -117845,16 +123070,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
117845123070 .dst_temps = .{ .mem, .unused },
117846123071 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
117847123072 .each = .{ .once = &.{
117848 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
117849 .{ .@"0:", ._, .mov, .tmp1q, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
117850 .{ ._, ._, .mov, .tmp2q, .memiad(.src0q, .tmp0, .add_unaligned_size, 8), ._, ._ },
117851 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
117852 .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp4x, ._, ._ },
117853 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
117854 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
123073 .{ ._, ._, .mov, .tmp0d, .sia(-16, .src0, .add_unaligned_size), ._, ._ },
123074 .{ .@"0:", ._, .mov, .tmp1q0, .memi(.src0q, .tmp0), ._, ._ },
123075 .{ ._, ._, .mov, .tmp1q1, .memid(.src0q, .tmp0, 8), ._, ._ },
123076 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
123077 .{ ._, .v_dqa, .mov, .memi(.dst0x, .tmp0), .tmp3x, ._, ._ },
123078 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
123079 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
117855123080 } },
117856123081 }, .{
117857 .required_features = .{ .@"64bit", .sse2, null, null },
123082 .required_cc_abi = .win64,
123083 .required_features = .{ .avx, null, null, null },
117858123084 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any, .any },
117859123085 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },
117860123086 .patterns = &.{
......@@ -117862,11 +123088,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
117862123088 },
117863123089 .call_frame = .{ .alignment = .@"16" },
117864123090 .extra_temps = .{
117865 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
117866 .{ .type = .u64, .kind = .{ .reg = .rdi } },
117867 .{ .type = .u64, .kind = .{ .reg = .rsi } },
123091 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
123092 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
117868123093 .{ .type = .usize, .kind = .{ .extern_func = "__floatuntitf" } },
117869 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
123094 .{ .type = .f128, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
123095 .unused,
117870123096 .unused,
117871123097 .unused,
117872123098 .unused,
......@@ -117877,16 +123103,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
117877123103 .dst_temps = .{ .mem, .unused },
117878123104 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
117879123105 .each = .{ .once = &.{
117880 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
117881 .{ .@"0:", ._, .mov, .tmp1q, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
117882 .{ ._, ._, .mov, .tmp2q, .memiad(.src0q, .tmp0, .add_unaligned_size, 8), ._, ._ },
117883 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
117884 .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp4x, ._, ._ },
117885 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
117886 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
123106 .{ ._, ._, .mov, .tmp0d, .sia(-16, .src0, .add_unaligned_size), ._, ._ },
123107 .{ .@"0:", ._, .lea, .tmp1p, .memi(.src0, .tmp0), ._, ._ },
123108 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
123109 .{ ._, .v_dqa, .mov, .memi(.dst0x, .tmp0), .tmp3x, ._, ._ },
123110 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
123111 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
117887123112 } },
117888123113 }, .{
117889 .required_features = .{ .@"64bit", .sse, null, null },
123114 .required_cc_abi = .sysv64,
123115 .required_features = .{ .sse2, null, null, null },
117890123116 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any, .any },
117891123117 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },
117892123118 .patterns = &.{
......@@ -117894,11 +123120,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
117894123120 },
117895123121 .call_frame = .{ .alignment = .@"16" },
117896123122 .extra_temps = .{
117897 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
117898 .{ .type = .u64, .kind = .{ .reg = .rdi } },
117899 .{ .type = .u64, .kind = .{ .reg = .rsi } },
123123 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
123124 .{ .type = .u128, .kind = .{ .param_gpr_pair = .{ .cc = .ccc, .after = 0, .at = 0 } } },
117900123125 .{ .type = .usize, .kind = .{ .extern_func = "__floatuntitf" } },
117901 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
123126 .{ .type = .f128, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
123127 .unused,
117902123128 .unused,
117903123129 .unused,
117904123130 .unused,
......@@ -117909,13 +123135,110 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
117909123135 .dst_temps = .{ .mem, .unused },
117910123136 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
117911123137 .each = .{ .once = &.{
117912 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
117913 .{ .@"0:", ._, .mov, .tmp1q, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
117914 .{ ._, ._, .mov, .tmp2q, .memiad(.src0q, .tmp0, .add_unaligned_size, 8), ._, ._ },
117915 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
117916 .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp4x, ._, ._ },
117917 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
117918 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
123138 .{ ._, ._, .mov, .tmp0d, .sia(-16, .src0, .add_unaligned_size), ._, ._ },
123139 .{ .@"0:", ._, .mov, .tmp1q0, .memi(.src0q, .tmp0), ._, ._ },
123140 .{ ._, ._, .mov, .tmp1q1, .memid(.src0q, .tmp0, 8), ._, ._ },
123141 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
123142 .{ ._, ._dqa, .mov, .memi(.dst0x, .tmp0), .tmp3x, ._, ._ },
123143 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
123144 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
123145 } },
123146 }, .{
123147 .required_cc_abi = .win64,
123148 .required_features = .{ .sse2, null, null, null },
123149 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any, .any },
123150 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },
123151 .patterns = &.{
123152 .{ .src = .{ .to_mem, .none, .none } },
123153 },
123154 .call_frame = .{ .alignment = .@"16" },
123155 .extra_temps = .{
123156 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
123157 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
123158 .{ .type = .usize, .kind = .{ .extern_func = "__floatuntitf" } },
123159 .{ .type = .f128, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
123160 .unused,
123161 .unused,
123162 .unused,
123163 .unused,
123164 .unused,
123165 .unused,
123166 .unused,
123167 },
123168 .dst_temps = .{ .mem, .unused },
123169 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
123170 .each = .{ .once = &.{
123171 .{ ._, ._, .mov, .tmp0d, .sia(-16, .src0, .add_unaligned_size), ._, ._ },
123172 .{ .@"0:", ._, .lea, .tmp1p, .memi(.src0, .tmp0), ._, ._ },
123173 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
123174 .{ ._, ._dqa, .mov, .memi(.dst0x, .tmp0), .tmp3x, ._, ._ },
123175 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
123176 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
123177 } },
123178 }, .{
123179 .required_cc_abi = .sysv64,
123180 .required_features = .{ .sse, null, null, null },
123181 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any, .any },
123182 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },
123183 .patterns = &.{
123184 .{ .src = .{ .to_mem, .none, .none } },
123185 },
123186 .call_frame = .{ .alignment = .@"16" },
123187 .extra_temps = .{
123188 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
123189 .{ .type = .u128, .kind = .{ .param_gpr_pair = .{ .cc = .ccc, .after = 0, .at = 0 } } },
123190 .{ .type = .usize, .kind = .{ .extern_func = "__floatuntitf" } },
123191 .{ .type = .f128, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
123192 .unused,
123193 .unused,
123194 .unused,
123195 .unused,
123196 .unused,
123197 .unused,
123198 .unused,
123199 },
123200 .dst_temps = .{ .mem, .unused },
123201 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
123202 .each = .{ .once = &.{
123203 .{ ._, ._, .mov, .tmp0d, .sia(-16, .src0, .add_unaligned_size), ._, ._ },
123204 .{ .@"0:", ._, .mov, .tmp1q0, .memi(.src0q, .tmp0), ._, ._ },
123205 .{ ._, ._, .mov, .tmp1q1, .memid(.src0q, .tmp0, 8), ._, ._ },
123206 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
123207 .{ ._, ._ps, .mova, .memi(.dst0x, .tmp0), .tmp3x, ._, ._ },
123208 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
123209 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
123210 } },
123211 }, .{
123212 .required_cc_abi = .win64,
123213 .required_features = .{ .sse, null, null, null },
123214 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any, .any },
123215 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },
123216 .patterns = &.{
123217 .{ .src = .{ .to_mem, .none, .none } },
123218 },
123219 .call_frame = .{ .alignment = .@"16" },
123220 .extra_temps = .{
123221 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
123222 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
123223 .{ .type = .usize, .kind = .{ .extern_func = "__floatuntitf" } },
123224 .{ .type = .f128, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
123225 .unused,
123226 .unused,
123227 .unused,
123228 .unused,
123229 .unused,
123230 .unused,
123231 .unused,
123232 },
123233 .dst_temps = .{ .mem, .unused },
123234 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
123235 .each = .{ .once = &.{
123236 .{ ._, ._, .mov, .tmp0d, .sia(-16, .src0, .add_unaligned_size), ._, ._ },
123237 .{ .@"0:", ._, .lea, .tmp1p, .memi(.src0, .tmp0), ._, ._ },
123238 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
123239 .{ ._, ._ps, .mova, .memi(.dst0x, .tmp0), .tmp3x, ._, ._ },
123240 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
123241 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
117919123242 } },
117920123243 }, .{
117921123244 .required_features = .{ .@"64bit", .avx, null, null },
......@@ -117927,11 +123250,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
117927123250 .call_frame = .{ .alignment = .@"16" },
117928123251 .extra_temps = .{
117929123252 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
117930 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
117931 .{ .type = .usize, .kind = .{ .reg = .rdi } },
117932 .{ .type = .usize, .kind = .{ .reg = .rsi } },
123253 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
123254 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
123255 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
117933123256 .{ .type = .usize, .kind = .{ .extern_func = "__floateitf" } },
117934 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
123257 .{ .type = .f128, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
117935123258 .unused,
117936123259 .unused,
117937123260 .unused,
......@@ -117941,15 +123264,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
117941123264 .dst_temps = .{ .mem, .unused },
117942123265 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
117943123266 .each = .{ .once = &.{
117944 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
117945 .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
123267 .{ ._, ._, .lea, .tmp0p, .mema(.src0, .add_unaligned_size_sub_elem_size), ._, ._ },
123268 .{ ._, ._, .mov, .tmp1d, .sia(-16, .dst0, .add_unaligned_size), ._, ._ },
117946123269 .{ .@"0:", ._, .mov, .tmp2p, .tmp0p, ._, ._ },
117947123270 .{ ._, ._, .mov, .tmp3d, .sa(.src0, .add_bit_size), ._, ._ },
117948123271 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
117949 .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp1, .add_unaligned_size), .tmp5x, ._, ._ },
117950 .{ ._, ._, .lea, .tmp0p, .leaa(.tmp0, .add_src0_elem_size), ._, ._ },
117951 .{ ._, ._, .add, .tmp1p, .si(16), ._, ._ },
117952 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
123272 .{ ._, .v_dqa, .mov, .memi(.dst0x, .tmp1), .tmp5x, ._, ._ },
123273 .{ ._, ._, .lea, .tmp0p, .leaa(.tmp0, .sub_src0_elem_size), ._, ._ },
123274 .{ ._, ._, .sub, .tmp1d, .si(16), ._, ._ },
123275 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
117953123276 } },
117954123277 }, .{
117955123278 .required_features = .{ .@"64bit", .sse2, null, null },
......@@ -117961,11 +123284,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
117961123284 .call_frame = .{ .alignment = .@"16" },
117962123285 .extra_temps = .{
117963123286 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
117964 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
117965 .{ .type = .usize, .kind = .{ .reg = .rdi } },
117966 .{ .type = .usize, .kind = .{ .reg = .rsi } },
123287 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
123288 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
123289 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
117967123290 .{ .type = .usize, .kind = .{ .extern_func = "__floateitf" } },
117968 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
123291 .{ .type = .f128, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
117969123292 .unused,
117970123293 .unused,
117971123294 .unused,
......@@ -117975,15 +123298,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
117975123298 .dst_temps = .{ .mem, .unused },
117976123299 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
117977123300 .each = .{ .once = &.{
117978 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
117979 .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
123301 .{ ._, ._, .lea, .tmp0p, .mema(.src0, .add_unaligned_size_sub_elem_size), ._, ._ },
123302 .{ ._, ._, .mov, .tmp1d, .sia(-16, .dst0, .add_unaligned_size), ._, ._ },
117980123303 .{ .@"0:", ._, .mov, .tmp2p, .tmp0p, ._, ._ },
117981123304 .{ ._, ._, .mov, .tmp3d, .sa(.src0, .add_bit_size), ._, ._ },
117982123305 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
117983 .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp1, .add_unaligned_size), .tmp5x, ._, ._ },
117984 .{ ._, ._, .lea, .tmp0p, .leaa(.tmp0, .add_src0_elem_size), ._, ._ },
117985 .{ ._, ._, .add, .tmp1p, .si(16), ._, ._ },
117986 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
123306 .{ ._, ._dqa, .mov, .memi(.dst0x, .tmp1), .tmp5x, ._, ._ },
123307 .{ ._, ._, .lea, .tmp0p, .leaa(.tmp0, .sub_src0_elem_size), ._, ._ },
123308 .{ ._, ._, .sub, .tmp1d, .si(16), ._, ._ },
123309 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
117987123310 } },
117988123311 }, .{
117989123312 .required_features = .{ .@"64bit", .sse, null, null },
......@@ -117995,11 +123318,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
117995123318 .call_frame = .{ .alignment = .@"16" },
117996123319 .extra_temps = .{
117997123320 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
117998 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
117999 .{ .type = .usize, .kind = .{ .reg = .rdi } },
118000 .{ .type = .usize, .kind = .{ .reg = .rsi } },
123321 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
123322 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
123323 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
118001123324 .{ .type = .usize, .kind = .{ .extern_func = "__floateitf" } },
118002 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
123325 .{ .type = .f128, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
118003123326 .unused,
118004123327 .unused,
118005123328 .unused,
......@@ -118009,15 +123332,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
118009123332 .dst_temps = .{ .mem, .unused },
118010123333 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
118011123334 .each = .{ .once = &.{
118012 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
118013 .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
123335 .{ ._, ._, .lea, .tmp0p, .mema(.src0, .add_unaligned_size_sub_elem_size), ._, ._ },
123336 .{ ._, ._, .mov, .tmp1d, .sia(-16, .dst0, .add_unaligned_size), ._, ._ },
118014123337 .{ .@"0:", ._, .mov, .tmp2p, .tmp0p, ._, ._ },
118015123338 .{ ._, ._, .mov, .tmp3d, .sa(.src0, .add_bit_size), ._, ._ },
118016123339 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
118017 .{ ._, ._ps, .mova, .memia(.dst0x, .tmp1, .add_unaligned_size), .tmp5x, ._, ._ },
118018 .{ ._, ._, .lea, .tmp0p, .leaa(.tmp0, .add_src0_elem_size), ._, ._ },
118019 .{ ._, ._, .add, .tmp1p, .si(16), ._, ._ },
118020 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
123340 .{ ._, ._ps, .mova, .memi(.dst0x, .tmp1), .tmp5x, ._, ._ },
123341 .{ ._, ._, .lea, .tmp0p, .leaa(.tmp0, .sub_src0_elem_size), ._, ._ },
123342 .{ ._, ._, .sub, .tmp1d, .si(16), ._, ._ },
123343 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
118021123344 } },
118022123345 }, .{
118023123346 .required_features = .{ .@"64bit", .avx, null, null },
......@@ -118029,11 +123352,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
118029123352 .call_frame = .{ .alignment = .@"16" },
118030123353 .extra_temps = .{
118031123354 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
118032 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
118033 .{ .type = .usize, .kind = .{ .reg = .rdi } },
118034 .{ .type = .usize, .kind = .{ .reg = .rsi } },
123355 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
123356 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
123357 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
118035123358 .{ .type = .usize, .kind = .{ .extern_func = "__floatuneitf" } },
118036 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
123359 .{ .type = .f128, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
118037123360 .unused,
118038123361 .unused,
118039123362 .unused,
......@@ -118043,15 +123366,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
118043123366 .dst_temps = .{ .mem, .unused },
118044123367 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
118045123368 .each = .{ .once = &.{
118046 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
118047 .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
123369 .{ ._, ._, .lea, .tmp0p, .mema(.src0, .add_unaligned_size_sub_elem_size), ._, ._ },
123370 .{ ._, ._, .mov, .tmp1d, .sia(-16, .dst0, .add_unaligned_size), ._, ._ },
118048123371 .{ .@"0:", ._, .mov, .tmp2p, .tmp0p, ._, ._ },
118049123372 .{ ._, ._, .mov, .tmp3d, .sa(.src0, .add_bit_size), ._, ._ },
118050123373 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
118051 .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp1, .add_unaligned_size), .tmp5x, ._, ._ },
118052 .{ ._, ._, .lea, .tmp0p, .leaa(.tmp0, .add_src0_elem_size), ._, ._ },
118053 .{ ._, ._, .add, .tmp1p, .si(16), ._, ._ },
118054 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
123374 .{ ._, .v_dqa, .mov, .memi(.dst0x, .tmp1), .tmp5x, ._, ._ },
123375 .{ ._, ._, .lea, .tmp0p, .leaa(.tmp0, .sub_src0_elem_size), ._, ._ },
123376 .{ ._, ._, .sub, .tmp1d, .si(16), ._, ._ },
123377 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
118055123378 } },
118056123379 }, .{
118057123380 .required_features = .{ .@"64bit", .sse2, null, null },
......@@ -118063,11 +123386,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
118063123386 .call_frame = .{ .alignment = .@"16" },
118064123387 .extra_temps = .{
118065123388 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
118066 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
118067 .{ .type = .usize, .kind = .{ .reg = .rdi } },
118068 .{ .type = .usize, .kind = .{ .reg = .rsi } },
123389 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
123390 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
123391 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
118069123392 .{ .type = .usize, .kind = .{ .extern_func = "__floatuneitf" } },
118070 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
123393 .{ .type = .f128, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
118071123394 .unused,
118072123395 .unused,
118073123396 .unused,
......@@ -118077,15 +123400,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
118077123400 .dst_temps = .{ .mem, .unused },
118078123401 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
118079123402 .each = .{ .once = &.{
118080 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
118081 .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
123403 .{ ._, ._, .lea, .tmp0p, .mema(.src0, .add_unaligned_size_sub_elem_size), ._, ._ },
123404 .{ ._, ._, .mov, .tmp1d, .sia(-16, .dst0, .add_unaligned_size), ._, ._ },
118082123405 .{ .@"0:", ._, .mov, .tmp2p, .tmp0p, ._, ._ },
118083123406 .{ ._, ._, .mov, .tmp3d, .sa(.src0, .add_bit_size), ._, ._ },
118084123407 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
118085 .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp1, .add_unaligned_size), .tmp5x, ._, ._ },
118086 .{ ._, ._, .lea, .tmp0p, .leaa(.tmp0, .add_src0_elem_size), ._, ._ },
118087 .{ ._, ._, .add, .tmp1p, .si(16), ._, ._ },
118088 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
123408 .{ ._, ._dqa, .mov, .memi(.dst0x, .tmp1), .tmp5x, ._, ._ },
123409 .{ ._, ._, .lea, .tmp0p, .leaa(.tmp0, .sub_src0_elem_size), ._, ._ },
123410 .{ ._, ._, .sub, .tmp1d, .si(16), ._, ._ },
123411 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
118089123412 } },
118090123413 }, .{
118091123414 .required_features = .{ .@"64bit", .sse, null, null },
......@@ -118097,11 +123420,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
118097123420 .call_frame = .{ .alignment = .@"16" },
118098123421 .extra_temps = .{
118099123422 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
118100 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
118101 .{ .type = .usize, .kind = .{ .reg = .rdi } },
118102 .{ .type = .usize, .kind = .{ .reg = .rsi } },
123423 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
123424 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
123425 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
118103123426 .{ .type = .usize, .kind = .{ .extern_func = "__floatuneitf" } },
118104 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
123427 .{ .type = .f128, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
118105123428 .unused,
118106123429 .unused,
118107123430 .unused,
......@@ -118111,15 +123434,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
118111123434 .dst_temps = .{ .mem, .unused },
118112123435 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
118113123436 .each = .{ .once = &.{
118114 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
118115 .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
123437 .{ ._, ._, .lea, .tmp0p, .mema(.src0, .add_unaligned_size_sub_elem_size), ._, ._ },
123438 .{ ._, ._, .mov, .tmp1d, .sia(-16, .dst0, .add_unaligned_size), ._, ._ },
118116123439 .{ .@"0:", ._, .mov, .tmp2p, .tmp0p, ._, ._ },
118117123440 .{ ._, ._, .mov, .tmp3d, .sa(.src0, .add_bit_size), ._, ._ },
118118123441 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
118119 .{ ._, ._ps, .mova, .memia(.dst0x, .tmp1, .add_unaligned_size), .tmp5x, ._, ._ },
118120 .{ ._, ._, .lea, .tmp0p, .leaa(.tmp0, .add_src0_elem_size), ._, ._ },
118121 .{ ._, ._, .add, .tmp1p, .si(16), ._, ._ },
118122 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
123442 .{ ._, ._ps, .mova, .memi(.dst0x, .tmp1), .tmp5x, ._, ._ },
123443 .{ ._, ._, .lea, .tmp0p, .leaa(.tmp0, .sub_src0_elem_size), ._, ._ },
123444 .{ ._, ._, .sub, .tmp1d, .si(16), ._, ._ },
123445 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
118123123446 } },
118124123447 } }) catch |err| switch (err) {
118125123448 error.SelectFailed => return cg.fail("failed to select {s} {} {} {}", .{
......@@ -118132,7 +123455,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
118132123455 };
118133123456 try res[0].finish(inst, &.{ty_op.operand}, &ops, cg);
118134123457 },
118135 .reduce => |air_tag| if (use_old) try cg.airReduce(inst) else {
123458 .reduce => |air_tag| {
118136123459 const nan = std.math.nan(f16);
118137123460 const reduce = air_datas[@intFromEnum(inst)].reduce;
118138123461 const res_ty = cg.typeOfIndex(inst);
......@@ -131814,7 +137137,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
131814137137 .call_frame = .{ .alignment = .@"16" },
131815137138 .extra_temps = .{
131816137139 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
131817 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
137140 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
131818137141 .{ .type = .usize, .kind = .{ .extern_func = "__fminh" } },
131819137142 .unused,
131820137143 .unused,
......@@ -131825,7 +137148,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
131825137148 .unused,
131826137149 .unused,
131827137150 },
131828 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },
137151 .dst_temps = .{ .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
131829137152 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
131830137153 .each = .{ .once = &.{
131831137154 .{ ._, .vp_, .xor, .dst0x, .dst0x, .dst0x, ._ },
......@@ -131847,7 +137170,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
131847137170 .call_frame = .{ .alignment = .@"16" },
131848137171 .extra_temps = .{
131849137172 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
131850 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
137173 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
131851137174 .{ .type = .usize, .kind = .{ .extern_func = "__fminh" } },
131852137175 .unused,
131853137176 .unused,
......@@ -131858,7 +137181,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
131858137181 .unused,
131859137182 .unused,
131860137183 },
131861 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },
137184 .dst_temps = .{ .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
131862137185 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
131863137186 .each = .{ .once = &.{
131864137187 .{ ._, .p_, .xor, .dst0x, .dst0x, ._, ._ },
......@@ -131882,7 +137205,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
131882137205 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
131883137206 .{ .type = .f16, .kind = .{ .reg = .ax } },
131884137207 .{ .type = .f32, .kind = .mem },
131885 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
137208 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
131886137209 .{ .type = .usize, .kind = .{ .extern_func = "__fminh" } },
131887137210 .unused,
131888137211 .unused,
......@@ -131891,7 +137214,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
131891137214 .unused,
131892137215 .unused,
131893137216 },
131894 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },
137217 .dst_temps = .{ .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
131895137218 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
131896137219 .each = .{ .once = &.{
131897137220 .{ ._, ._ps, .xor, .dst0x, .dst0x, ._, ._ },
......@@ -133482,7 +138805,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
133482138805 .call_frame = .{ .alignment = .@"16" },
133483138806 .extra_temps = .{
133484138807 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
133485 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
138808 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
133486138809 .{ .type = .usize, .kind = .{ .extern_func = "fminq" } },
133487138810 .unused,
133488138811 .unused,
......@@ -133493,7 +138816,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
133493138816 .unused,
133494138817 .unused,
133495138818 },
133496 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },
138819 .dst_temps = .{ .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
133497138820 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
133498138821 .each = .{ .once = &.{
133499138822 .{ ._, ._, .mov, .tmp0d, .sia(-32, .src0, .add_unaligned_size), ._, ._ },
......@@ -133513,7 +138836,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
133513138836 .call_frame = .{ .alignment = .@"16" },
133514138837 .extra_temps = .{
133515138838 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
133516 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
138839 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
133517138840 .{ .type = .usize, .kind = .{ .extern_func = "fminq" } },
133518138841 .unused,
133519138842 .unused,
......@@ -133524,7 +138847,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
133524138847 .unused,
133525138848 .unused,
133526138849 },
133527 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },
138850 .dst_temps = .{ .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
133528138851 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
133529138852 .each = .{ .once = &.{
133530138853 .{ ._, ._, .mov, .tmp0d, .sia(-32, .src0, .add_unaligned_size), ._, ._ },
......@@ -133544,7 +138867,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
133544138867 .call_frame = .{ .alignment = .@"16" },
133545138868 .extra_temps = .{
133546138869 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
133547 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
138870 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
133548138871 .{ .type = .usize, .kind = .{ .extern_func = "fminq" } },
133549138872 .unused,
133550138873 .unused,
......@@ -133555,7 +138878,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
133555138878 .unused,
133556138879 .unused,
133557138880 },
133558 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },
138881 .dst_temps = .{ .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
133559138882 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
133560138883 .each = .{ .once = &.{
133561138884 .{ ._, ._, .mov, .tmp0d, .sia(-32, .src0, .add_unaligned_size), ._, ._ },
......@@ -141934,7 +147257,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
141934147257 .call_frame = .{ .alignment = .@"16" },
141935147258 .extra_temps = .{
141936147259 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
141937 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
147260 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
141938147261 .{ .type = .usize, .kind = .{ .extern_func = "__fmaxh" } },
141939147262 .unused,
141940147263 .unused,
......@@ -141945,7 +147268,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
141945147268 .unused,
141946147269 .unused,
141947147270 },
141948 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },
147271 .dst_temps = .{ .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
141949147272 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
141950147273 .each = .{ .once = &.{
141951147274 .{ ._, .vp_, .xor, .dst0x, .dst0x, .dst0x, ._ },
......@@ -141967,7 +147290,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
141967147290 .call_frame = .{ .alignment = .@"16" },
141968147291 .extra_temps = .{
141969147292 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
141970 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
147293 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
141971147294 .{ .type = .usize, .kind = .{ .extern_func = "__fmaxh" } },
141972147295 .unused,
141973147296 .unused,
......@@ -141978,7 +147301,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
141978147301 .unused,
141979147302 .unused,
141980147303 },
141981 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },
147304 .dst_temps = .{ .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
141982147305 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
141983147306 .each = .{ .once = &.{
141984147307 .{ ._, .p_, .xor, .dst0x, .dst0x, ._, ._ },
......@@ -142002,7 +147325,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
142002147325 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
142003147326 .{ .type = .f16, .kind = .{ .reg = .ax } },
142004147327 .{ .type = .f32, .kind = .mem },
142005 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
147328 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
142006147329 .{ .type = .usize, .kind = .{ .extern_func = "__fmaxh" } },
142007147330 .unused,
142008147331 .unused,
......@@ -142011,7 +147334,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
142011147334 .unused,
142012147335 .unused,
142013147336 },
142014 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },
147337 .dst_temps = .{ .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
142015147338 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
142016147339 .each = .{ .once = &.{
142017147340 .{ ._, ._ps, .xor, .dst0x, .dst0x, ._, ._ },
......@@ -143610,7 +148933,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
143610148933 .call_frame = .{ .alignment = .@"16" },
143611148934 .extra_temps = .{
143612148935 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
143613 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
148936 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
143614148937 .{ .type = .usize, .kind = .{ .extern_func = "fmaxq" } },
143615148938 .unused,
143616148939 .unused,
......@@ -143621,7 +148944,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
143621148944 .unused,
143622148945 .unused,
143623148946 },
143624 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },
148947 .dst_temps = .{ .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
143625148948 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
143626148949 .each = .{ .once = &.{
143627148950 .{ ._, ._, .mov, .tmp0d, .sia(-32, .src0, .add_unaligned_size), ._, ._ },
......@@ -143641,7 +148964,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
143641148964 .call_frame = .{ .alignment = .@"16" },
143642148965 .extra_temps = .{
143643148966 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
143644 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
148967 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
143645148968 .{ .type = .usize, .kind = .{ .extern_func = "fmaxq" } },
143646148969 .unused,
143647148970 .unused,
......@@ -143652,7 +148975,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
143652148975 .unused,
143653148976 .unused,
143654148977 },
143655 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },
148978 .dst_temps = .{ .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
143656148979 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
143657148980 .each = .{ .once = &.{
143658148981 .{ ._, ._, .mov, .tmp0d, .sia(-32, .src0, .add_unaligned_size), ._, ._ },
......@@ -143672,7 +148995,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
143672148995 .call_frame = .{ .alignment = .@"16" },
143673148996 .extra_temps = .{
143674148997 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
143675 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
148998 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
143676148999 .{ .type = .usize, .kind = .{ .extern_func = "fmaxq" } },
143677149000 .unused,
143678149001 .unused,
......@@ -143683,7 +149006,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
143683149006 .unused,
143684149007 .unused,
143685149008 },
143686 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },
149009 .dst_temps = .{ .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
143687149010 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
143688149011 .each = .{ .once = &.{
143689149012 .{ ._, ._, .mov, .tmp0d, .sia(-32, .src0, .add_unaligned_size), ._, ._ },
......@@ -147548,7 +152871,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
147548152871 .unused,
147549152872 .unused,
147550152873 },
147551 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },
152874 .dst_temps = .{ .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
147552152875 .clobbers = .{ .eflags = true },
147553152876 .each = .{ .once = &.{
147554152877 .{ ._, .vp_, .xor, .dst0x, .dst0x, .dst0x, ._ },
......@@ -147581,7 +152904,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
147581152904 .unused,
147582152905 .unused,
147583152906 },
147584 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },
152907 .dst_temps = .{ .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
147585152908 .clobbers = .{ .eflags = true },
147586152909 .each = .{ .once = &.{
147587152910 .{ ._, .vp_, .xor, .dst0x, .dst0x, .dst0x, ._ },
......@@ -147605,7 +152928,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
147605152928 .call_frame = .{ .alignment = .@"16" },
147606152929 .extra_temps = .{
147607152930 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
147608 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
152931 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
147609152932 .{ .type = .usize, .kind = .{ .extern_func = "__addhf3" } },
147610152933 .unused,
147611152934 .unused,
......@@ -147616,7 +152939,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
147616152939 .unused,
147617152940 .unused,
147618152941 },
147619 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },
152942 .dst_temps = .{ .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
147620152943 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
147621152944 .each = .{ .once = &.{
147622152945 .{ ._, .vp_, .xor, .dst0x, .dst0x, .dst0x, ._ },
......@@ -147638,7 +152961,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
147638152961 .call_frame = .{ .alignment = .@"16" },
147639152962 .extra_temps = .{
147640152963 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
147641 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
152964 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
147642152965 .{ .type = .usize, .kind = .{ .extern_func = "__addhf3" } },
147643152966 .unused,
147644152967 .unused,
......@@ -147649,7 +152972,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
147649152972 .unused,
147650152973 .unused,
147651152974 },
147652 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },
152975 .dst_temps = .{ .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
147653152976 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
147654152977 .each = .{ .once = &.{
147655152978 .{ ._, .p_, .xor, .dst0x, .dst0x, ._, ._ },
......@@ -147673,7 +152996,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
147673152996 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
147674152997 .{ .type = .f16, .kind = .{ .reg = .ax } },
147675152998 .{ .type = .f32, .kind = .mem },
147676 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
152999 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
147677153000 .{ .type = .usize, .kind = .{ .extern_func = "__addhf3" } },
147678153001 .unused,
147679153002 .unused,
......@@ -147682,7 +153005,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
147682153005 .unused,
147683153006 .unused,
147684153007 },
147685 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },
153008 .dst_temps = .{ .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
147686153009 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
147687153010 .each = .{ .once = &.{
147688153011 .{ ._, ._ps, .xor, .dst0x, .dst0x, ._, ._ },
......@@ -148150,6 +153473,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
148150153473 .{ ._, .f_p, .st, .dst0q, ._, ._, ._ },
148151153474 } },
148152153475 }, .{
153476 .required_abi = .gnu,
148153153477 .required_features = .{ .x87, null, null, null },
148154153478 .dst_constraints = .{ .{ .float = .tbyte }, .any },
148155153479 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
......@@ -148157,8 +153481,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
148157153481 .{ .src = .{ .to_mem, .none, .none } },
148158153482 },
148159153483 .extra_temps = .{
148160 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
148161153484 .{ .type = .f80, .kind = .{ .reg = .st7 } },
153485 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
148162153486 .{ .type = .f80, .kind = .{ .reg = .st6 } },
148163153487 .unused,
148164153488 .unused,
......@@ -148172,13 +153496,51 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
148172153496 .dst_temps = .{ .{ .rc = .x87 }, .unused },
148173153497 .clobbers = .{ .eflags = true },
148174153498 .each = .{ .once = &.{
148175 .{ ._, ._, .mov, .tmp0p, .sia(16, .src0, .sub_unaligned_size), ._, ._ },
148176153499 .{ ._, .f_, .ld, .mem(.src0t), ._, ._, ._ },
148177 .{ .@"0:", .f_, .ld, .memia(.src0t, .tmp0, .add_unaligned_size), ._, ._, ._ },
153500 .{ ._, ._, .mov, .tmp1p, .sia(16, .src0, .sub_unaligned_size), ._, ._ },
153501 .{ .@"0:", .f_, .ld, .memia(.src0t, .tmp1, .add_unaligned_size), ._, ._, ._ },
148178153502 .{ ._, .f_p, .add, ._, ._, ._, ._ },
148179 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
153503 .{ ._, ._, .add, .tmp1p, .si(16), ._, ._ },
153504 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
153505 .{ ._, .f_p, .st, .dst0t, ._, ._, ._ },
153506 } },
153507 }, .{
153508 .required_abi = .msvc,
153509 .required_features = .{ .x87, null, null, null },
153510 .dst_constraints = .{ .{ .float = .tbyte }, .any },
153511 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
153512 .patterns = &.{
153513 .{ .src = .{ .to_mem, .none, .none } },
153514 },
153515 .extra_temps = .{
153516 .{ .type = .f80, .kind = .{ .reg = .st7 } },
153517 .{ .type = .u16, .kind = .mem },
153518 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
153519 .{ .type = .f80, .kind = .{ .reg = .st6 } },
153520 .unused,
153521 .unused,
153522 .unused,
153523 .unused,
153524 .unused,
153525 .unused,
153526 .unused,
153527 },
153528 .dst_temps = .{ .{ .rc = .x87 }, .unused },
153529 .clobbers = .{ .eflags = true },
153530 .each = .{ .once = &.{
153531 .{ ._, .f_, .ld, .mem(.src0t), ._, ._, ._ },
153532 .{ ._, .fn_cw, .st, .tmp1w, ._, ._, ._ },
153533 .{ ._, ._, .movzx, .tmp2d, .memd(.tmp1b, 1), ._, ._ },
153534 .{ ._, ._, .@"or", .memd(.tmp1b, 1), .ui(0b000_0_00_11), ._, ._ },
153535 .{ ._, .f_cw, .ld, .tmp1w, ._, ._, ._ },
153536 .{ ._, ._, .mov, .memd(.tmp1b, 1), .tmp2b, ._, ._ },
153537 .{ ._, ._, .mov, .tmp2p, .sia(16, .src0, .sub_unaligned_size), ._, ._ },
153538 .{ .@"0:", .f_, .ld, .memia(.src0t, .tmp2, .add_unaligned_size), ._, ._, ._ },
153539 .{ ._, .f_p, .add, ._, ._, ._, ._ },
153540 .{ ._, ._, .add, .tmp2p, .si(16), ._, ._ },
148180153541 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
148181153542 .{ ._, .f_p, .st, .dst0t, ._, ._, ._ },
153543 .{ ._, .f_cw, .ld, .tmp1w, ._, ._, ._ },
148182153544 } },
148183153545 }, .{
148184153546 .required_features = .{ .avx, null, null, null },
......@@ -148190,7 +153552,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
148190153552 .call_frame = .{ .alignment = .@"16" },
148191153553 .extra_temps = .{
148192153554 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
148193 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
153555 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
148194153556 .{ .type = .usize, .kind = .{ .extern_func = "__addtf3" } },
148195153557 .unused,
148196153558 .unused,
......@@ -148201,7 +153563,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
148201153563 .unused,
148202153564 .unused,
148203153565 },
148204 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },
153566 .dst_temps = .{ .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
148205153567 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
148206153568 .each = .{ .once = &.{
148207153569 .{ ._, ._, .mov, .tmp0p, .sia(16, .src0, .sub_unaligned_size), ._, ._ },
......@@ -148221,7 +153583,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
148221153583 .call_frame = .{ .alignment = .@"16" },
148222153584 .extra_temps = .{
148223153585 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
148224 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
153586 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
148225153587 .{ .type = .usize, .kind = .{ .extern_func = "__addtf3" } },
148226153588 .unused,
148227153589 .unused,
......@@ -148232,7 +153594,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
148232153594 .unused,
148233153595 .unused,
148234153596 },
148235 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },
153597 .dst_temps = .{ .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
148236153598 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
148237153599 .each = .{ .once = &.{
148238153600 .{ ._, ._, .mov, .tmp0p, .sia(16, .src0, .sub_unaligned_size), ._, ._ },
......@@ -148252,7 +153614,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
148252153614 .call_frame = .{ .alignment = .@"16" },
148253153615 .extra_temps = .{
148254153616 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
148255 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
153617 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
148256153618 .{ .type = .usize, .kind = .{ .extern_func = "__addtf3" } },
148257153619 .unused,
148258153620 .unused,
......@@ -148263,7 +153625,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
148263153625 .unused,
148264153626 .unused,
148265153627 },
148266 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },
153628 .dst_temps = .{ .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
148267153629 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
148268153630 .each = .{ .once = &.{
148269153631 .{ ._, ._, .mov, .tmp0p, .sia(16, .src0, .sub_unaligned_size), ._, ._ },
......@@ -151240,7 +156602,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
151240156602 .unused,
151241156603 .unused,
151242156604 },
151243 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },
156605 .dst_temps = .{ .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
151244156606 .clobbers = .{ .eflags = true },
151245156607 .each = .{ .once = &.{
151246156608 .{ ._, .vp_, .xor, .dst0x, .dst0x, .dst0x, ._ },
......@@ -151264,7 +156626,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
151264156626 .call_frame = .{ .alignment = .@"16" },
151265156627 .extra_temps = .{
151266156628 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
151267 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
156629 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
151268156630 .{ .type = .usize, .kind = .{ .extern_func = "__mulhf3" } },
151269156631 .unused,
151270156632 .unused,
......@@ -151275,7 +156637,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
151275156637 .unused,
151276156638 .unused,
151277156639 },
151278 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },
156640 .dst_temps = .{ .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
151279156641 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
151280156642 .each = .{ .once = &.{
151281156643 .{ ._, .vp_, .xor, .dst0x, .dst0x, .dst0x, ._ },
......@@ -151297,7 +156659,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
151297156659 .call_frame = .{ .alignment = .@"16" },
151298156660 .extra_temps = .{
151299156661 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
151300 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
156662 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
151301156663 .{ .type = .usize, .kind = .{ .extern_func = "__mulhf3" } },
151302156664 .unused,
151303156665 .unused,
......@@ -151308,7 +156670,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
151308156670 .unused,
151309156671 .unused,
151310156672 },
151311 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },
156673 .dst_temps = .{ .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
151312156674 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
151313156675 .each = .{ .once = &.{
151314156676 .{ ._, .p_, .xor, .dst0x, .dst0x, ._, ._ },
......@@ -151332,7 +156694,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
151332156694 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
151333156695 .{ .type = .f16, .kind = .{ .reg = .ax } },
151334156696 .{ .type = .f32, .kind = .mem },
151335 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
156697 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
151336156698 .{ .type = .usize, .kind = .{ .extern_func = "__mulhf3" } },
151337156699 .unused,
151338156700 .unused,
......@@ -151341,7 +156703,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
151341156703 .unused,
151342156704 .unused,
151343156705 },
151344 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },
156706 .dst_temps = .{ .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
151345156707 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
151346156708 .each = .{ .once = &.{
151347156709 .{ ._, ._ps, .xor, .dst0x, .dst0x, ._, ._ },
......@@ -151689,6 +157051,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
151689157051 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
151690157052 } },
151691157053 }, .{
157054 .required_abi = .gnu,
151692157055 .required_features = .{ .x87, null, null, null },
151693157056 .dst_constraints = .{ .{ .float = .tbyte }, .any },
151694157057 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
......@@ -151696,8 +157059,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
151696157059 .{ .src = .{ .to_mem, .none, .none } },
151697157060 },
151698157061 .extra_temps = .{
151699 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
151700157062 .{ .type = .f80, .kind = .{ .reg = .st7 } },
157063 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
151701157064 .{ .type = .f80, .kind = .{ .reg = .st6 } },
151702157065 .unused,
151703157066 .unused,
......@@ -151711,14 +157074,52 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
151711157074 .dst_temps = .{ .{ .rc = .x87 }, .unused },
151712157075 .clobbers = .{ .eflags = true },
151713157076 .each = .{ .once = &.{
151714 .{ ._, ._, .mov, .tmp0p, .sia(16, .src0, .sub_unaligned_size), ._, ._ },
151715157077 .{ ._, .f_, .ld, .mem(.src0t), ._, ._, ._ },
151716 .{ .@"0:", .f_, .ld, .memia(.src0t, .tmp0, .add_unaligned_size), ._, ._, ._ },
157078 .{ ._, ._, .mov, .tmp1p, .sia(16, .src0, .sub_unaligned_size), ._, ._ },
157079 .{ .@"0:", .f_, .ld, .memia(.src0t, .tmp1, .add_unaligned_size), ._, ._, ._ },
151717157080 .{ ._, .f_p, .mul, ._, ._, ._, ._ },
151718 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
157081 .{ ._, ._, .add, .tmp1p, .si(16), ._, ._ },
151719157082 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
151720157083 .{ ._, .f_p, .st, .dst0t, ._, ._, ._ },
151721157084 } },
157085 }, .{
157086 .required_abi = .msvc,
157087 .required_features = .{ .x87, null, null, null },
157088 .dst_constraints = .{ .{ .float = .tbyte }, .any },
157089 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
157090 .patterns = &.{
157091 .{ .src = .{ .to_mem, .none, .none } },
157092 },
157093 .extra_temps = .{
157094 .{ .type = .f80, .kind = .{ .reg = .st7 } },
157095 .{ .type = .u16, .kind = .mem },
157096 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
157097 .{ .type = .f80, .kind = .{ .reg = .st6 } },
157098 .unused,
157099 .unused,
157100 .unused,
157101 .unused,
157102 .unused,
157103 .unused,
157104 .unused,
157105 },
157106 .dst_temps = .{ .{ .rc = .x87 }, .unused },
157107 .clobbers = .{ .eflags = true },
157108 .each = .{ .once = &.{
157109 .{ ._, .f_, .ld, .mem(.src0t), ._, ._, ._ },
157110 .{ ._, .fn_cw, .st, .tmp1w, ._, ._, ._ },
157111 .{ ._, ._, .movzx, .tmp2d, .memd(.tmp1b, 1), ._, ._ },
157112 .{ ._, ._, .@"or", .memd(.tmp1b, 1), .ui(0b000_0_00_11), ._, ._ },
157113 .{ ._, .f_cw, .ld, .tmp1w, ._, ._, ._ },
157114 .{ ._, ._, .mov, .memd(.tmp1b, 1), .tmp2b, ._, ._ },
157115 .{ ._, ._, .mov, .tmp2p, .sia(16, .src0, .sub_unaligned_size), ._, ._ },
157116 .{ .@"0:", .f_, .ld, .memia(.src0t, .tmp2, .add_unaligned_size), ._, ._, ._ },
157117 .{ ._, .f_p, .mul, ._, ._, ._, ._ },
157118 .{ ._, ._, .add, .tmp2p, .si(16), ._, ._ },
157119 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
157120 .{ ._, .f_p, .st, .dst0t, ._, ._, ._ },
157121 .{ ._, .f_cw, .ld, .tmp1w, ._, ._, ._ },
157122 } },
151722157123 }, .{
151723157124 .required_features = .{ .avx, null, null, null },
151724157125 .dst_constraints = .{ .{ .float = .xword }, .any },
......@@ -151729,7 +157130,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
151729157130 .call_frame = .{ .alignment = .@"16" },
151730157131 .extra_temps = .{
151731157132 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
151732 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
157133 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
151733157134 .{ .type = .usize, .kind = .{ .extern_func = "__multf3" } },
151734157135 .unused,
151735157136 .unused,
......@@ -151740,7 +157141,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
151740157141 .unused,
151741157142 .unused,
151742157143 },
151743 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },
157144 .dst_temps = .{ .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
151744157145 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
151745157146 .each = .{ .once = &.{
151746157147 .{ ._, ._, .mov, .tmp0p, .sia(16, .src0, .sub_unaligned_size), ._, ._ },
......@@ -151760,7 +157161,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
151760157161 .call_frame = .{ .alignment = .@"16" },
151761157162 .extra_temps = .{
151762157163 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
151763 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
157164 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
151764157165 .{ .type = .usize, .kind = .{ .extern_func = "__multf3" } },
151765157166 .unused,
151766157167 .unused,
......@@ -151771,7 +157172,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
151771157172 .unused,
151772157173 .unused,
151773157174 },
151774 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },
157175 .dst_temps = .{ .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
151775157176 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
151776157177 .each = .{ .once = &.{
151777157178 .{ ._, ._, .mov, .tmp0p, .sia(16, .src0, .sub_unaligned_size), ._, ._ },
......@@ -151791,7 +157192,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
151791157192 .call_frame = .{ .alignment = .@"16" },
151792157193 .extra_temps = .{
151793157194 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
151794 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
157195 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
151795157196 .{ .type = .usize, .kind = .{ .extern_func = "__multf3" } },
151796157197 .unused,
151797157198 .unused,
......@@ -151802,7 +157203,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
151802157203 .unused,
151803157204 .unused,
151804157205 },
151805 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },
157206 .dst_temps = .{ .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
151806157207 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
151807157208 .each = .{ .once = &.{
151808157209 .{ ._, ._, .mov, .tmp0p, .sia(16, .src0, .sub_unaligned_size), ._, ._ },
......@@ -151836,7 +157237,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
151836157237 }
151837157238 try res[0].finish(inst, &.{reduce.operand}, &ops, cg);
151838157239 },
151839 .reduce_optimized => |air_tag| if (use_old) try cg.airReduce(inst) else {
157240 .reduce_optimized => |air_tag| {
151840157241 const inf = std.math.inf(f16);
151841157242 const reduce = air_datas[@intFromEnum(inst)].reduce;
151842157243 var ops = try cg.tempsFromOperands(inst, .{reduce.operand});
......@@ -152303,7 +157704,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
152303157704 .call_frame = .{ .alignment = .@"16" },
152304157705 .extra_temps = .{
152305157706 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
152306 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
157707 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
152307157708 .{ .type = .usize, .kind = .{ .extern_func = "__fminh" } },
152308157709 .unused,
152309157710 .unused,
......@@ -152314,7 +157715,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
152314157715 .unused,
152315157716 .unused,
152316157717 },
152317 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },
157718 .dst_temps = .{ .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
152318157719 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
152319157720 .each = .{ .once = &.{
152320157721 .{ ._, .vp_, .xor, .dst0x, .dst0x, .dst0x, ._ },
......@@ -152336,7 +157737,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
152336157737 .call_frame = .{ .alignment = .@"16" },
152337157738 .extra_temps = .{
152338157739 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
152339 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
157740 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
152340157741 .{ .type = .usize, .kind = .{ .extern_func = "__fminh" } },
152341157742 .unused,
152342157743 .unused,
......@@ -152347,7 +157748,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
152347157748 .unused,
152348157749 .unused,
152349157750 },
152350 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },
157751 .dst_temps = .{ .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
152351157752 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
152352157753 .each = .{ .once = &.{
152353157754 .{ ._, .p_, .xor, .dst0x, .dst0x, ._, ._ },
......@@ -152371,7 +157772,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
152371157772 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
152372157773 .{ .type = .f16, .kind = .{ .reg = .ax } },
152373157774 .{ .type = .f32, .kind = .mem },
152374 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
157775 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
152375157776 .{ .type = .usize, .kind = .{ .extern_func = "__fminh" } },
152376157777 .unused,
152377157778 .unused,
......@@ -152380,7 +157781,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
152380157781 .unused,
152381157782 .unused,
152382157783 },
152383 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },
157784 .dst_temps = .{ .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
152384157785 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
152385157786 .each = .{ .once = &.{
152386157787 .{ ._, ._ps, .xor, .dst0x, .dst0x, ._, ._ },
......@@ -153451,7 +158852,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
153451158852 .call_frame = .{ .alignment = .@"16" },
153452158853 .extra_temps = .{
153453158854 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
153454 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
158855 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
153455158856 .{ .type = .usize, .kind = .{ .extern_func = "fminq" } },
153456158857 .unused,
153457158858 .unused,
......@@ -153462,7 +158863,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
153462158863 .unused,
153463158864 .unused,
153464158865 },
153465 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },
158866 .dst_temps = .{ .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
153466158867 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
153467158868 .each = .{ .once = &.{
153468158869 .{ ._, ._, .mov, .tmp0d, .sia(-32, .src0, .add_unaligned_size), ._, ._ },
......@@ -153482,7 +158883,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
153482158883 .call_frame = .{ .alignment = .@"16" },
153483158884 .extra_temps = .{
153484158885 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
153485 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
158886 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
153486158887 .{ .type = .usize, .kind = .{ .extern_func = "fminq" } },
153487158888 .unused,
153488158889 .unused,
......@@ -153493,7 +158894,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
153493158894 .unused,
153494158895 .unused,
153495158896 },
153496 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },
158897 .dst_temps = .{ .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
153497158898 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
153498158899 .each = .{ .once = &.{
153499158900 .{ ._, ._, .mov, .tmp0d, .sia(-32, .src0, .add_unaligned_size), ._, ._ },
......@@ -153513,7 +158914,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
153513158914 .call_frame = .{ .alignment = .@"16" },
153514158915 .extra_temps = .{
153515158916 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
153516 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
158917 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
153517158918 .{ .type = .usize, .kind = .{ .extern_func = "fminq" } },
153518158919 .unused,
153519158920 .unused,
......@@ -153524,7 +158925,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
153524158925 .unused,
153525158926 .unused,
153526158927 },
153527 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },
158928 .dst_temps = .{ .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
153528158929 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
153529158930 .each = .{ .once = &.{
153530158931 .{ ._, ._, .mov, .tmp0d, .sia(-32, .src0, .add_unaligned_size), ._, ._ },
......@@ -153995,7 +159396,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
153995159396 .call_frame = .{ .alignment = .@"16" },
153996159397 .extra_temps = .{
153997159398 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
153998 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
159399 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
153999159400 .{ .type = .usize, .kind = .{ .extern_func = "__fmaxh" } },
154000159401 .unused,
154001159402 .unused,
......@@ -154006,7 +159407,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
154006159407 .unused,
154007159408 .unused,
154008159409 },
154009 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },
159410 .dst_temps = .{ .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
154010159411 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
154011159412 .each = .{ .once = &.{
154012159413 .{ ._, .vp_, .xor, .dst0x, .dst0x, .dst0x, ._ },
......@@ -154028,7 +159429,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
154028159429 .call_frame = .{ .alignment = .@"16" },
154029159430 .extra_temps = .{
154030159431 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
154031 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
159432 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
154032159433 .{ .type = .usize, .kind = .{ .extern_func = "__fmaxh" } },
154033159434 .unused,
154034159435 .unused,
......@@ -154039,7 +159440,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
154039159440 .unused,
154040159441 .unused,
154041159442 },
154042 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },
159443 .dst_temps = .{ .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
154043159444 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
154044159445 .each = .{ .once = &.{
154045159446 .{ ._, .p_, .xor, .dst0x, .dst0x, ._, ._ },
......@@ -154063,7 +159464,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
154063159464 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
154064159465 .{ .type = .f16, .kind = .{ .reg = .ax } },
154065159466 .{ .type = .f32, .kind = .mem },
154066 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
159467 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
154067159468 .{ .type = .usize, .kind = .{ .extern_func = "__fmaxh" } },
154068159469 .unused,
154069159470 .unused,
......@@ -154072,7 +159473,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
154072159473 .unused,
154073159474 .unused,
154074159475 },
154075 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },
159476 .dst_temps = .{ .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
154076159477 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
154077159478 .each = .{ .once = &.{
154078159479 .{ ._, ._ps, .xor, .dst0x, .dst0x, ._, ._ },
......@@ -155143,7 +160544,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
155143160544 .call_frame = .{ .alignment = .@"16" },
155144160545 .extra_temps = .{
155145160546 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
155146 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
160547 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
155147160548 .{ .type = .usize, .kind = .{ .extern_func = "fmaxq" } },
155148160549 .unused,
155149160550 .unused,
......@@ -155154,7 +160555,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
155154160555 .unused,
155155160556 .unused,
155156160557 },
155157 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },
160558 .dst_temps = .{ .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
155158160559 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
155159160560 .each = .{ .once = &.{
155160160561 .{ ._, ._, .mov, .tmp0d, .sia(-32, .src0, .add_unaligned_size), ._, ._ },
......@@ -155174,7 +160575,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
155174160575 .call_frame = .{ .alignment = .@"16" },
155175160576 .extra_temps = .{
155176160577 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
155177 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
160578 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
155178160579 .{ .type = .usize, .kind = .{ .extern_func = "fmaxq" } },
155179160580 .unused,
155180160581 .unused,
......@@ -155185,7 +160586,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
155185160586 .unused,
155186160587 .unused,
155187160588 },
155188 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },
160589 .dst_temps = .{ .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
155189160590 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
155190160591 .each = .{ .once = &.{
155191160592 .{ ._, ._, .mov, .tmp0d, .sia(-32, .src0, .add_unaligned_size), ._, ._ },
......@@ -155205,7 +160606,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
155205160606 .call_frame = .{ .alignment = .@"16" },
155206160607 .extra_temps = .{
155207160608 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
155208 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
160609 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
155209160610 .{ .type = .usize, .kind = .{ .extern_func = "fmaxq" } },
155210160611 .unused,
155211160612 .unused,
......@@ -155216,7 +160617,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
155216160617 .unused,
155217160618 .unused,
155218160619 },
155219 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },
160620 .dst_temps = .{ .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
155220160621 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
155221160622 .each = .{ .once = &.{
155222160623 .{ ._, ._, .mov, .tmp0d, .sia(-32, .src0, .add_unaligned_size), ._, ._ },
......@@ -155936,7 +161337,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
155936161337 .call_frame = .{ .alignment = .@"16" },
155937161338 .extra_temps = .{
155938161339 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
155939 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
161340 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
155940161341 .{ .type = .usize, .kind = .{ .extern_func = "__addhf3" } },
155941161342 .unused,
155942161343 .unused,
......@@ -155947,7 +161348,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
155947161348 .unused,
155948161349 .unused,
155949161350 },
155950 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },
161351 .dst_temps = .{ .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
155951161352 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
155952161353 .each = .{ .once = &.{
155953161354 .{ ._, .vp_, .xor, .dst0x, .dst0x, .dst0x, ._ },
......@@ -155969,7 +161370,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
155969161370 .call_frame = .{ .alignment = .@"16" },
155970161371 .extra_temps = .{
155971161372 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
155972 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
161373 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
155973161374 .{ .type = .usize, .kind = .{ .extern_func = "__addhf3" } },
155974161375 .unused,
155975161376 .unused,
......@@ -155980,7 +161381,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
155980161381 .unused,
155981161382 .unused,
155982161383 },
155983 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },
161384 .dst_temps = .{ .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
155984161385 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
155985161386 .each = .{ .once = &.{
155986161387 .{ ._, .p_, .xor, .dst0x, .dst0x, ._, ._ },
......@@ -156004,7 +161405,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
156004161405 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
156005161406 .{ .type = .f16, .kind = .{ .reg = .ax } },
156006161407 .{ .type = .f32, .kind = .mem },
156007 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
161408 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
156008161409 .{ .type = .usize, .kind = .{ .extern_func = "__addhf3" } },
156009161410 .unused,
156010161411 .unused,
......@@ -156013,7 +161414,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
156013161414 .unused,
156014161415 .unused,
156015161416 },
156016 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },
161417 .dst_temps = .{ .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
156017161418 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
156018161419 .each = .{ .once = &.{
156019161420 .{ ._, ._ps, .xor, .dst0x, .dst0x, ._, ._ },
......@@ -157362,6 +162763,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
157362162763 .{ ._, .f_p, .st, .dst0q, ._, ._, ._ },
157363162764 } },
157364162765 }, .{
162766 .required_abi = .gnu,
157365162767 .required_features = .{ .x87, null, null, null },
157366162768 .dst_constraints = .{ .{ .float = .tbyte }, .any },
157367162769 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
......@@ -157369,8 +162771,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
157369162771 .{ .src = .{ .to_mem, .none, .none } },
157370162772 },
157371162773 .extra_temps = .{
157372 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
157373162774 .{ .type = .f80, .kind = .{ .reg = .st7 } },
162775 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
157374162776 .{ .type = .f80, .kind = .{ .reg = .st6 } },
157375162777 .unused,
157376162778 .unused,
......@@ -157384,14 +162786,52 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
157384162786 .dst_temps = .{ .{ .rc = .x87 }, .unused },
157385162787 .clobbers = .{ .eflags = true },
157386162788 .each = .{ .once = &.{
157387 .{ ._, ._, .mov, .tmp0d, .sia(-32, .src0, .add_unaligned_size), ._, ._ },
157388162789 .{ ._, .f_, .ld, .memad(.src0t, .add_unaligned_size, -16), ._, ._, ._ },
157389 .{ .@"0:", .f_, .ld, .memi(.src0t, .tmp0), ._, ._, ._ },
162790 .{ ._, ._, .mov, .tmp1d, .sia(-32, .src0, .add_unaligned_size), ._, ._ },
162791 .{ .@"0:", .f_, .ld, .memi(.src0t, .tmp1), ._, ._, ._ },
157390162792 .{ ._, .f_p, .add, ._, ._, ._, ._ },
157391 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
162793 .{ ._, ._, .sub, .tmp1d, .si(16), ._, ._ },
157392162794 .{ ._, ._nb, .j, .@"0b", ._, ._, ._ },
157393162795 .{ ._, .f_p, .st, .dst0t, ._, ._, ._ },
157394162796 } },
162797 }, .{
162798 .required_abi = .msvc,
162799 .required_features = .{ .x87, null, null, null },
162800 .dst_constraints = .{ .{ .float = .tbyte }, .any },
162801 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
162802 .patterns = &.{
162803 .{ .src = .{ .to_mem, .none, .none } },
162804 },
162805 .extra_temps = .{
162806 .{ .type = .f80, .kind = .{ .reg = .st7 } },
162807 .{ .type = .u16, .kind = .mem },
162808 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
162809 .{ .type = .f80, .kind = .{ .reg = .st6 } },
162810 .unused,
162811 .unused,
162812 .unused,
162813 .unused,
162814 .unused,
162815 .unused,
162816 .unused,
162817 },
162818 .dst_temps = .{ .{ .rc = .x87 }, .unused },
162819 .clobbers = .{ .eflags = true },
162820 .each = .{ .once = &.{
162821 .{ ._, .f_, .ld, .mem(.src0t), ._, ._, ._ },
162822 .{ ._, .fn_cw, .st, .tmp1w, ._, ._, ._ },
162823 .{ ._, ._, .movzx, .tmp2d, .memd(.tmp1b, 1), ._, ._ },
162824 .{ ._, ._, .@"or", .memd(.tmp1b, 1), .ui(0b000_0_00_11), ._, ._ },
162825 .{ ._, .f_cw, .ld, .tmp1w, ._, ._, ._ },
162826 .{ ._, ._, .mov, .memd(.tmp1b, 1), .tmp2b, ._, ._ },
162827 .{ ._, ._, .mov, .tmp2p, .sia(16, .src0, .sub_unaligned_size), ._, ._ },
162828 .{ .@"0:", .f_, .ld, .memia(.src0t, .tmp2, .add_unaligned_size), ._, ._, ._ },
162829 .{ ._, .f_p, .add, ._, ._, ._, ._ },
162830 .{ ._, ._, .add, .tmp2p, .si(16), ._, ._ },
162831 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
162832 .{ ._, .f_p, .st, .dst0t, ._, ._, ._ },
162833 .{ ._, .f_cw, .ld, .tmp1w, ._, ._, ._ },
162834 } },
157395162835 }, .{
157396162836 .required_features = .{ .avx, null, null, null },
157397162837 .dst_constraints = .{ .{ .float = .xword }, .any },
......@@ -157402,7 +162842,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
157402162842 .call_frame = .{ .alignment = .@"16" },
157403162843 .extra_temps = .{
157404162844 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
157405 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
162845 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
157406162846 .{ .type = .usize, .kind = .{ .extern_func = "__addtf3" } },
157407162847 .unused,
157408162848 .unused,
......@@ -157413,7 +162853,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
157413162853 .unused,
157414162854 .unused,
157415162855 },
157416 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },
162856 .dst_temps = .{ .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
157417162857 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
157418162858 .each = .{ .once = &.{
157419162859 .{ ._, ._, .mov, .tmp0d, .sia(-32, .src0, .add_unaligned_size), ._, ._ },
......@@ -157433,7 +162873,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
157433162873 .call_frame = .{ .alignment = .@"16" },
157434162874 .extra_temps = .{
157435162875 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
157436 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
162876 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
157437162877 .{ .type = .usize, .kind = .{ .extern_func = "__addtf3" } },
157438162878 .unused,
157439162879 .unused,
......@@ -157444,7 +162884,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
157444162884 .unused,
157445162885 .unused,
157446162886 },
157447 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },
162887 .dst_temps = .{ .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
157448162888 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
157449162889 .each = .{ .once = &.{
157450162890 .{ ._, ._, .mov, .tmp0d, .sia(-32, .src0, .add_unaligned_size), ._, ._ },
......@@ -157464,7 +162904,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
157464162904 .call_frame = .{ .alignment = .@"16" },
157465162905 .extra_temps = .{
157466162906 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
157467 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
162907 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
157468162908 .{ .type = .usize, .kind = .{ .extern_func = "__addtf3" } },
157469162909 .unused,
157470162910 .unused,
......@@ -157475,7 +162915,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
157475162915 .unused,
157476162916 .unused,
157477162917 },
157478 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },
162918 .dst_temps = .{ .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
157479162919 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
157480162920 .each = .{ .once = &.{
157481162921 .{ ._, ._, .mov, .tmp0d, .sia(-32, .src0, .add_unaligned_size), ._, ._ },
......@@ -157946,7 +163386,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
157946163386 .call_frame = .{ .alignment = .@"16" },
157947163387 .extra_temps = .{
157948163388 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
157949 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
163389 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
157950163390 .{ .type = .usize, .kind = .{ .extern_func = "__mulhf3" } },
157951163391 .unused,
157952163392 .unused,
......@@ -157957,7 +163397,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
157957163397 .unused,
157958163398 .unused,
157959163399 },
157960 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },
163400 .dst_temps = .{ .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
157961163401 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
157962163402 .each = .{ .once = &.{
157963163403 .{ ._, .vp_, .xor, .dst0x, .dst0x, .dst0x, ._ },
......@@ -157979,7 +163419,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
157979163419 .call_frame = .{ .alignment = .@"16" },
157980163420 .extra_temps = .{
157981163421 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
157982 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
163422 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
157983163423 .{ .type = .usize, .kind = .{ .extern_func = "__mulhf3" } },
157984163424 .unused,
157985163425 .unused,
......@@ -157990,7 +163430,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
157990163430 .unused,
157991163431 .unused,
157992163432 },
157993 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },
163433 .dst_temps = .{ .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
157994163434 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
157995163435 .each = .{ .once = &.{
157996163436 .{ ._, .p_, .xor, .dst0x, .dst0x, ._, ._ },
......@@ -158014,7 +163454,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
158014163454 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
158015163455 .{ .type = .f16, .kind = .{ .reg = .ax } },
158016163456 .{ .type = .f32, .kind = .mem },
158017 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
163457 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
158018163458 .{ .type = .usize, .kind = .{ .extern_func = "__mulhf3" } },
158019163459 .unused,
158020163460 .unused,
......@@ -158023,7 +163463,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
158023163463 .unused,
158024163464 .unused,
158025163465 },
158026 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },
163466 .dst_temps = .{ .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
158027163467 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
158028163468 .each = .{ .once = &.{
158029163469 .{ ._, ._ps, .xor, .dst0x, .dst0x, ._, ._ },
......@@ -158905,6 +164345,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
158905164345 .{ ._, .f_p, .st, .dst0q, ._, ._, ._ },
158906164346 } },
158907164347 }, .{
164348 .required_abi = .gnu,
158908164349 .required_features = .{ .x87, null, null, null },
158909164350 .dst_constraints = .{ .{ .float = .tbyte }, .any },
158910164351 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
......@@ -158935,6 +164376,44 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
158935164376 .{ ._, ._nb, .j, .@"0b", ._, ._, ._ },
158936164377 .{ ._, .f_p, .st, .dst0t, ._, ._, ._ },
158937164378 } },
164379 }, .{
164380 .required_abi = .msvc,
164381 .required_features = .{ .x87, null, null, null },
164382 .dst_constraints = .{ .{ .float = .tbyte }, .any },
164383 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
164384 .patterns = &.{
164385 .{ .src = .{ .to_mem, .none, .none } },
164386 },
164387 .extra_temps = .{
164388 .{ .type = .f80, .kind = .{ .reg = .st7 } },
164389 .{ .type = .u16, .kind = .mem },
164390 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
164391 .{ .type = .f80, .kind = .{ .reg = .st6 } },
164392 .unused,
164393 .unused,
164394 .unused,
164395 .unused,
164396 .unused,
164397 .unused,
164398 .unused,
164399 },
164400 .dst_temps = .{ .{ .rc = .x87 }, .unused },
164401 .clobbers = .{ .eflags = true },
164402 .each = .{ .once = &.{
164403 .{ ._, .f_, .ld, .mem(.src0t), ._, ._, ._ },
164404 .{ ._, .fn_cw, .st, .tmp1w, ._, ._, ._ },
164405 .{ ._, ._, .movzx, .tmp2d, .memd(.tmp1b, 1), ._, ._ },
164406 .{ ._, ._, .@"or", .memd(.tmp1b, 1), .ui(0b000_0_00_11), ._, ._ },
164407 .{ ._, .f_cw, .ld, .tmp1w, ._, ._, ._ },
164408 .{ ._, ._, .mov, .memd(.tmp1b, 1), .tmp2b, ._, ._ },
164409 .{ ._, ._, .mov, .tmp2p, .sia(16, .src0, .sub_unaligned_size), ._, ._ },
164410 .{ .@"0:", .f_, .ld, .memia(.src0t, .tmp2, .add_unaligned_size), ._, ._, ._ },
164411 .{ ._, .f_p, .mul, ._, ._, ._, ._ },
164412 .{ ._, ._, .add, .tmp2p, .si(16), ._, ._ },
164413 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
164414 .{ ._, .f_p, .st, .dst0t, ._, ._, ._ },
164415 .{ ._, .f_cw, .ld, .tmp1w, ._, ._, ._ },
164416 } },
158938164417 }, .{
158939164418 .required_features = .{ .avx, null, null, null },
158940164419 .dst_constraints = .{ .{ .float = .xword }, .any },
......@@ -158945,7 +164424,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
158945164424 .call_frame = .{ .alignment = .@"16" },
158946164425 .extra_temps = .{
158947164426 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
158948 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
164427 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
158949164428 .{ .type = .usize, .kind = .{ .extern_func = "__multf3" } },
158950164429 .unused,
158951164430 .unused,
......@@ -158956,7 +164435,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
158956164435 .unused,
158957164436 .unused,
158958164437 },
158959 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },
164438 .dst_temps = .{ .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
158960164439 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
158961164440 .each = .{ .once = &.{
158962164441 .{ ._, ._, .mov, .tmp0d, .sia(-32, .src0, .add_unaligned_size), ._, ._ },
......@@ -158976,7 +164455,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
158976164455 .call_frame = .{ .alignment = .@"16" },
158977164456 .extra_temps = .{
158978164457 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
158979 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
164458 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
158980164459 .{ .type = .usize, .kind = .{ .extern_func = "__multf3" } },
158981164460 .unused,
158982164461 .unused,
......@@ -158987,7 +164466,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
158987164466 .unused,
158988164467 .unused,
158989164468 },
158990 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },
164469 .dst_temps = .{ .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
158991164470 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
158992164471 .each = .{ .once = &.{
158993164472 .{ ._, ._, .mov, .tmp0d, .sia(-32, .src0, .add_unaligned_size), ._, ._ },
......@@ -159007,7 +164486,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
159007164486 .call_frame = .{ .alignment = .@"16" },
159008164487 .extra_temps = .{
159009164488 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
159010 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
164489 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
159011164490 .{ .type = .usize, .kind = .{ .extern_func = "__multf3" } },
159012164491 .unused,
159013164492 .unused,
......@@ -159018,7 +164497,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
159018164497 .unused,
159019164498 .unused,
159020164499 },
159021 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },
164500 .dst_temps = .{ .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
159022164501 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
159023164502 .each = .{ .once = &.{
159024164503 .{ ._, ._, .mov, .tmp0d, .sia(-32, .src0, .add_unaligned_size), ._, ._ },
......@@ -159040,7 +164519,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
159040164519 };
159041164520 try res[0].finish(inst, &.{reduce.operand}, &ops, cg);
159042164521 },
159043 .splat => |air_tag| if (use_old) try cg.airSplat(inst) else fallback: {
164522 .splat => |air_tag| fallback: {
159044164523 const ty_op = air_datas[@intFromEnum(inst)].ty_op;
159045164524 if (cg.typeOf(ty_op.operand).toIntern() == .bool_type) break :fallback try cg.airSplat(inst);
159046164525 var ops = try cg.tempsFromOperands(inst, .{ty_op.operand});
......@@ -160345,16 +165824,6 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
160345165824 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
160346165825 .{ ._, ._nb, .j, .@"0b", ._, ._, ._ },
160347165826 } },
160348 }, .{
160349 .required_features = .{ .sse, null, null, null },
160350 .dst_constraints = .{ .{ .scalar = .{ .of = .xword, .is = .xword } }, .any },
160351 .src_constraints = .{ .{ .int_or_float = .xword }, .any, .any },
160352 .patterns = &.{
160353 .{ .src = .{ .mut_mem, .none, .none } },
160354 .{ .src = .{ .to_mut_sse, .none, .none } },
160355 },
160356 .dst_temps = .{ .{ .ref = .src0 }, .unused },
160357 .each = .{ .once = &.{} },
160358165827 }, .{
160359165828 .required_features = .{ .avx2, null, null, null },
160360165829 .dst_constraints = .{ .{ .scalar = .{ .of = .yword, .is = .xword } }, .any },
......@@ -160592,16 +166061,6 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
160592166061 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
160593166062 .{ ._, ._nb, .j, .@"0b", ._, ._, ._ },
160594166063 } },
160595 }, .{
160596 .required_features = .{ .@"64bit", .sse, null, null },
160597 .dst_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },
160598 .src_constraints = .{ .{ .float = .tbyte }, .any, .any },
160599 .patterns = &.{
160600 .{ .src = .{ .mut_mem, .none, .none } },
160601 .{ .src = .{ .to_mut_sse, .none, .none } },
160602 },
160603 .dst_temps = .{ .{ .ref = .src0 }, .unused },
160604 .each = .{ .once = &.{} },
160605166064 }, .{
160606166065 .required_features = .{ .@"64bit", .avx2, null, null },
160607166066 .dst_constraints = .{ .{ .scalar_float = .{ .of = .yword, .is = .tbyte } }, .any },
......@@ -160859,11 +166318,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
160859166318
160860166319 .memset => try cg.airMemset(inst, false),
160861166320 .memset_safe => try cg.airMemset(inst, true),
160862 .memcpy, .memmove => |air_tag| if (use_old) switch (air_tag) {
160863 else => unreachable,
160864 .memcpy => try cg.airMemcpy(inst),
160865 .memmove => return cg.fail("TODO implement airMemmove for {}", .{cg.target.cpu.arch}),
160866 } else {
166321 .memcpy, .memmove => |air_tag| {
160867166322 const bin_op = air_datas[@intFromEnum(inst)].bin_op;
160868166323 var ops = try cg.tempsFromOperands(inst, .{ bin_op.lhs, bin_op.rhs }) ++ .{undefined};
160869166324 ops[2] = ops[0].getByteLen(cg) catch |err| switch (err) {
......@@ -160882,9 +166337,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
160882166337 inline .memcpy, .memmove => |symbol| comptime &.{.{
160883166338 .patterns = &.{
160884166339 .{ .src = .{
160885 .{ .to_param_gpr = .{ .cc = .ccc, .at = 0 } },
160886 .{ .to_param_gpr = .{ .cc = .ccc, .at = 1 } },
160887 .{ .to_param_gpr = .{ .cc = .ccc, .at = 2 } },
166340 .{ .to_param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } },
166341 .{ .to_param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } },
166342 .{ .to_param_gpr = .{ .cc = .ccc, .after = 2, .at = 2 } },
160888166343 } },
160889166344 },
160890166345 .call_frame = .{ .alignment = .@"16" },
......@@ -160926,7 +166381,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
160926166381 .atomic_store_release => try cg.airAtomicStore(inst, .release),
160927166382 .atomic_store_seq_cst => try cg.airAtomicStore(inst, .seq_cst),
160928166383 .atomic_rmw => try cg.airAtomicRmw(inst),
160929 .is_named_enum_value => |air_tag| if (use_old) try cg.airTagName(inst, true) else {
166384 .is_named_enum_value => |air_tag| {
160930166385 const un_op = air_datas[@intFromEnum(inst)].un_op;
160931166386 var ops = try cg.tempsFromOperands(inst, .{un_op});
160932166387 var res: [1]Temp = undefined;
......@@ -160934,7 +166389,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
160934166389 .required_features = .{ .avx, null, null, null },
160935166390 .src_constraints = .{ .{ .int = .gpr }, .any, .any },
160936166391 .patterns = &.{
160937 .{ .src = .{ .{ .to_param_gpr = .{ .cc = .zigcc, .at = 0 } }, .none, .none } },
166392 .{ .src = .{ .{ .to_param_gpr = .{ .cc = .zigcc, .after = 0, .at = 0 } }, .none, .none } },
160938166393 },
160939166394 .call_frame = .{ .alignment = .@"32" },
160940166395 .extra_temps = .{
......@@ -160960,7 +166415,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
160960166415 .required_features = .{ .sse, null, null, null },
160961166416 .src_constraints = .{ .{ .int = .gpr }, .any, .any },
160962166417 .patterns = &.{
160963 .{ .src = .{ .{ .to_param_gpr = .{ .cc = .zigcc, .at = 0 } }, .none, .none } },
166418 .{ .src = .{ .{ .to_param_gpr = .{ .cc = .zigcc, .after = 0, .at = 0 } }, .none, .none } },
160964166419 },
160965166420 .call_frame = .{ .alignment = .@"16" },
160966166421 .extra_temps = .{
......@@ -160985,7 +166440,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
160985166440 }, .{
160986166441 .src_constraints = .{ .{ .int = .gpr }, .any, .any },
160987166442 .patterns = &.{
160988 .{ .src = .{ .{ .to_param_gpr = .{ .cc = .zigcc, .at = 0 } }, .none, .none } },
166443 .{ .src = .{ .{ .to_param_gpr = .{ .cc = .zigcc, .after = 0, .at = 0 } }, .none, .none } },
160989166444 },
160990166445 .call_frame = .{ .alignment = .@"8" },
160991166446 .extra_temps = .{
......@@ -161017,7 +166472,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
161017166472 };
161018166473 try res[0].finish(inst, &.{un_op}, &ops, cg);
161019166474 },
161020 .tag_name => |air_tag| if (use_old) try cg.airTagName(inst, false) else {
166475 .tag_name => |air_tag| {
161021166476 const un_op = air_datas[@intFromEnum(inst)].un_op;
161022166477 var ops = try cg.tempsFromOperands(inst, .{un_op});
161023166478 var res: [1]Temp = undefined;
......@@ -161025,7 +166480,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
161025166480 .required_features = .{ .avx, null, null, null },
161026166481 .src_constraints = .{ .{ .int = .gpr }, .any, .any },
161027166482 .patterns = &.{
161028 .{ .src = .{ .{ .to_param_gpr = .{ .cc = .zigcc, .at = 0 } }, .none, .none } },
166483 .{ .src = .{ .{ .to_param_gpr = .{ .cc = .zigcc, .after = 0, .at = 0 } }, .none, .none } },
161029166484 },
161030166485 .call_frame = .{ .alignment = .@"32" },
161031166486 .extra_temps = .{
......@@ -161041,7 +166496,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
161041166496 .unused,
161042166497 .unused,
161043166498 },
161044 .dst_temps = .{ .{ .ret_gpr = .{ .cc = .zigcc, .at = 1 } }, .unused },
166499 .dst_temps = .{ .{ .ret_gpr = .{ .cc = .zigcc, .after = 1, .at = 1 } }, .unused },
161045166500 .clobbers = .{ .eflags = true, .caller_preserved = .zigcc },
161046166501 .each = .{ .once = &.{
161047166502 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
......@@ -161050,7 +166505,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
161050166505 .required_features = .{ .sse, null, null, null },
161051166506 .src_constraints = .{ .{ .int = .gpr }, .any, .any },
161052166507 .patterns = &.{
161053 .{ .src = .{ .{ .to_param_gpr = .{ .cc = .zigcc, .at = 0 } }, .none, .none } },
166508 .{ .src = .{ .{ .to_param_gpr = .{ .cc = .zigcc, .after = 0, .at = 0 } }, .none, .none } },
161054166509 },
161055166510 .call_frame = .{ .alignment = .@"16" },
161056166511 .extra_temps = .{
......@@ -161066,7 +166521,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
161066166521 .unused,
161067166522 .unused,
161068166523 },
161069 .dst_temps = .{ .{ .ret_gpr = .{ .cc = .zigcc, .at = 1 } }, .unused },
166524 .dst_temps = .{ .{ .ret_gpr = .{ .cc = .zigcc, .after = 1, .at = 1 } }, .unused },
161070166525 .clobbers = .{ .eflags = true, .caller_preserved = .zigcc },
161071166526 .each = .{ .once = &.{
161072166527 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
......@@ -161074,7 +166529,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
161074166529 }, .{
161075166530 .src_constraints = .{ .{ .int = .gpr }, .any, .any },
161076166531 .patterns = &.{
161077 .{ .src = .{ .{ .to_param_gpr = .{ .cc = .zigcc, .at = 0 } }, .none, .none } },
166532 .{ .src = .{ .{ .to_param_gpr = .{ .cc = .zigcc, .after = 0, .at = 0 } }, .none, .none } },
161078166533 },
161079166534 .call_frame = .{ .alignment = .@"8" },
161080166535 .extra_temps = .{
......@@ -161090,7 +166545,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
161090166545 .unused,
161091166546 .unused,
161092166547 },
161093 .dst_temps = .{ .{ .ret_gpr = .{ .cc = .zigcc, .at = 1 } }, .unused },
166548 .dst_temps = .{ .{ .ret_gpr = .{ .cc = .zigcc, .after = 1, .at = 1 } }, .unused },
161094166549 .clobbers = .{ .eflags = true, .caller_preserved = .zigcc },
161095166550 .each = .{ .once = &.{
161096166551 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
......@@ -161106,7 +166561,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
161106166561 try ops[0].toPair(&res[0], cg);
161107166562 try res[0].finish(inst, &.{un_op}, &ops, cg);
161108166563 },
161109 .error_name => |air_tag| if (use_old) try cg.airErrorName(inst) else {
166564 .error_name => |air_tag| {
161110166565 const un_op = air_datas[@intFromEnum(inst)].un_op;
161111166566 var ops = try cg.tempsFromOperands(inst, .{un_op});
161112166567 var res: [2]Temp = undefined;
......@@ -161214,7 +166669,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
161214166669 };
161215166670 try res[0].finish(inst, &.{un_op}, &ops, cg);
161216166671 },
161217 .error_set_has_value => |air_tag| if (use_old) try cg.airErrorSetHasValue(inst) else {
166672 .error_set_has_value => |air_tag| {
161218166673 const ty_op = air_datas[@intFromEnum(inst)].ty_op;
161219166674 var ops = try cg.tempsFromOperands(inst, .{ty_op.operand}) ++ .{try cg.tempInit(ty_op.ty.toType(), .none)};
161220166675 var res: [1]Temp = undefined;
......@@ -161222,7 +166677,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
161222166677 .required_features = .{ .avx, null, null, null },
161223166678 .src_constraints = .{ .{ .int = .gpr }, .any, .any },
161224166679 .patterns = &.{
161225 .{ .src = .{ .{ .to_param_gpr = .{ .cc = .zigcc, .at = 0 } }, .none, .none } },
166680 .{ .src = .{ .{ .to_param_gpr = .{ .cc = .zigcc, .after = 0, .at = 0 } }, .none, .none } },
161226166681 },
161227166682 .call_frame = .{ .alignment = .@"32" },
161228166683 .extra_temps = .{
......@@ -161248,7 +166703,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
161248166703 .required_features = .{ .sse, null, null, null },
161249166704 .src_constraints = .{ .{ .int = .gpr }, .any, .any },
161250166705 .patterns = &.{
161251 .{ .src = .{ .{ .to_param_gpr = .{ .cc = .zigcc, .at = 0 } }, .none, .none } },
166706 .{ .src = .{ .{ .to_param_gpr = .{ .cc = .zigcc, .after = 0, .at = 0 } }, .none, .none } },
161252166707 },
161253166708 .call_frame = .{ .alignment = .@"16" },
161254166709 .extra_temps = .{
......@@ -161273,7 +166728,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
161273166728 }, .{
161274166729 .src_constraints = .{ .{ .int = .gpr }, .any, .any },
161275166730 .patterns = &.{
161276 .{ .src = .{ .{ .to_param_gpr = .{ .cc = .zigcc, .at = 0 } }, .none, .none } },
166731 .{ .src = .{ .{ .to_param_gpr = .{ .cc = .zigcc, .after = 0, .at = 0 } }, .none, .none } },
161277166732 },
161278166733 .call_frame = .{ .alignment = .@"8" },
161279166734 .extra_temps = .{
......@@ -161306,7 +166761,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
161306166761 for (ops[1..]) |op| try op.die(cg);
161307166762 try res[0].finish(inst, &.{ty_op.operand}, ops[0..1], cg);
161308166763 },
161309 .aggregate_init => |air_tag| if (use_old) try cg.airAggregateInit(inst) else fallback: {
166764 .aggregate_init => |air_tag| fallback: {
161310166765 const ty_pl = air_datas[@intFromEnum(inst)].ty_pl;
161311166766 const agg_ty = ty_pl.ty.toType();
161312166767 if ((agg_ty.isVector(zcu) and agg_ty.childType(zcu).toIntern() == .bool_type) or
......@@ -161376,7 +166831,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
161376166831 }
161377166832 try res.finish(inst, &.{}, &.{}, cg);
161378166833 },
161379 .union_init => if (use_old) try cg.airUnionInit(inst) else {
166834 .union_init => {
161380166835 const ty_pl = air_datas[@intFromEnum(inst)].ty_pl;
161381166836 const union_init = cg.air.extraData(Air.UnionInit, ty_pl.payload).data;
161382166837 const union_ty = ty_pl.ty.toType();
......@@ -161425,7 +166880,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
161425166880 const res = try cg.tempInit(.void, .none);
161426166881 try res.finish(inst, &.{prefetch.ptr}, &ops, cg);
161427166882 },
161428 .mul_add => |air_tag| if (use_old) try cg.airMulAdd(inst) else {
166883 .mul_add => |air_tag| {
161429166884 const pl_op = air_datas[@intFromEnum(inst)].pl_op;
161430166885 const bin_op = cg.air.extraData(Air.Bin, pl_op.payload).data;
161431166886 var ops = try cg.tempsFromOperands(inst, .{ bin_op.lhs, bin_op.rhs, pl_op.operand });
......@@ -161469,7 +166924,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
161469166924 .{ .scalar_float = .{ .of = .word, .is = .word } },
161470166925 },
161471166926 .patterns = &.{
161472 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .{ .to_reg = .xmm2 } } },
166927 .{ .src = .{
166928 .{ .to_param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } },
166929 .{ .to_param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } },
166930 .{ .to_param_sse = .{ .cc = .ccc, .after = 2, .at = 2 } },
166931 } },
161473166932 },
161474166933 .call_frame = .{ .alignment = .@"16" },
161475166934 .extra_temps = .{
......@@ -161577,7 +167036,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
161577167036 .{ .src = .{ .to_mem, .to_mem, .to_mem } },
161578167037 },
161579167038 .extra_temps = .{
161580 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
167039 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
161581167040 .{ .type = .vector_8_f16, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } },
161582167041 .{ .type = .vector_8_f16, .kind = .{ .mut_rc = .{ .ref = .src2, .rc = .sse } } },
161583167042 .{ .type = .vector_8_f16, .kind = .{ .mut_rc = .{ .ref = .src2, .rc = .sse } } },
......@@ -161591,14 +167050,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
161591167050 },
161592167051 .dst_temps = .{ .mem, .unused },
161593167052 .each = .{ .once = &.{
161594 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
161595 .{ .@"0:", .v_ps, .cvtph2, .tmp1y, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
161596 .{ ._, .v_ps, .cvtph2, .tmp2y, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ },
161597 .{ ._, .v_ps, .cvtph2, .tmp3y, .memia(.src2x, .tmp0, .add_unaligned_size), ._, ._ },
167053 .{ ._, ._, .mov, .tmp0d, .sia(-16, .src0, .add_size), ._, ._ },
167054 .{ .@"0:", .v_ps, .cvtph2, .tmp1y, .memi(.src0x, .tmp0), ._, ._ },
167055 .{ ._, .v_ps, .cvtph2, .tmp2y, .memi(.src1x, .tmp0), ._, ._ },
167056 .{ ._, .v_ps, .cvtph2, .tmp3y, .memi(.src2x, .tmp0), ._, ._ },
161598167057 .{ ._, .v_ps, .fmadd213, .tmp1y, .tmp2y, .tmp3y, ._ },
161599 .{ ._, .v_, .cvtps2ph, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1y, .rm(.{}), ._ },
161600 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
161601 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
167058 .{ ._, .v_, .cvtps2ph, .memi(.dst0x, .tmp0), .tmp1y, .rm(.{}), ._ },
167059 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
167060 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
161602167061 } },
161603167062 }, .{
161604167063 .required_features = .{ .avx, null, null, null },
......@@ -161612,10 +167071,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
161612167071 },
161613167072 .call_frame = .{ .alignment = .@"16" },
161614167073 .extra_temps = .{
161615 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
161616 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
161617 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
161618 .{ .type = .f16, .kind = .{ .reg = .xmm2 } },
167074 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
167075 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
167076 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
167077 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 2, .at = 2 } } },
161619167078 .{ .type = .usize, .kind = .{ .extern_func = "__fmah" } },
161620167079 .unused,
161621167080 .unused,
......@@ -161627,15 +167086,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
161627167086 .dst_temps = .{ .mem, .unused },
161628167087 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
161629167088 .each = .{ .once = &.{
161630 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
167089 .{ ._, ._, .mov, .tmp0d, .sia(-2, .src0, .add_unaligned_size), ._, ._ },
161631167090 .{ .@"0:", .vp_, .xor, .tmp3x, .tmp3x, .tmp3x, ._ },
161632 .{ ._, .vp_w, .insr, .tmp1x, .tmp3x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0) },
161633 .{ ._, .vp_w, .insr, .tmp2x, .tmp3x, .memia(.src1w, .tmp0, .add_unaligned_size), .ui(0) },
161634 .{ ._, .vp_w, .insr, .tmp3x, .tmp3x, .memia(.src2w, .tmp0, .add_unaligned_size), .ui(0) },
167091 .{ ._, .vp_w, .insr, .tmp1x, .tmp3x, .memi(.src0w, .tmp0), .ui(0) },
167092 .{ ._, .vp_w, .insr, .tmp2x, .tmp3x, .memi(.src1w, .tmp0), .ui(0) },
167093 .{ ._, .vp_w, .insr, .tmp3x, .tmp3x, .memi(.src2w, .tmp0), .ui(0) },
161635167094 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
161636 .{ ._, .vp_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ },
161637 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
161638 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
167095 .{ ._, .vp_w, .extr, .memi(.dst0w, .tmp0), .tmp1x, .ui(0), ._ },
167096 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
167097 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
161639167098 } },
161640167099 }, .{
161641167100 .required_features = .{ .sse4_1, null, null, null },
......@@ -161649,10 +167108,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
161649167108 },
161650167109 .call_frame = .{ .alignment = .@"16" },
161651167110 .extra_temps = .{
161652 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
161653 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
161654 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
161655 .{ .type = .f16, .kind = .{ .reg = .xmm2 } },
167111 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
167112 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
167113 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
167114 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 2, .at = 2 } } },
161656167115 .{ .type = .usize, .kind = .{ .extern_func = "__fmah" } },
161657167116 .unused,
161658167117 .unused,
......@@ -161664,17 +167123,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
161664167123 .dst_temps = .{ .mem, .unused },
161665167124 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
161666167125 .each = .{ .once = &.{
161667 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
167126 .{ ._, ._, .mov, .tmp0d, .sia(-2, .src0, .add_unaligned_size), ._, ._ },
161668167127 .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ },
161669167128 .{ ._, .p_, .xor, .tmp2x, .tmp2x, ._, ._ },
161670167129 .{ ._, .p_, .xor, .tmp3x, .tmp3x, ._, ._ },
161671 .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0), ._ },
161672 .{ ._, .p_w, .insr, .tmp2x, .memia(.src1w, .tmp0, .add_unaligned_size), .ui(0), ._ },
161673 .{ ._, .p_w, .insr, .tmp3x, .memia(.src2w, .tmp0, .add_unaligned_size), .ui(0), ._ },
167130 .{ ._, .p_w, .insr, .tmp1x, .memi(.src0w, .tmp0), .ui(0), ._ },
167131 .{ ._, .p_w, .insr, .tmp2x, .memi(.src1w, .tmp0), .ui(0), ._ },
167132 .{ ._, .p_w, .insr, .tmp3x, .memi(.src2w, .tmp0), .ui(0), ._ },
161674167133 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
161675 .{ ._, .p_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ },
161676 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
161677 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
167134 .{ ._, .p_w, .extr, .memi(.dst0w, .tmp0), .tmp1x, .ui(0), ._ },
167135 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
167136 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
161678167137 } },
161679167138 }, .{
161680167139 .required_features = .{ .sse2, null, null, null },
......@@ -161688,10 +167147,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
161688167147 },
161689167148 .call_frame = .{ .alignment = .@"16" },
161690167149 .extra_temps = .{
161691 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
161692 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
161693 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
161694 .{ .type = .f16, .kind = .{ .reg = .xmm2 } },
167150 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
167151 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
167152 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
167153 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 2, .at = 2 } } },
161695167154 .{ .type = .usize, .kind = .{ .extern_func = "__fmah" } },
161696167155 .{ .type = .f16, .kind = .{ .reg = .ax } },
161697167156 .unused,
......@@ -161703,18 +167162,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
161703167162 .dst_temps = .{ .mem, .unused },
161704167163 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
161705167164 .each = .{ .once = &.{
161706 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
167165 .{ ._, ._, .mov, .tmp0d, .sia(-2, .src0, .add_unaligned_size), ._, ._ },
161707167166 .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ },
161708167167 .{ ._, .p_, .xor, .tmp2x, .tmp2x, ._, ._ },
161709167168 .{ ._, .p_, .xor, .tmp3x, .tmp3x, ._, ._ },
161710 .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0), ._ },
161711 .{ ._, .p_w, .insr, .tmp2x, .memia(.src1w, .tmp0, .add_unaligned_size), .ui(0), ._ },
161712 .{ ._, .p_w, .insr, .tmp3x, .memia(.src2w, .tmp0, .add_unaligned_size), .ui(0), ._ },
167169 .{ ._, .p_w, .insr, .tmp1x, .memi(.src0w, .tmp0), .ui(0), ._ },
167170 .{ ._, .p_w, .insr, .tmp2x, .memi(.src1w, .tmp0), .ui(0), ._ },
167171 .{ ._, .p_w, .insr, .tmp3x, .memi(.src2w, .tmp0), .ui(0), ._ },
161713167172 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
161714167173 .{ ._, .p_w, .extr, .tmp5d, .tmp1x, .ui(0), ._ },
161715 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp5w, ._, ._ },
161716 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
161717 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
167174 .{ ._, ._, .mov, .memi(.dst0w, .tmp0), .tmp5w, ._, ._ },
167175 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
167176 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
161718167177 } },
161719167178 }, .{
161720167179 .required_features = .{ .sse, null, null, null },
......@@ -161728,12 +167187,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
161728167187 },
161729167188 .call_frame = .{ .alignment = .@"16" },
161730167189 .extra_temps = .{
161731 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
167190 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
161732167191 .{ .type = .f16, .kind = .{ .reg = .ax } },
161733167192 .{ .type = .f32, .kind = .mem },
161734 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
161735 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
161736 .{ .type = .f16, .kind = .{ .reg = .xmm2 } },
167193 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
167194 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
167195 .{ .type = .f16, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 2, .at = 2 } } },
161737167196 .{ .type = .usize, .kind = .{ .extern_func = "__fmah" } },
161738167197 .unused,
161739167198 .unused,
......@@ -161743,22 +167202,22 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
161743167202 .dst_temps = .{ .mem, .unused },
161744167203 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
161745167204 .each = .{ .once = &.{
161746 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
161747 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
167205 .{ ._, ._, .mov, .tmp0d, .sia(-2, .src0, .add_unaligned_size), ._, ._ },
167206 .{ .@"0:", ._, .movzx, .tmp1d, .memi(.src0w, .tmp0), ._, ._ },
161748167207 .{ ._, ._, .mov, .mem(.tmp2d), .tmp1d, ._, ._ },
161749167208 .{ ._, ._ss, .mov, .tmp3x, .mem(.tmp2d), ._, ._ },
161750 .{ ._, ._, .movzx, .tmp1d, .memia(.src1w, .tmp0, .add_unaligned_size), ._, ._ },
167209 .{ ._, ._, .movzx, .tmp1d, .memi(.src1w, .tmp0), ._, ._ },
161751167210 .{ ._, ._, .mov, .mem(.tmp2d), .tmp1d, ._, ._ },
161752167211 .{ ._, ._ss, .mov, .tmp4x, .mem(.tmp2d), ._, ._ },
161753 .{ ._, ._, .movzx, .tmp1d, .memia(.src2w, .tmp0, .add_unaligned_size), ._, ._ },
167212 .{ ._, ._, .movzx, .tmp1d, .memi(.src2w, .tmp0), ._, ._ },
161754167213 .{ ._, ._, .mov, .mem(.tmp2d), .tmp1d, ._, ._ },
161755167214 .{ ._, ._ss, .mov, .tmp5x, .mem(.tmp2d), ._, ._ },
161756167215 .{ ._, ._, .call, .tmp6d, ._, ._, ._ },
161757167216 .{ ._, ._ss, .mov, .mem(.tmp2d), .tmp3x, ._, ._ },
161758167217 .{ ._, ._, .mov, .tmp1d, .mem(.tmp2d), ._, ._ },
161759 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
161760 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
161761 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
167218 .{ ._, ._, .mov, .memi(.dst0w, .tmp0), .tmp1w, ._, ._ },
167219 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
167220 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
161762167221 } },
161763167222 }, .{
161764167223 .required_features = .{ .fma, null, null, null },
......@@ -161818,7 +167277,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
161818167277 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
161819167278 },
161820167279 .patterns = &.{
161821 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .{ .to_reg = .xmm2 } } },
167280 .{ .src = .{
167281 .{ .to_param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } },
167282 .{ .to_param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } },
167283 .{ .to_param_sse = .{ .cc = .ccc, .after = 2, .at = 2 } },
167284 } },
161822167285 },
161823167286 .call_frame = .{ .alignment = .@"16" },
161824167287 .extra_temps = .{
......@@ -161950,7 +167413,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
161950167413 .{ .src = .{ .to_mem, .to_mem, .to_mem } },
161951167414 },
161952167415 .extra_temps = .{
161953 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
167416 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
161954167417 .{ .type = .vector_8_f32, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } },
161955167418 .{ .type = .vector_8_f32, .kind = .{ .mut_rc = .{ .ref = .src2, .rc = .sse } } },
161956167419 .unused,
......@@ -161964,13 +167427,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
161964167427 },
161965167428 .dst_temps = .{ .mem, .unused },
161966167429 .each = .{ .once = &.{
161967 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
161968 .{ .@"0:", .v_ps, .mova, .tmp1y, .memia(.src0y, .tmp0, .add_unaligned_size), ._, ._ },
161969 .{ ._, .v_ps, .mova, .tmp2y, .memia(.src1y, .tmp0, .add_unaligned_size), ._, ._ },
161970 .{ ._, .v_ps, .fmadd213, .tmp1y, .tmp2y, .memia(.src2y, .tmp0, .add_unaligned_size), ._ },
161971 .{ ._, .v_ps, .mova, .memia(.dst0y, .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },
161972 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
161973 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
167430 .{ ._, ._, .mov, .tmp0d, .sia(-32, .src0, .add_size), ._, ._ },
167431 .{ .@"0:", .v_ps, .mova, .tmp1y, .memi(.src0y, .tmp0), ._, ._ },
167432 .{ ._, .v_ps, .mova, .tmp2y, .memi(.src1y, .tmp0), ._, ._ },
167433 .{ ._, .v_ps, .fmadd213, .tmp1y, .tmp2y, .memi(.src2y, .tmp0), ._ },
167434 .{ ._, .v_ps, .mova, .memi(.dst0y, .tmp0), .tmp1y, ._, ._ },
167435 .{ ._, ._, .sub, .tmp0d, .si(32), ._, ._ },
167436 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
161974167437 } },
161975167438 }, .{
161976167439 .required_features = .{ .avx, null, null, null },
......@@ -161984,10 +167447,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
161984167447 },
161985167448 .call_frame = .{ .alignment = .@"16" },
161986167449 .extra_temps = .{
161987 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
161988 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
161989 .{ .type = .f32, .kind = .{ .reg = .xmm1 } },
161990 .{ .type = .f32, .kind = .{ .reg = .xmm2 } },
167450 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
167451 .{ .type = .f32, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
167452 .{ .type = .f32, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
167453 .{ .type = .f32, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 2, .at = 2 } } },
161991167454 .{ .type = .usize, .kind = .{ .extern_func = "fmaf" } },
161992167455 .unused,
161993167456 .unused,
......@@ -161999,14 +167462,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
161999167462 .dst_temps = .{ .mem, .unused },
162000167463 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
162001167464 .each = .{ .once = &.{
162002 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
162003 .{ .@"0:", .v_ss, .mov, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
162004 .{ ._, .v_ss, .mov, .tmp2x, .memia(.src1d, .tmp0, .add_unaligned_size), ._, ._ },
162005 .{ ._, .v_ss, .mov, .tmp3x, .memia(.src2d, .tmp0, .add_unaligned_size), ._, ._ },
167465 .{ ._, ._, .mov, .tmp0d, .sia(-4, .src0, .add_unaligned_size), ._, ._ },
167466 .{ .@"0:", .v_ss, .mov, .tmp1x, .memi(.src0d, .tmp0), ._, ._ },
167467 .{ ._, .v_ss, .mov, .tmp2x, .memi(.src1d, .tmp0), ._, ._ },
167468 .{ ._, .v_ss, .mov, .tmp3x, .memi(.src2d, .tmp0), ._, ._ },
162006167469 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
162007 .{ ._, .v_ss, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
162008 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
162009 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
167470 .{ ._, .v_ss, .mov, .memi(.dst0d, .tmp0), .tmp1x, ._, ._ },
167471 .{ ._, ._, .sub, .tmp0d, .si(4), ._, ._ },
167472 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
162010167473 } },
162011167474 }, .{
162012167475 .required_features = .{ .sse, null, null, null },
......@@ -162020,10 +167483,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
162020167483 },
162021167484 .call_frame = .{ .alignment = .@"16" },
162022167485 .extra_temps = .{
162023 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
162024 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
162025 .{ .type = .f32, .kind = .{ .reg = .xmm1 } },
162026 .{ .type = .f32, .kind = .{ .reg = .xmm2 } },
167486 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
167487 .{ .type = .f32, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
167488 .{ .type = .f32, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
167489 .{ .type = .f32, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 2, .at = 2 } } },
162027167490 .{ .type = .usize, .kind = .{ .extern_func = "fmaf" } },
162028167491 .unused,
162029167492 .unused,
......@@ -162035,14 +167498,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
162035167498 .dst_temps = .{ .mem, .unused },
162036167499 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
162037167500 .each = .{ .once = &.{
162038 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
162039 .{ .@"0:", ._ss, .mov, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
162040 .{ ._, ._ss, .mov, .tmp2x, .memia(.src1d, .tmp0, .add_unaligned_size), ._, ._ },
162041 .{ ._, ._ss, .mov, .tmp3x, .memia(.src2d, .tmp0, .add_unaligned_size), ._, ._ },
167501 .{ ._, ._, .mov, .tmp0d, .sia(-4, .src0, .add_unaligned_size), ._, ._ },
167502 .{ .@"0:", ._ss, .mov, .tmp1x, .memi(.src0d, .tmp0), ._, ._ },
167503 .{ ._, ._ss, .mov, .tmp2x, .memi(.src1d, .tmp0), ._, ._ },
167504 .{ ._, ._ss, .mov, .tmp3x, .memi(.src2d, .tmp0), ._, ._ },
162042167505 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
162043 .{ ._, ._ss, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
162044 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
162045 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
167506 .{ ._, ._ss, .mov, .memi(.dst0d, .tmp0), .tmp1x, ._, ._ },
167507 .{ ._, ._, .sub, .tmp0d, .si(4), ._, ._ },
167508 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
162046167509 } },
162047167510 }, .{
162048167511 .required_features = .{ .fma, null, null, null },
......@@ -162102,7 +167565,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
162102167565 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
162103167566 },
162104167567 .patterns = &.{
162105 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .{ .to_reg = .xmm2 } } },
167568 .{ .src = .{
167569 .{ .to_param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } },
167570 .{ .to_param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } },
167571 .{ .to_param_sse = .{ .cc = .ccc, .after = 2, .at = 2 } },
167572 } },
162106167573 },
162107167574 .call_frame = .{ .alignment = .@"16" },
162108167575 .extra_temps = .{
......@@ -162234,7 +167701,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
162234167701 .{ .src = .{ .to_mem, .to_mem, .to_mem } },
162235167702 },
162236167703 .extra_temps = .{
162237 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
167704 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
162238167705 .{ .type = .vector_4_f64, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } },
162239167706 .{ .type = .vector_4_f64, .kind = .{ .mut_rc = .{ .ref = .src2, .rc = .sse } } },
162240167707 .unused,
......@@ -162248,13 +167715,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
162248167715 },
162249167716 .dst_temps = .{ .mem, .unused },
162250167717 .each = .{ .once = &.{
162251 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
162252 .{ .@"0:", .v_pd, .mova, .tmp1y, .memia(.src0y, .tmp0, .add_unaligned_size), ._, ._ },
162253 .{ ._, .v_pd, .mova, .tmp2y, .memia(.src1y, .tmp0, .add_unaligned_size), ._, ._ },
162254 .{ ._, .v_pd, .fmadd213, .tmp1y, .tmp2y, .memia(.src2y, .tmp0, .add_unaligned_size), ._ },
162255 .{ ._, .v_pd, .mova, .memia(.dst0y, .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },
162256 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
162257 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
167718 .{ ._, ._, .mov, .tmp0d, .sia(-32, .src0, .add_size), ._, ._ },
167719 .{ .@"0:", .v_pd, .mova, .tmp1y, .memi(.src0y, .tmp0), ._, ._ },
167720 .{ ._, .v_pd, .mova, .tmp2y, .memi(.src1y, .tmp0), ._, ._ },
167721 .{ ._, .v_pd, .fmadd213, .tmp1y, .tmp2y, .memi(.src2y, .tmp0), ._ },
167722 .{ ._, .v_pd, .mova, .memi(.dst0y, .tmp0), .tmp1y, ._, ._ },
167723 .{ ._, ._, .sub, .tmp0d, .si(32), ._, ._ },
167724 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
162258167725 } },
162259167726 }, .{
162260167727 .required_features = .{ .avx, null, null, null },
......@@ -162268,10 +167735,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
162268167735 },
162269167736 .call_frame = .{ .alignment = .@"16" },
162270167737 .extra_temps = .{
162271 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
162272 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
162273 .{ .type = .f64, .kind = .{ .reg = .xmm1 } },
162274 .{ .type = .f64, .kind = .{ .reg = .xmm2 } },
167738 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
167739 .{ .type = .f64, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
167740 .{ .type = .f64, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
167741 .{ .type = .f64, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 2, .at = 2 } } },
162275167742 .{ .type = .usize, .kind = .{ .extern_func = "fma" } },
162276167743 .unused,
162277167744 .unused,
......@@ -162283,14 +167750,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
162283167750 .dst_temps = .{ .mem, .unused },
162284167751 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
162285167752 .each = .{ .once = &.{
162286 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
162287 .{ .@"0:", .v_sd, .mov, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
162288 .{ ._, .v_sd, .mov, .tmp2x, .memia(.src1q, .tmp0, .add_unaligned_size), ._, ._ },
162289 .{ ._, .v_sd, .mov, .tmp3x, .memia(.src2q, .tmp0, .add_unaligned_size), ._, ._ },
167753 .{ ._, ._, .mov, .tmp0d, .sia(-8, .src0, .add_unaligned_size), ._, ._ },
167754 .{ .@"0:", .v_sd, .mov, .tmp1x, .memi(.src0q, .tmp0), ._, ._ },
167755 .{ ._, .v_sd, .mov, .tmp2x, .memi(.src1q, .tmp0), ._, ._ },
167756 .{ ._, .v_sd, .mov, .tmp3x, .memi(.src2q, .tmp0), ._, ._ },
162290167757 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
162291 .{ ._, .v_sd, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
162292 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
162293 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
167758 .{ ._, .v_sd, .mov, .memi(.dst0q, .tmp0), .tmp1x, ._, ._ },
167759 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
167760 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
162294167761 } },
162295167762 }, .{
162296167763 .required_features = .{ .sse2, null, null, null },
......@@ -162304,10 +167771,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
162304167771 },
162305167772 .call_frame = .{ .alignment = .@"16" },
162306167773 .extra_temps = .{
162307 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
162308 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
162309 .{ .type = .f64, .kind = .{ .reg = .xmm1 } },
162310 .{ .type = .f64, .kind = .{ .reg = .xmm2 } },
167774 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
167775 .{ .type = .f64, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
167776 .{ .type = .f64, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
167777 .{ .type = .f64, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 2, .at = 2 } } },
162311167778 .{ .type = .usize, .kind = .{ .extern_func = "fma" } },
162312167779 .unused,
162313167780 .unused,
......@@ -162319,14 +167786,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
162319167786 .dst_temps = .{ .mem, .unused },
162320167787 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
162321167788 .each = .{ .once = &.{
162322 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
162323 .{ .@"0:", ._sd, .mov, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
162324 .{ ._, ._sd, .mov, .tmp2x, .memia(.src1q, .tmp0, .add_unaligned_size), ._, ._ },
162325 .{ ._, ._sd, .mov, .tmp3x, .memia(.src2q, .tmp0, .add_unaligned_size), ._, ._ },
167789 .{ ._, ._, .mov, .tmp0d, .sia(-8, .src0, .add_unaligned_size), ._, ._ },
167790 .{ .@"0:", ._sd, .mov, .tmp1x, .memi(.src0q, .tmp0), ._, ._ },
167791 .{ ._, ._sd, .mov, .tmp2x, .memi(.src1q, .tmp0), ._, ._ },
167792 .{ ._, ._sd, .mov, .tmp3x, .memi(.src2q, .tmp0), ._, ._ },
162326167793 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
162327 .{ ._, ._sd, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
162328 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
162329 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
167794 .{ ._, ._sd, .mov, .memi(.dst0q, .tmp0), .tmp1x, ._, ._ },
167795 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
167796 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
162330167797 } },
162331167798 }, .{
162332167799 .required_features = .{ .sse, null, null, null },
......@@ -162340,10 +167807,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
162340167807 },
162341167808 .call_frame = .{ .alignment = .@"16" },
162342167809 .extra_temps = .{
162343 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
162344 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
162345 .{ .type = .f64, .kind = .{ .reg = .xmm1 } },
162346 .{ .type = .f64, .kind = .{ .reg = .xmm2 } },
167810 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
167811 .{ .type = .f64, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
167812 .{ .type = .f64, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
167813 .{ .type = .f64, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 2, .at = 2 } } },
162347167814 .{ .type = .usize, .kind = .{ .extern_func = "fma" } },
162348167815 .unused,
162349167816 .unused,
......@@ -162355,19 +167822,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
162355167822 .dst_temps = .{ .mem, .unused },
162356167823 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
162357167824 .each = .{ .once = &.{
162358 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
167825 .{ ._, ._, .mov, .tmp0d, .sia(-8, .src0, .add_unaligned_size), ._, ._ },
162359167826 .{ .@"0:", ._ps, .xor, .tmp1x, .tmp1x, ._, ._ },
162360167827 .{ ._, ._ps, .xor, .tmp2x, .tmp2x, ._, ._ },
162361167828 .{ ._, ._ps, .xor, .tmp3x, .tmp3x, ._, ._ },
162362 .{ ._, ._ps, .movl, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
162363 .{ ._, ._ps, .movl, .tmp2x, .memia(.src1q, .tmp0, .add_unaligned_size), ._, ._ },
162364 .{ ._, ._ps, .movl, .tmp3x, .memia(.src2q, .tmp0, .add_unaligned_size), ._, ._ },
167829 .{ ._, ._ps, .movl, .tmp1x, .memi(.src0q, .tmp0), ._, ._ },
167830 .{ ._, ._ps, .movl, .tmp2x, .memi(.src1q, .tmp0), ._, ._ },
167831 .{ ._, ._ps, .movl, .tmp3x, .memi(.src2q, .tmp0), ._, ._ },
162365167832 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
162366 .{ ._, ._ps, .movl, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
162367 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
162368 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
167833 .{ ._, ._ps, .movl, .memi(.dst0q, .tmp0), .tmp1x, ._, ._ },
167834 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
167835 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
162369167836 } },
162370167837 }, .{
167838 .required_cc_abi = .sysv64,
162371167839 .required_features = .{ .sse, .x87, null, null },
162372167840 .src_constraints = .{
162373167841 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
......@@ -162379,7 +167847,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
162379167847 },
162380167848 .call_frame = .{ .size = 16 * 3, .alignment = .@"16" },
162381167849 .extra_temps = .{
162382 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
167850 .{ .type = .f80, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
162383167851 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
162384167852 .{ .type = .usize, .kind = .{ .extern_func = "__fmax" } },
162385167853 .unused,
......@@ -162403,6 +167871,40 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
162403167871 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
162404167872 } },
162405167873 }, .{
167874 .required_cc_abi = .win64,
167875 .src_constraints = .{
167876 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
167877 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
167878 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
167879 },
167880 .patterns = &.{
167881 .{ .src = .{ .to_mem, .to_mem, .to_mem } },
167882 },
167883 .call_frame = .{ .alignment = .@"16" },
167884 .extra_temps = .{
167885 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
167886 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
167887 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 2, .at = 2 } } },
167888 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 3, .at = 3 } } },
167889 .{ .type = .usize, .kind = .{ .extern_func = "__fmax" } },
167890 .unused,
167891 .unused,
167892 .unused,
167893 .unused,
167894 .unused,
167895 .unused,
167896 },
167897 .dst_temps = .{ .mem, .unused },
167898 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
167899 .each = .{ .once = &.{
167900 .{ ._, ._, .lea, .tmp0p, .mem(.dst0), ._, ._ },
167901 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },
167902 .{ ._, ._, .lea, .tmp2p, .mem(.src1), ._, ._ },
167903 .{ ._, ._, .lea, .tmp3p, .mem(.src2), ._, ._ },
167904 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
167905 } },
167906 }, .{
167907 .required_cc_abi = .sysv64,
162406167908 .required_features = .{ .sse, .x87, null, null },
162407167909 .src_constraints = .{
162408167910 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
......@@ -162414,8 +167916,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
162414167916 },
162415167917 .call_frame = .{ .size = 16 * 3, .alignment = .@"16" },
162416167918 .extra_temps = .{
162417 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
162418 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
167919 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
167920 .{ .type = .f80, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
162419167921 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
162420167922 .{ .type = .usize, .kind = .{ .extern_func = "__fmax" } },
162421167923 .unused,
......@@ -162429,18 +167931,54 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
162429167931 .dst_temps = .{ .mem, .unused },
162430167932 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
162431167933 .each = .{ .once = &.{
162432 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
162433 .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
167934 .{ ._, ._, .mov, .tmp0d, .sia(-16, .src0, .add_unaligned_size), ._, ._ },
167935 .{ .@"0:", ._ps, .mova, .tmp1x, .memi(.src0x, .tmp0), ._, ._ },
162434167936 .{ ._, ._ps, .mova, .mem(.tmp2x), .tmp1x, ._, ._ },
162435 .{ ._, ._ps, .mova, .tmp1x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ },
167937 .{ ._, ._ps, .mova, .tmp1x, .memi(.src1x, .tmp0), ._, ._ },
162436167938 .{ ._, ._ps, .mova, .memd(.tmp2x, 16), .tmp1x, ._, ._ },
162437 .{ ._, ._ps, .mova, .tmp1x, .memia(.src2x, .tmp0, .add_unaligned_size), ._, ._ },
167939 .{ ._, ._ps, .mova, .tmp1x, .memi(.src2x, .tmp0), ._, ._ },
162438167940 .{ ._, ._ps, .mova, .memd(.tmp2x, 16 * 2), .tmp1x, ._, ._ },
162439167941 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
162440167942 .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ },
162441 .{ ._, .f_p, .st, .memia(.dst0t, .tmp0, .add_unaligned_size), ._, ._, ._ },
162442 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
162443 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
167943 .{ ._, .f_p, .st, .memi(.dst0t, .tmp0), ._, ._, ._ },
167944 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
167945 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
167946 } },
167947 }, .{
167948 .required_cc_abi = .win64,
167949 .src_constraints = .{
167950 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
167951 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
167952 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
167953 },
167954 .patterns = &.{
167955 .{ .src = .{ .to_mem, .to_mem, .to_mem } },
167956 },
167957 .call_frame = .{ .alignment = .@"16" },
167958 .extra_temps = .{
167959 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
167960 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
167961 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
167962 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 2, .at = 2 } } },
167963 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 3, .at = 3 } } },
167964 .{ .type = .usize, .kind = .{ .extern_func = "__fmax" } },
167965 .unused,
167966 .unused,
167967 .unused,
167968 .unused,
167969 .unused,
167970 },
167971 .dst_temps = .{ .mem, .unused },
167972 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
167973 .each = .{ .once = &.{
167974 .{ ._, ._, .mov, .tmp0d, .sia(-16, .src0, .add_unaligned_size), ._, ._ },
167975 .{ .@"0:", ._, .lea, .tmp1p, .memi(.dst0, .tmp0), ._, ._ },
167976 .{ ._, ._, .lea, .tmp2p, .memi(.src0, .tmp0), ._, ._ },
167977 .{ ._, ._, .lea, .tmp3p, .memi(.src1, .tmp0), ._, ._ },
167978 .{ ._, ._, .lea, .tmp4p, .memi(.src2, .tmp0), ._, ._ },
167979 .{ ._, ._, .call, .tmp5d, ._, ._, ._ },
167980 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
167981 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
162444167982 } },
162445167983 }, .{
162446167984 .required_features = .{ .sse, null, null, null },
......@@ -162450,7 +167988,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
162450167988 .{ .scalar_float = .{ .of = .xword, .is = .xword } },
162451167989 },
162452167990 .patterns = &.{
162453 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .{ .to_reg = .xmm2 } } },
167991 .{ .src = .{
167992 .{ .to_param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } },
167993 .{ .to_param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } },
167994 .{ .to_param_sse = .{ .cc = .ccc, .after = 2, .at = 2 } },
167995 } },
162454167996 },
162455167997 .call_frame = .{ .alignment = .@"16" },
162456167998 .extra_temps = .{
......@@ -162483,10 +168025,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
162483168025 },
162484168026 .call_frame = .{ .alignment = .@"16" },
162485168027 .extra_temps = .{
162486 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
162487 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
162488 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
162489 .{ .type = .f128, .kind = .{ .reg = .xmm2 } },
168028 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
168029 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
168030 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
168031 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 2, .at = 2 } } },
162490168032 .{ .type = .usize, .kind = .{ .extern_func = "fmaq" } },
162491168033 .unused,
162492168034 .unused,
......@@ -162498,14 +168040,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
162498168040 .dst_temps = .{ .mem, .unused },
162499168041 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
162500168042 .each = .{ .once = &.{
162501 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
162502 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
162503 .{ ._, .v_dqa, .mov, .tmp2x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ },
162504 .{ ._, .v_dqa, .mov, .tmp3x, .memia(.src2x, .tmp0, .add_unaligned_size), ._, ._ },
168043 .{ ._, ._, .mov, .tmp0d, .sia(-16, .src0, .add_unaligned_size), ._, ._ },
168044 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memi(.src0x, .tmp0), ._, ._ },
168045 .{ ._, .v_dqa, .mov, .tmp2x, .memi(.src1x, .tmp0), ._, ._ },
168046 .{ ._, .v_dqa, .mov, .tmp3x, .memi(.src2x, .tmp0), ._, ._ },
162505168047 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
162506 .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
162507 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
162508 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
168048 .{ ._, .v_dqa, .mov, .memi(.dst0x, .tmp0), .tmp1x, ._, ._ },
168049 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
168050 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
162509168051 } },
162510168052 }, .{
162511168053 .required_features = .{ .sse2, null, null, null },
......@@ -162519,10 +168061,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
162519168061 },
162520168062 .call_frame = .{ .alignment = .@"16" },
162521168063 .extra_temps = .{
162522 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
162523 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
162524 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
162525 .{ .type = .f128, .kind = .{ .reg = .xmm2 } },
168064 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
168065 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
168066 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
168067 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 2, .at = 2 } } },
162526168068 .{ .type = .usize, .kind = .{ .extern_func = "fmaq" } },
162527168069 .unused,
162528168070 .unused,
......@@ -162534,14 +168076,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
162534168076 .dst_temps = .{ .mem, .unused },
162535168077 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
162536168078 .each = .{ .once = &.{
162537 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
162538 .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
162539 .{ ._, ._dqa, .mov, .tmp2x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ },
162540 .{ ._, ._dqa, .mov, .tmp3x, .memia(.src2x, .tmp0, .add_unaligned_size), ._, ._ },
168079 .{ ._, ._, .mov, .tmp0d, .sia(-16, .src0, .add_unaligned_size), ._, ._ },
168080 .{ .@"0:", ._dqa, .mov, .tmp1x, .memi(.src0x, .tmp0), ._, ._ },
168081 .{ ._, ._dqa, .mov, .tmp2x, .memi(.src1x, .tmp0), ._, ._ },
168082 .{ ._, ._dqa, .mov, .tmp3x, .memi(.src2x, .tmp0), ._, ._ },
162541168083 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
162542 .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
162543 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
162544 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
168084 .{ ._, ._dqa, .mov, .memi(.dst0x, .tmp0), .tmp1x, ._, ._ },
168085 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
168086 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
162545168087 } },
162546168088 }, .{
162547168089 .required_features = .{ .sse, null, null, null },
......@@ -162555,10 +168097,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
162555168097 },
162556168098 .call_frame = .{ .alignment = .@"16" },
162557168099 .extra_temps = .{
162558 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
162559 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
162560 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
162561 .{ .type = .f128, .kind = .{ .reg = .xmm2 } },
168100 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
168101 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
168102 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 1, .at = 1 } } },
168103 .{ .type = .f128, .kind = .{ .param_sse = .{ .cc = .ccc, .after = 2, .at = 2 } } },
162562168104 .{ .type = .usize, .kind = .{ .extern_func = "fmaq" } },
162563168105 .unused,
162564168106 .unused,
......@@ -162570,14 +168112,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
162570168112 .dst_temps = .{ .mem, .unused },
162571168113 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
162572168114 .each = .{ .once = &.{
162573 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
162574 .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
162575 .{ ._, ._ps, .mova, .tmp2x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ },
162576 .{ ._, ._ps, .mova, .tmp3x, .memia(.src2x, .tmp0, .add_unaligned_size), ._, ._ },
168115 .{ ._, ._, .mov, .tmp0d, .sia(-16, .src0, .sub_unaligned_size), ._, ._ },
168116 .{ .@"0:", ._ps, .mova, .tmp1x, .memi(.src0x, .tmp0), ._, ._ },
168117 .{ ._, ._ps, .mova, .tmp2x, .memi(.src1x, .tmp0), ._, ._ },
168118 .{ ._, ._ps, .mova, .tmp3x, .memi(.src2x, .tmp0), ._, ._ },
162577168119 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
162578 .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
162579 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
162580 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
168120 .{ ._, ._ps, .mova, .memi(.dst0x, .tmp0), .tmp1x, ._, ._ },
168121 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
168122 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
162581168123 } },
162582168124 } }) catch |err| switch (err) {
162583168125 error.SelectFailed => return cg.fail("failed to select {s} {} {} {} {}", .{
......@@ -162591,7 +168133,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
162591168133 };
162592168134 try res[0].finish(inst, &.{ bin_op.lhs, bin_op.rhs, pl_op.operand }, &ops, cg);
162593168135 },
162594 .field_parent_ptr => if (use_old) try cg.airFieldParentPtr(inst) else {
168136 .field_parent_ptr => {
162595168137 const ty_pl = air_datas[@intFromEnum(inst)].ty_pl;
162596168138 const field_parent_ptr = cg.air.extraData(Air.FieldParentPtr, ty_pl.payload).data;
162597168139 var ops = try cg.tempsFromOperands(inst, .{field_parent_ptr.field_ptr});
......@@ -162603,7 +168145,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
162603168145 try ops[0].finish(inst, &.{field_parent_ptr.field_ptr}, &ops, cg);
162604168146 },
162605168147 .wasm_memory_size, .wasm_memory_grow => unreachable,
162606 .cmp_lt_errors_len => |air_tag| if (use_old) try cg.airCmpLtErrorsLen(inst) else {
168148 .cmp_lt_errors_len => |air_tag| {
162607168149 const un_op = air_datas[@intFromEnum(inst)].un_op;
162608168150 var ops = try cg.tempsFromOperands(inst, .{un_op});
162609168151 var res: [1]Temp = undefined;
......@@ -163494,36 +169036,38 @@ fn getValueIfFree(self: *CodeGen, value: MCValue, inst: ?Air.Inst.Index) void {
163494169036 self.register_manager.getRegAssumeFree(reg, inst);
163495169037}
163496169038
163497fn freeReg(self: *CodeGen, reg: Register) !void {
169039const FreeOptions = struct { emit_instructions: bool = true };
169040
169041fn freeReg(self: *CodeGen, reg: Register, comptime opts: FreeOptions) !void {
163498169042 self.register_manager.freeReg(reg);
163499 if (reg.isClass(.x87)) try self.asmRegister(.{ .f_, .free }, reg);
169043 if (opts.emit_instructions and reg.isClass(.x87)) try self.asmRegister(.{ .f_, .free }, reg);
163500169044}
163501169045
163502fn freeValue(self: *CodeGen, value: MCValue) !void {
169046fn freeValue(self: *CodeGen, value: MCValue, comptime opts: FreeOptions) !void {
163503169047 switch (value) {
163504 .register => |reg| try self.freeReg(reg),
169048 .register => |reg| try self.freeReg(reg, opts),
163505169049 inline .register_pair,
163506169050 .register_triple,
163507169051 .register_quadruple,
163508 => |regs| for (regs) |reg| try self.freeReg(reg),
163509 .register_offset, .indirect => |reg_off| try self.freeReg(reg_off.reg),
169052 => |regs| for (regs) |reg| try self.freeReg(reg, opts),
169053 .register_offset, .indirect => |reg_off| try self.freeReg(reg_off.reg, opts),
163510169054 .register_overflow => |reg_ov| {
163511 try self.freeReg(reg_ov.reg);
169055 try self.freeReg(reg_ov.reg, opts);
163512169056 self.eflags_inst = null;
163513169057 },
163514 .register_mask => |reg_mask| try self.freeReg(reg_mask.reg),
169058 .register_mask => |reg_mask| try self.freeReg(reg_mask.reg, opts),
163515169059 .eflags => self.eflags_inst = null,
163516169060 else => {}, // TODO process stack allocation death
163517169061 }
163518169062}
163519169063
163520169064fn feed(self: *CodeGen, bt: *Air.Liveness.BigTomb, operand: Air.Inst.Ref) !void {
163521 if (bt.feed()) if (operand.toIndex()) |inst| try self.processDeath(inst);
169065 if (bt.feed()) if (operand.toIndex()) |inst| try self.processDeath(inst, .{});
163522169066}
163523169067
163524169068/// Asserts there is already capacity to insert into top branch inst_table.
163525fn processDeath(self: *CodeGen, inst: Air.Inst.Index) !void {
163526 try self.inst_tracking.getPtr(inst).?.die(self, inst);
169069fn processDeath(self: *CodeGen, inst: Air.Inst.Index, comptime opts: FreeOptions) !void {
169070 try self.inst_tracking.getPtr(inst).?.die(self, inst, opts);
163527169071}
163528169072
163529169073fn finishAirResult(self: *CodeGen, inst: Air.Inst.Index, result: MCValue) void {
......@@ -163550,7 +169094,7 @@ fn finishAir(
163550169094 for (0.., operands) |op_index, op| {
163551169095 if (tomb_bits & @as(Air.Liveness.Bpi, 1) << @intCast(op_index) == 0) continue;
163552169096 if (self.reused_operands.isSet(op_index)) continue;
163553 try self.processDeath(op.toIndexAllowNone() orelse continue);
169097 try self.processDeath(op.toIndexAllowNone() orelse continue, .{});
163554169098 }
163555169099 self.finishAirResult(inst, result);
163556169100}
......@@ -163704,7 +169248,7 @@ fn allocRegOrMemAdvanced(self: *CodeGen, ty: Type, inst: ?Air.Inst.Index, reg_ok
163704169248
163705169249 if (reg_ok) need_mem: {
163706169250 if (std.math.isPowerOfTwo(abi_size) and abi_size <= @as(u32, max_abi_size: switch (ty.zigTypeTag(zcu)) {
163707 .float => switch (ty.floatBits(self.target.*)) {
169251 .float => switch (ty.floatBits(self.target)) {
163708169252 16, 32, 64, 128 => 16,
163709169253 80 => break :need_mem,
163710169254 else => unreachable,
......@@ -163772,21 +169316,6 @@ fn vectorSize(cg: *CodeGen, kind: enum { int, float }) u6 {
163772169316 })) 32 else if (cg.hasFeature(.sse)) 16 else 8;
163773169317}
163774169318
163775fn limbType(cg: *CodeGen, ty: Type) Type {
163776 const pt = cg.pt;
163777 const zcu = pt.zcu;
163778 const vector_size = cg.vectorSize(if (ty.isRuntimeFloat()) .float else .int);
163779 const scalar_ty, const scalar_size = scalar: {
163780 const scalar_ty = ty.scalarType(zcu);
163781 const scalar_size = scalar_ty.abiSize(zcu);
163782 if (scalar_size <= vector_size) break :scalar .{ scalar_ty, scalar_size };
163783 };
163784 pt.vectorType(.{
163785 .len = @divExact(vector_size, scalar_size),
163786 .child = scalar_ty.toIntern(),
163787 });
163788}
163789
163790169319const State = struct {
163791169320 registers: RegisterManager.TrackedRegisters,
163792169321 reg_tracking: [RegisterManager.RegisterBitSet.bit_length]InstTracking,
......@@ -163835,12 +169364,12 @@ fn restoreState(self: *CodeGen, state: State, deaths: []const Air.Inst.Index, co
163835169364 for (
163836169365 self.inst_tracking.keys()[@intFromEnum(state.next_temp_index)..@intFromEnum(self.next_temp_index)],
163837169366 self.inst_tracking.values()[@intFromEnum(state.next_temp_index)..@intFromEnum(self.next_temp_index)],
163838 ) |inst, *tracking| try tracking.die(self, inst);
169367 ) |inst, *tracking| try tracking.die(self, inst, .{ .emit_instructions = opts.emit_instructions });
163839169368 self.next_temp_index = state.next_temp_index;
163840169369 for (
163841169370 self.inst_tracking.keys()[state.inst_tracking_len..],
163842169371 self.inst_tracking.values()[state.inst_tracking_len..],
163843 ) |inst, *tracking| try tracking.die(self, inst);
169372 ) |inst, *tracking| try tracking.die(self, inst, .{ .emit_instructions = opts.emit_instructions });
163844169373 self.inst_tracking.shrinkRetainingCapacity(state.inst_tracking_len);
163845169374 }
163846169375
......@@ -163854,7 +169383,7 @@ fn restoreState(self: *CodeGen, state: State, deaths: []const Air.Inst.Index, co
163854169383 self.inst_tracking.values()[Temp.Index.max..state.inst_tracking_len],
163855169384 ) |inst, *tracking| try tracking.resurrect(self, inst, state.scope_generation);
163856169385 }
163857 for (deaths) |death| try self.processDeath(death);
169386 for (deaths) |death| try self.processDeath(death, .{ .emit_instructions = opts.emit_instructions });
163858169387
163859169388 const ExpectedContents = [@typeInfo(RegisterManager.TrackedRegisters).array.len]RegisterLock;
163860169389 var stack align(@max(@alignOf(ExpectedContents), @alignOf(std.heap.StackFallbackAllocator(0)))) =
......@@ -163993,9 +169522,9 @@ fn airRetPtr(self: *CodeGen, inst: Air.Inst.Index) !void {
163993169522fn airFptrunc(self: *CodeGen, inst: Air.Inst.Index) !void {
163994169523 const ty_op = self.air.instructions.items(.data)[@intFromEnum(inst)].ty_op;
163995169524 const dst_ty = self.typeOfIndex(inst);
163996 const dst_bits = dst_ty.floatBits(self.target.*);
169525 const dst_bits = dst_ty.floatBits(self.target);
163997169526 const src_ty = self.typeOf(ty_op.operand);
163998 const src_bits = src_ty.floatBits(self.target.*);
169527 const src_bits = src_ty.floatBits(self.target);
163999169528
164000169529 const result = result: {
164001169530 if (switch (dst_bits) {
......@@ -164095,10 +169624,10 @@ fn airFpext(self: *CodeGen, inst: Air.Inst.Index) !void {
164095169624 const ty_op = self.air.instructions.items(.data)[@intFromEnum(inst)].ty_op;
164096169625 const dst_ty = self.typeOfIndex(inst);
164097169626 const dst_scalar_ty = dst_ty.scalarType(zcu);
164098 const dst_bits = dst_scalar_ty.floatBits(self.target.*);
169627 const dst_bits = dst_scalar_ty.floatBits(self.target);
164099169628 const src_ty = self.typeOf(ty_op.operand);
164100169629 const src_scalar_ty = src_ty.scalarType(zcu);
164101 const src_bits = src_scalar_ty.floatBits(self.target.*);
169630 const src_bits = src_scalar_ty.floatBits(self.target);
164102169631
164103169632 const result = result: {
164104169633 if (switch (src_bits) {
......@@ -168207,7 +173736,7 @@ fn floatSign(self: *CodeGen, inst: Air.Inst.Index, tag: Air.Inst.Tag, operand: A
168207173736 const zcu = pt.zcu;
168208173737
168209173738 const result = result: {
168210 const scalar_bits = ty.scalarType(zcu).floatBits(self.target.*);
173739 const scalar_bits = ty.scalarType(zcu).floatBits(self.target);
168211173740 if (scalar_bits == 80) {
168212173741 if (ty.zigTypeTag(zcu) != .float) return self.fail("TODO implement floatSign for {}", .{
168213173742 ty.fmt(pt),
......@@ -168363,14 +173892,14 @@ fn getRoundTag(self: *CodeGen, ty: Type) ?Mir.Inst.FixedTag {
168363173892 const pt = self.pt;
168364173893 const zcu = pt.zcu;
168365173894 return if (self.hasFeature(.sse4_1)) switch (ty.zigTypeTag(zcu)) {
168366 .float => switch (ty.floatBits(self.target.*)) {
173895 .float => switch (ty.floatBits(self.target)) {
168367173896 32 => if (self.hasFeature(.avx)) .{ .v_ss, .round } else .{ ._ss, .round },
168368173897 64 => if (self.hasFeature(.avx)) .{ .v_sd, .round } else .{ ._sd, .round },
168369173898 16, 80, 128 => null,
168370173899 else => unreachable,
168371173900 },
168372173901 .vector => switch (ty.childType(zcu).zigTypeTag(zcu)) {
168373 .float => switch (ty.childType(zcu).floatBits(self.target.*)) {
173902 .float => switch (ty.childType(zcu).floatBits(self.target)) {
168374173903 32 => switch (ty.vectorLen(zcu)) {
168375173904 1 => if (self.hasFeature(.avx)) .{ .v_ss, .round } else .{ ._ss, .round },
168376173905 2...4 => if (self.hasFeature(.avx)) .{ .v_ps, .round } else .{ ._ps, .round },
......@@ -168670,7 +174199,7 @@ fn airSqrt(self: *CodeGen, inst: Air.Inst.Index) !void {
168670174199 const result: MCValue = result: {
168671174200 switch (ty.zigTypeTag(zcu)) {
168672174201 .float => {
168673 const float_bits = ty.floatBits(self.target.*);
174202 const float_bits = ty.floatBits(self.target);
168674174203 if (switch (float_bits) {
168675174204 16 => !self.hasFeature(.f16c),
168676174205 32, 64 => false,
......@@ -168701,7 +174230,7 @@ fn airSqrt(self: *CodeGen, inst: Air.Inst.Index) !void {
168701174230 defer if (dst_lock) |lock| self.register_manager.unlockReg(lock);
168702174231
168703174232 const mir_tag = @as(?Mir.Inst.FixedTag, switch (ty.zigTypeTag(zcu)) {
168704 .float => switch (ty.floatBits(self.target.*)) {
174233 .float => switch (ty.floatBits(self.target)) {
168705174234 16 => {
168706174235 assert(self.hasFeature(.f16c));
168707174236 const mat_src_reg = if (src_mcv.isRegister())
......@@ -168723,7 +174252,7 @@ fn airSqrt(self: *CodeGen, inst: Air.Inst.Index) !void {
168723174252 else => unreachable,
168724174253 },
168725174254 .vector => switch (ty.childType(zcu).zigTypeTag(zcu)) {
168726 .float => switch (ty.childType(zcu).floatBits(self.target.*)) {
174255 .float => switch (ty.childType(zcu).floatBits(self.target)) {
168727174256 16 => if (self.hasFeature(.f16c)) switch (ty.vectorLen(zcu)) {
168728174257 1 => {
168729174258 try self.asmRegisterRegister(
......@@ -169028,6 +174557,7 @@ fn load(self: *CodeGen, dst_mcv: MCValue, ptr_ty: Type, ptr_mcv: MCValue) InnerE
169028174557 .register_quadruple,
169029174558 .register_overflow,
169030174559 .register_mask,
174560 .indirect_load_frame,
169031174561 .elementwise_args,
169032174562 .reserved_frame,
169033174563 => unreachable, // not a valid pointer
......@@ -169248,6 +174778,7 @@ fn store(
169248174778 .register_quadruple,
169249174779 .register_overflow,
169250174780 .register_mask,
174781 .indirect_load_frame,
169251174782 .elementwise_args,
169252174783 .reserved_frame,
169253174784 => unreachable, // not a valid pointer
......@@ -169307,31 +174838,6 @@ fn airStore(self: *CodeGen, inst: Air.Inst.Index, safety: bool) !void {
169307174838 return self.finishAir(inst, .none, .{ bin_op.lhs, bin_op.rhs, .none });
169308174839}
169309174840
169310fn airStructFieldPtr(self: *CodeGen, inst: Air.Inst.Index) !void {
169311 const ty_pl = self.air.instructions.items(.data)[@intFromEnum(inst)].ty_pl;
169312 const extra = self.air.extraData(Air.StructField, ty_pl.payload).data;
169313 const result = try self.fieldPtr(inst, extra.struct_operand, extra.field_index);
169314 return self.finishAir(inst, result, .{ extra.struct_operand, .none, .none });
169315}
169316
169317fn airStructFieldPtrIndex(self: *CodeGen, inst: Air.Inst.Index, field_index: u8) !void {
169318 const ty_op = self.air.instructions.items(.data)[@intFromEnum(inst)].ty_op;
169319 const result = try self.fieldPtr(inst, ty_op.operand, field_index);
169320 return self.finishAir(inst, result, .{ ty_op.operand, .none, .none });
169321}
169322
169323fn fieldPtr(self: *CodeGen, inst: Air.Inst.Index, operand: Air.Inst.Ref, field_index: u32) !MCValue {
169324 const ptr_field_ty = self.typeOfIndex(inst);
169325
169326 const src_mcv = try self.resolveInst(operand);
169327 const dst_mcv = if (switch (src_mcv) {
169328 .immediate, .lea_frame => true,
169329 .register, .register_offset => self.reuseOperand(inst, operand, 0, src_mcv),
169330 else => false,
169331 }) src_mcv else try self.copyToRegisterWithInstTracking(inst, ptr_field_ty, src_mcv);
169332 return dst_mcv.offset(self.fieldOffset(self.typeOf(operand), ptr_field_ty, field_index));
169333}
169334
169335174841fn fieldOffset(self: *CodeGen, ptr_agg_ty: Type, ptr_field_ty: Type, field_index: u32) i32 {
169336174842 const pt = self.pt;
169337174843 const zcu = pt.zcu;
......@@ -169344,291 +174850,6 @@ fn fieldOffset(self: *CodeGen, ptr_agg_ty: Type, ptr_field_ty: Type, field_index
169344174850 };
169345174851}
169346174852
169347fn airStructFieldVal(self: *CodeGen, inst: Air.Inst.Index) !void {
169348 const pt = self.pt;
169349 const zcu = pt.zcu;
169350 const ty_pl = self.air.instructions.items(.data)[@intFromEnum(inst)].ty_pl;
169351 const extra = self.air.extraData(Air.StructField, ty_pl.payload).data;
169352 const result: MCValue = result: {
169353 const operand = extra.struct_operand;
169354 const index = extra.field_index;
169355
169356 const container_ty = self.typeOf(operand);
169357 const container_rc = self.regSetForType(container_ty);
169358 const field_ty = container_ty.fieldType(index, zcu);
169359 if (!field_ty.hasRuntimeBitsIgnoreComptime(zcu)) break :result .none;
169360 const field_rc = self.regSetForType(field_ty);
169361 const field_is_gp = field_rc.supersetOf(abi.RegisterClass.gp);
169362
169363 const src_mcv = try self.resolveInst(operand);
169364 const field_off: u32 = switch (container_ty.containerLayout(zcu)) {
169365 .auto, .@"extern" => @intCast(container_ty.structFieldOffset(extra.field_index, zcu) * 8),
169366 .@"packed" => if (zcu.typeToStruct(container_ty)) |loaded_struct|
169367 pt.structPackedFieldBitOffset(loaded_struct, extra.field_index)
169368 else
169369 0,
169370 };
169371
169372 switch (src_mcv) {
169373 .register => |src_reg| {
169374 const src_reg_lock = self.register_manager.lockRegAssumeUnused(src_reg);
169375 defer self.register_manager.unlockReg(src_reg_lock);
169376
169377 const src_in_field_rc =
169378 field_rc.isSet(RegisterManager.indexOfRegIntoTracked(src_reg).?);
169379 const dst_reg = if (src_in_field_rc and self.reuseOperand(inst, operand, 0, src_mcv))
169380 src_reg
169381 else if (field_off == 0)
169382 (try self.copyToRegisterWithInstTracking(inst, field_ty, src_mcv)).register
169383 else
169384 try self.copyToTmpRegister(.usize, .{ .register = src_reg });
169385 const dst_mcv: MCValue = .{ .register = dst_reg };
169386 const dst_lock = self.register_manager.lockReg(dst_reg);
169387 defer if (dst_lock) |lock| self.register_manager.unlockReg(lock);
169388
169389 if (field_off > 0) {
169390 try self.spillEflagsIfOccupied();
169391 try self.genShiftBinOpMir(.{ ._r, .sh }, .usize, dst_mcv, .u8, .{ .immediate = field_off });
169392 }
169393 if (abi.RegisterClass.gp.isSet(RegisterManager.indexOfRegIntoTracked(dst_reg).?) and
169394 container_ty.abiSize(zcu) * 8 > field_ty.bitSize(zcu))
169395 try self.truncateRegister(field_ty, dst_reg);
169396
169397 break :result if (field_off == 0 or field_rc.supersetOf(abi.RegisterClass.gp))
169398 dst_mcv
169399 else
169400 try self.copyToRegisterWithInstTracking(inst, field_ty, dst_mcv);
169401 },
169402 .register_pair => |src_regs| {
169403 const src_regs_lock = self.register_manager.lockRegsAssumeUnused(2, src_regs);
169404 defer for (src_regs_lock) |lock| self.register_manager.unlockReg(lock);
169405
169406 const field_bit_size: u32 = @intCast(field_ty.bitSize(zcu));
169407 const src_reg = if (field_off + field_bit_size <= 64)
169408 src_regs[0]
169409 else if (field_off >= 64)
169410 src_regs[1]
169411 else {
169412 const dst_regs: [2]Register = if (field_rc.supersetOf(container_rc) and
169413 self.reuseOperand(inst, operand, 0, src_mcv)) src_regs else dst: {
169414 const dst_regs =
169415 try self.register_manager.allocRegs(2, @splat(null), field_rc);
169416 const dst_locks = self.register_manager.lockRegsAssumeUnused(2, dst_regs);
169417 defer for (dst_locks) |lock| self.register_manager.unlockReg(lock);
169418
169419 try self.genCopy(container_ty, .{ .register_pair = dst_regs }, src_mcv, .{});
169420 break :dst dst_regs;
169421 };
169422 const dst_mcv = MCValue{ .register_pair = dst_regs };
169423 const dst_locks = self.register_manager.lockRegs(2, dst_regs);
169424 defer for (dst_locks) |dst_lock| if (dst_lock) |lock|
169425 self.register_manager.unlockReg(lock);
169426
169427 if (field_off > 0) {
169428 try self.spillEflagsIfOccupied();
169429 try self.genShiftBinOpMir(.{ ._r, .sh }, .u128, dst_mcv, .u8, .{ .immediate = field_off });
169430 }
169431
169432 if (field_bit_size <= 64) {
169433 if (self.regExtraBits(field_ty) > 0)
169434 try self.truncateRegister(field_ty, dst_regs[0]);
169435 break :result if (field_rc.supersetOf(abi.RegisterClass.gp))
169436 .{ .register = dst_regs[0] }
169437 else
169438 try self.copyToRegisterWithInstTracking(inst, field_ty, .{
169439 .register = dst_regs[0],
169440 });
169441 }
169442
169443 if (field_bit_size < 128) try self.truncateRegister(
169444 try pt.intType(.unsigned, @intCast(field_bit_size - 64)),
169445 dst_regs[1],
169446 );
169447 break :result if (field_rc.supersetOf(abi.RegisterClass.gp))
169448 dst_mcv
169449 else
169450 try self.copyToRegisterWithInstTracking(inst, field_ty, dst_mcv);
169451 };
169452
169453 const dst_reg = try self.copyToTmpRegister(.usize, .{ .register = src_reg });
169454 const dst_mcv = MCValue{ .register = dst_reg };
169455 const dst_lock = self.register_manager.lockReg(dst_reg);
169456 defer if (dst_lock) |lock| self.register_manager.unlockReg(lock);
169457
169458 if (field_off % 64 > 0) {
169459 try self.spillEflagsIfOccupied();
169460 try self.genShiftBinOpMir(.{ ._r, .sh }, .usize, dst_mcv, .u8, .{ .immediate = field_off % 64 });
169461 }
169462 if (self.regExtraBits(field_ty) > 0) try self.truncateRegister(field_ty, dst_reg);
169463
169464 break :result if (field_rc.supersetOf(abi.RegisterClass.gp))
169465 dst_mcv
169466 else
169467 try self.copyToRegisterWithInstTracking(inst, field_ty, dst_mcv);
169468 },
169469 .register_overflow => |ro| {
169470 switch (index) {
169471 // Get wrapped value for overflow operation.
169472 0 => if (self.reuseOperand(inst, extra.struct_operand, 0, src_mcv)) {
169473 self.eflags_inst = null; // actually stop tracking the overflow part
169474 break :result .{ .register = ro.reg };
169475 } else break :result try self.copyToRegisterWithInstTracking(inst, .usize, .{ .register = ro.reg }),
169476 // Get overflow bit.
169477 1 => if (self.reuseOperandAdvanced(inst, extra.struct_operand, 0, src_mcv, null)) {
169478 self.eflags_inst = inst; // actually keep tracking the overflow part
169479 break :result .{ .eflags = ro.eflags };
169480 } else {
169481 const dst_reg = try self.register_manager.allocReg(inst, abi.RegisterClass.gp);
169482 try self.asmSetccRegister(ro.eflags, dst_reg.to8());
169483 break :result .{ .register = dst_reg.to8() };
169484 },
169485 else => unreachable,
169486 }
169487 },
169488 .load_frame => |frame_addr| {
169489 const field_abi_size: u32 = @intCast(field_ty.abiSize(zcu));
169490 if (field_off % 8 == 0) {
169491 const field_byte_off = @divExact(field_off, 8);
169492 const off_mcv = src_mcv.address().offset(@intCast(field_byte_off)).deref();
169493 const field_bit_size = field_ty.bitSize(zcu);
169494
169495 if (field_abi_size <= 8) {
169496 const int_ty = try pt.intType(
169497 if (field_ty.isAbiInt(zcu)) field_ty.intInfo(zcu).signedness else .unsigned,
169498 @intCast(field_bit_size),
169499 );
169500
169501 const dst_reg = try self.register_manager.allocReg(
169502 if (field_is_gp) inst else null,
169503 abi.RegisterClass.gp,
169504 );
169505 const dst_mcv = MCValue{ .register = dst_reg };
169506 const dst_lock = self.register_manager.lockRegAssumeUnused(dst_reg);
169507 defer self.register_manager.unlockReg(dst_lock);
169508
169509 try self.genCopy(int_ty, dst_mcv, off_mcv, .{});
169510 if (self.regExtraBits(field_ty) > 0) try self.truncateRegister(int_ty, dst_reg);
169511 break :result if (field_is_gp)
169512 dst_mcv
169513 else
169514 try self.copyToRegisterWithInstTracking(inst, field_ty, dst_mcv);
169515 }
169516
169517 const container_abi_size: u32 = @intCast(container_ty.abiSize(zcu));
169518 const dst_mcv = if (field_byte_off + field_abi_size <= container_abi_size and
169519 self.reuseOperand(inst, operand, 0, src_mcv))
169520 off_mcv
169521 else dst: {
169522 const dst_mcv = try self.allocRegOrMem(inst, true);
169523 try self.genCopy(field_ty, dst_mcv, off_mcv, .{});
169524 break :dst dst_mcv;
169525 };
169526 if (field_abi_size * 8 > field_bit_size and dst_mcv.isBase()) {
169527 const tmp_reg = try self.register_manager.allocReg(null, abi.RegisterClass.gp);
169528 const tmp_lock = self.register_manager.lockRegAssumeUnused(tmp_reg);
169529 defer self.register_manager.unlockReg(tmp_lock);
169530
169531 const hi_mcv =
169532 dst_mcv.address().offset(@intCast(field_bit_size / 64 * 8)).deref();
169533 try self.genSetReg(tmp_reg, .usize, hi_mcv, .{});
169534 try self.truncateRegister(field_ty, tmp_reg);
169535 try self.genCopy(.usize, hi_mcv, .{ .register = tmp_reg }, .{});
169536 }
169537 break :result dst_mcv;
169538 }
169539
169540 const limb_abi_size: u31 = @min(field_abi_size, 8);
169541 const limb_abi_bits = limb_abi_size * 8;
169542 const field_byte_off: i32 = @intCast(field_off / limb_abi_bits * limb_abi_size);
169543 const field_bit_off = field_off % limb_abi_bits;
169544
169545 if (field_abi_size > 8) {
169546 return self.fail("TODO implement struct_field_val with large packed field", .{});
169547 }
169548
169549 const dst_reg = try self.register_manager.allocReg(
169550 if (field_is_gp) inst else null,
169551 abi.RegisterClass.gp,
169552 );
169553 const field_extra_bits = self.regExtraBits(field_ty);
169554 const load_abi_size =
169555 if (field_bit_off < field_extra_bits) field_abi_size else field_abi_size * 2;
169556 if (load_abi_size <= 8) {
169557 const load_reg = registerAlias(dst_reg, load_abi_size);
169558 try self.asmRegisterMemory(.{ ._, .mov }, load_reg, .{
169559 .base = .{ .frame = frame_addr.index },
169560 .mod = .{ .rm = .{
169561 .size = .fromSize(load_abi_size),
169562 .disp = frame_addr.off + field_byte_off,
169563 } },
169564 });
169565 try self.spillEflagsIfOccupied();
169566 try self.asmRegisterImmediate(.{ ._r, .sh }, load_reg, .u(field_bit_off));
169567 } else {
169568 const tmp_reg = registerAlias(
169569 try self.register_manager.allocReg(null, abi.RegisterClass.gp),
169570 field_abi_size,
169571 );
169572 const tmp_lock = self.register_manager.lockRegAssumeUnused(tmp_reg);
169573 defer self.register_manager.unlockReg(tmp_lock);
169574
169575 const dst_alias = registerAlias(dst_reg, field_abi_size);
169576 try self.asmRegisterMemory(
169577 .{ ._, .mov },
169578 dst_alias,
169579 .{
169580 .base = .{ .frame = frame_addr.index },
169581 .mod = .{ .rm = .{
169582 .size = .fromSize(field_abi_size),
169583 .disp = frame_addr.off + field_byte_off,
169584 } },
169585 },
169586 );
169587 try self.asmRegisterMemory(.{ ._, .mov }, tmp_reg, .{
169588 .base = .{ .frame = frame_addr.index },
169589 .mod = .{ .rm = .{
169590 .size = .fromSize(field_abi_size),
169591 .disp = frame_addr.off + field_byte_off + limb_abi_size,
169592 } },
169593 });
169594 try self.spillEflagsIfOccupied();
169595 try self.asmRegisterRegisterImmediate(
169596 .{ ._rd, .sh },
169597 dst_alias,
169598 tmp_reg,
169599 .u(field_bit_off),
169600 );
169601 }
169602
169603 if (field_extra_bits > 0) try self.truncateRegister(field_ty, dst_reg);
169604
169605 const dst_mcv = MCValue{ .register = dst_reg };
169606 break :result if (field_is_gp)
169607 dst_mcv
169608 else
169609 try self.copyToRegisterWithInstTracking(inst, field_ty, dst_mcv);
169610 },
169611 else => return self.fail("TODO implement airStructFieldVal for {}", .{src_mcv}),
169612 }
169613 };
169614 return self.finishAir(inst, result, .{ extra.struct_operand, .none, .none });
169615}
169616
169617fn airFieldParentPtr(self: *CodeGen, inst: Air.Inst.Index) !void {
169618 const ty_pl = self.air.instructions.items(.data)[@intFromEnum(inst)].ty_pl;
169619 const extra = self.air.extraData(Air.FieldParentPtr, ty_pl.payload).data;
169620
169621 const ptr_agg_ty = self.typeOfIndex(inst);
169622 const src_mcv = try self.resolveInst(extra.field_ptr);
169623 const dst_mcv = if (src_mcv.isRegisterOffset() and
169624 self.reuseOperand(inst, extra.field_ptr, 0, src_mcv))
169625 src_mcv
169626 else
169627 try self.copyToRegisterWithInstTracking(inst, ptr_agg_ty, src_mcv);
169628 const result = dst_mcv.offset(-self.fieldOffset(ptr_agg_ty, self.typeOf(extra.field_ptr), extra.field_index));
169629 return self.finishAir(inst, result, .{ extra.field_ptr, .none, .none });
169630}
169631
169632174853fn genUnOp(self: *CodeGen, maybe_inst: ?Air.Inst.Index, tag: Air.Inst.Tag, src_air: Air.Inst.Ref) !MCValue {
169633174854 const pt = self.pt;
169634174855 const zcu = pt.zcu;
......@@ -169732,6 +174953,7 @@ fn genUnOpMir(self: *CodeGen, mir_tag: Mir.Inst.FixedTag, dst_ty: Type, dst_mcv:
169732174953 .eflags,
169733174954 .register_overflow,
169734174955 .register_mask,
174956 .indirect_load_frame,
169735174957 .lea_frame,
169736174958 .lea_nav,
169737174959 .lea_uav,
......@@ -170401,495 +175623,6 @@ fn genShiftBinOpMir(
170401175623 });
170402175624}
170403175625
170404/// Result is always a register.
170405/// Clobbers .rcx for non-immediate rhs, therefore care is needed to spill .rcx upfront.
170406/// Asserts .rcx is free.
170407fn genShiftBinOp(
170408 self: *CodeGen,
170409 air_tag: Air.Inst.Tag,
170410 maybe_inst: ?Air.Inst.Index,
170411 lhs_mcv: MCValue,
170412 rhs_mcv: MCValue,
170413 lhs_ty: Type,
170414 rhs_ty: Type,
170415) !MCValue {
170416 const pt = self.pt;
170417 const zcu = pt.zcu;
170418 if (lhs_ty.zigTypeTag(zcu) == .vector) return self.fail("TODO implement genShiftBinOp for {}", .{
170419 lhs_ty.fmt(pt),
170420 });
170421
170422 try self.register_manager.getKnownReg(.rcx, null);
170423 const rcx_lock = self.register_manager.lockReg(.rcx);
170424 defer if (rcx_lock) |lock| self.register_manager.unlockReg(lock);
170425
170426 const mat_lhs_mcv: MCValue, const can_reuse_lhs = switch (lhs_mcv) {
170427 .register => |lhs_reg| switch (lhs_reg.class()) {
170428 .general_purpose => .{ lhs_mcv, true },
170429 else => lhs: {
170430 const mat_lhs_mcv = try self.allocTempRegOrMem(lhs_ty, true);
170431 try self.genCopy(lhs_ty, mat_lhs_mcv, lhs_mcv, .{});
170432 break :lhs .{ mat_lhs_mcv, false };
170433 },
170434 },
170435 else => .{ lhs_mcv, true },
170436 };
170437 const lhs_lock = switch (mat_lhs_mcv) {
170438 .register => |reg| self.register_manager.lockReg(reg),
170439 else => null,
170440 };
170441 defer if (lhs_lock) |lock| self.register_manager.unlockReg(lock);
170442
170443 const rhs_lock = switch (rhs_mcv) {
170444 .register => |reg| self.register_manager.lockReg(reg),
170445 else => null,
170446 };
170447 defer if (rhs_lock) |lock| self.register_manager.unlockReg(lock);
170448
170449 const dst_mcv: MCValue = dst: {
170450 if (can_reuse_lhs) if (maybe_inst) |inst| {
170451 const bin_op = self.air.instructions.items(.data)[@intFromEnum(inst)].bin_op;
170452 if (self.reuseOperand(inst, bin_op.lhs, 0, mat_lhs_mcv)) break :dst mat_lhs_mcv;
170453 };
170454 const dst_mcv = try self.allocRegOrMemAdvanced(lhs_ty, maybe_inst, true);
170455 try self.genCopy(lhs_ty, dst_mcv, mat_lhs_mcv, .{});
170456 break :dst dst_mcv;
170457 };
170458
170459 const signedness = lhs_ty.intInfo(zcu).signedness;
170460 try self.genShiftBinOpMir(switch (air_tag) {
170461 .shl, .shl_exact => switch (signedness) {
170462 .signed => .{ ._l, .sa },
170463 .unsigned => .{ ._l, .sh },
170464 },
170465 .shr, .shr_exact => switch (signedness) {
170466 .signed => .{ ._r, .sa },
170467 .unsigned => .{ ._r, .sh },
170468 },
170469 else => unreachable,
170470 }, lhs_ty, dst_mcv, rhs_ty, rhs_mcv);
170471 return dst_mcv;
170472}
170473
170474/// Result is always a register.
170475/// Clobbers .rax and .rdx therefore care is needed to spill .rax and .rdx upfront.
170476/// Asserts .rax and .rdx are free.
170477fn genMulDivBinOp(
170478 self: *CodeGen,
170479 tag: Air.Inst.Tag,
170480 maybe_inst: ?Air.Inst.Index,
170481 dst_ty: Type,
170482 src_ty: Type,
170483 lhs_mcv: MCValue,
170484 rhs_mcv: MCValue,
170485) !MCValue {
170486 const pt = self.pt;
170487 const zcu = pt.zcu;
170488 if (dst_ty.zigTypeTag(zcu) == .vector or dst_ty.zigTypeTag(zcu) == .float) return self.fail(
170489 "TODO implement genMulDivBinOp for {s} from {} to {}",
170490 .{ @tagName(tag), src_ty.fmt(pt), dst_ty.fmt(pt) },
170491 );
170492 const dst_abi_size: u32 = @intCast(dst_ty.abiSize(zcu));
170493 const src_abi_size: u32 = @intCast(src_ty.abiSize(zcu));
170494
170495 assert(self.register_manager.isRegFree(.rax));
170496 assert(self.register_manager.isRegFree(.rcx));
170497 assert(self.register_manager.isRegFree(.rdx));
170498 assert(self.eflags_inst == null);
170499
170500 if (dst_abi_size == 16 and src_abi_size == 16) {
170501 assert(tag == .mul or tag == .mul_wrap);
170502 const reg_locks = self.register_manager.lockRegs(2, .{ .rax, .rdx });
170503 defer for (reg_locks) |reg_lock| if (reg_lock) |lock| self.register_manager.unlockReg(lock);
170504
170505 const mat_lhs_mcv = switch (lhs_mcv) {
170506 .load_nav, .load_uav, .load_lazy_sym => mat_lhs_mcv: {
170507 // TODO clean this up!
170508 const addr_reg = try self.copyToTmpRegister(.usize, lhs_mcv.address());
170509 break :mat_lhs_mcv MCValue{ .indirect = .{ .reg = addr_reg } };
170510 },
170511 else => lhs_mcv,
170512 };
170513 const mat_lhs_lock = switch (mat_lhs_mcv) {
170514 .indirect => |reg_off| self.register_manager.lockReg(reg_off.reg),
170515 else => null,
170516 };
170517 defer if (mat_lhs_lock) |lock| self.register_manager.unlockReg(lock);
170518 const mat_rhs_mcv = switch (rhs_mcv) {
170519 .load_nav, .load_uav, .load_lazy_sym => mat_rhs_mcv: {
170520 // TODO clean this up!
170521 const addr_reg = try self.copyToTmpRegister(.usize, rhs_mcv.address());
170522 break :mat_rhs_mcv MCValue{ .indirect = .{ .reg = addr_reg } };
170523 },
170524 else => rhs_mcv,
170525 };
170526 const mat_rhs_lock = switch (mat_rhs_mcv) {
170527 .indirect => |reg_off| self.register_manager.lockReg(reg_off.reg),
170528 else => null,
170529 };
170530 defer if (mat_rhs_lock) |lock| self.register_manager.unlockReg(lock);
170531
170532 const tmp_reg = try self.register_manager.allocReg(null, abi.RegisterClass.gp);
170533 const tmp_lock = self.register_manager.lockRegAssumeUnused(tmp_reg);
170534 defer self.register_manager.unlockReg(tmp_lock);
170535
170536 if (mat_lhs_mcv.isBase())
170537 try self.asmRegisterMemory(.{ ._, .mov }, .rax, try mat_lhs_mcv.mem(self, .{ .size = .qword }))
170538 else
170539 try self.asmRegisterRegister(.{ ._, .mov }, .rax, mat_lhs_mcv.register_pair[0]);
170540 if (mat_rhs_mcv.isBase()) try self.asmRegisterMemory(
170541 .{ ._, .mov },
170542 tmp_reg,
170543 try mat_rhs_mcv.address().offset(8).deref().mem(self, .{ .size = .qword }),
170544 ) else try self.asmRegisterRegister(.{ ._, .mov }, tmp_reg, mat_rhs_mcv.register_pair[1]);
170545 try self.asmRegisterRegister(.{ .i_, .mul }, tmp_reg, .rax);
170546 if (mat_rhs_mcv.isBase())
170547 try self.asmMemory(.{ ._, .mul }, try mat_rhs_mcv.mem(self, .{ .size = .qword }))
170548 else
170549 try self.asmRegister(.{ ._, .mul }, mat_rhs_mcv.register_pair[0]);
170550 try self.asmRegisterRegister(.{ ._, .add }, .rdx, tmp_reg);
170551 if (mat_lhs_mcv.isBase()) try self.asmRegisterMemory(
170552 .{ ._, .mov },
170553 tmp_reg,
170554 try mat_lhs_mcv.address().offset(8).deref().mem(self, .{ .size = .qword }),
170555 ) else try self.asmRegisterRegister(.{ ._, .mov }, tmp_reg, mat_lhs_mcv.register_pair[1]);
170556 if (mat_rhs_mcv.isBase())
170557 try self.asmRegisterMemory(.{ .i_, .mul }, tmp_reg, try mat_rhs_mcv.mem(self, .{ .size = .qword }))
170558 else
170559 try self.asmRegisterRegister(.{ .i_, .mul }, tmp_reg, mat_rhs_mcv.register_pair[0]);
170560 try self.asmRegisterRegister(.{ ._, .add }, .rdx, tmp_reg);
170561 return .{ .register_pair = .{ .rax, .rdx } };
170562 }
170563
170564 if (switch (tag) {
170565 else => unreachable,
170566 .mul, .mul_wrap => dst_abi_size != src_abi_size and dst_abi_size != src_abi_size * 2,
170567 .div_trunc, .div_floor, .div_exact, .rem, .mod => dst_abi_size != src_abi_size,
170568 } or src_abi_size > 8) {
170569 const src_info = src_ty.intInfo(zcu);
170570 switch (tag) {
170571 .mul, .mul_wrap => {
170572 const slow_inc = self.hasFeature(.slow_incdec);
170573 const limb_len = std.math.divCeil(u32, src_abi_size, 8) catch unreachable;
170574
170575 try self.spillRegisters(&.{ .rax, .rcx, .rdx });
170576 const reg_locks = self.register_manager.lockRegs(3, .{ .rax, .rcx, .rdx });
170577 defer for (reg_locks) |reg_lock| if (reg_lock) |lock|
170578 self.register_manager.unlockReg(lock);
170579
170580 const dst_mcv = try self.allocRegOrMemAdvanced(dst_ty, maybe_inst, false);
170581 try self.genInlineMemset(
170582 dst_mcv.address(),
170583 .{ .immediate = 0 },
170584 .{ .immediate = src_abi_size },
170585 .{},
170586 );
170587
170588 const temp_regs =
170589 try self.register_manager.allocRegs(4, @splat(null), abi.RegisterClass.gp);
170590 const temp_locks = self.register_manager.lockRegsAssumeUnused(4, temp_regs);
170591 defer for (temp_locks) |lock| self.register_manager.unlockReg(lock);
170592
170593 try self.asmRegisterRegister(.{ ._, .xor }, temp_regs[0].to32(), temp_regs[0].to32());
170594
170595 const outer_loop: Mir.Inst.Index = @intCast(self.mir_instructions.len);
170596 try self.asmRegisterMemory(.{ ._, .mov }, temp_regs[1].to64(), .{
170597 .base = .{ .frame = rhs_mcv.load_frame.index },
170598 .mod = .{ .rm = .{
170599 .size = .qword,
170600 .index = temp_regs[0].to64(),
170601 .scale = .@"8",
170602 .disp = rhs_mcv.load_frame.off,
170603 } },
170604 });
170605 try self.asmRegisterRegister(.{ ._, .@"test" }, temp_regs[1].to64(), temp_regs[1].to64());
170606 const skip_inner = try self.asmJccReloc(.z, undefined);
170607
170608 try self.asmRegisterRegister(.{ ._, .xor }, temp_regs[2].to32(), temp_regs[2].to32());
170609 try self.asmRegisterRegister(.{ ._, .mov }, temp_regs[3].to32(), temp_regs[0].to32());
170610 try self.asmRegisterRegister(.{ ._, .xor }, .ecx, .ecx);
170611 try self.asmRegisterRegister(.{ ._, .xor }, .edx, .edx);
170612
170613 const inner_loop: Mir.Inst.Index = @intCast(self.mir_instructions.len);
170614 try self.asmRegisterImmediate(.{ ._r, .sh }, .cl, .u(1));
170615 try self.asmMemoryRegister(.{ ._, .adc }, .{
170616 .base = .{ .frame = dst_mcv.load_frame.index },
170617 .mod = .{ .rm = .{
170618 .size = .qword,
170619 .index = temp_regs[3].to64(),
170620 .scale = .@"8",
170621 .disp = dst_mcv.load_frame.off,
170622 } },
170623 }, .rdx);
170624 try self.asmSetccRegister(.c, .cl);
170625
170626 try self.asmRegisterMemory(.{ ._, .mov }, .rax, .{
170627 .base = .{ .frame = lhs_mcv.load_frame.index },
170628 .mod = .{ .rm = .{
170629 .size = .qword,
170630 .index = temp_regs[2].to64(),
170631 .scale = .@"8",
170632 .disp = lhs_mcv.load_frame.off,
170633 } },
170634 });
170635 try self.asmRegister(.{ ._, .mul }, temp_regs[1].to64());
170636
170637 try self.asmRegisterImmediate(.{ ._r, .sh }, .ch, .u(1));
170638 try self.asmMemoryRegister(.{ ._, .adc }, .{
170639 .base = .{ .frame = dst_mcv.load_frame.index },
170640 .mod = .{ .rm = .{
170641 .size = .qword,
170642 .index = temp_regs[3].to64(),
170643 .scale = .@"8",
170644 .disp = dst_mcv.load_frame.off,
170645 } },
170646 }, .rax);
170647 try self.asmSetccRegister(.c, .ch);
170648
170649 if (slow_inc) {
170650 try self.asmRegisterImmediate(.{ ._, .add }, temp_regs[2].to32(), .u(1));
170651 try self.asmRegisterImmediate(.{ ._, .add }, temp_regs[3].to32(), .u(1));
170652 } else {
170653 try self.asmRegister(.{ ._c, .in }, temp_regs[2].to32());
170654 try self.asmRegister(.{ ._c, .in }, temp_regs[3].to32());
170655 }
170656 try self.asmRegisterImmediate(.{ ._, .cmp }, temp_regs[3].to32(), .u(limb_len));
170657 _ = try self.asmJccReloc(.b, inner_loop);
170658
170659 self.performReloc(skip_inner);
170660 if (slow_inc) {
170661 try self.asmRegisterImmediate(.{ ._, .add }, temp_regs[0].to32(), .u(1));
170662 } else {
170663 try self.asmRegister(.{ ._c, .in }, temp_regs[0].to32());
170664 }
170665 try self.asmRegisterImmediate(.{ ._, .cmp }, temp_regs[0].to32(), .u(limb_len));
170666 _ = try self.asmJccReloc(.b, outer_loop);
170667
170668 return dst_mcv;
170669 },
170670 .div_trunc, .div_floor, .div_exact, .rem, .mod => switch (src_info.signedness) {
170671 .signed => {},
170672 .unsigned => {
170673 const dst_mcv = try self.allocRegOrMemAdvanced(dst_ty, maybe_inst, false);
170674 const manyptr_u32_ty = try pt.ptrType(.{
170675 .child = .u32_type,
170676 .flags = .{
170677 .size = .many,
170678 },
170679 });
170680 const manyptr_const_u32_ty = try pt.ptrType(.{
170681 .child = .u32_type,
170682 .flags = .{
170683 .size = .many,
170684 .is_const = true,
170685 },
170686 });
170687 _ = try self.genCall(.{ .extern_func = .{
170688 .return_type = .void_type,
170689 .param_types = &.{
170690 manyptr_u32_ty.toIntern(),
170691 manyptr_const_u32_ty.toIntern(),
170692 manyptr_const_u32_ty.toIntern(),
170693 .usize_type,
170694 },
170695 .sym = switch (tag) {
170696 .div_trunc,
170697 .div_floor,
170698 .div_exact,
170699 => "__udivei4",
170700 .rem,
170701 .mod,
170702 => "__umodei4",
170703 else => unreachable,
170704 },
170705 } }, &.{
170706 manyptr_u32_ty,
170707 manyptr_const_u32_ty,
170708 manyptr_const_u32_ty,
170709 .usize,
170710 }, &.{
170711 dst_mcv.address(),
170712 lhs_mcv.address(),
170713 rhs_mcv.address(),
170714 .{ .immediate = 8 * src_abi_size },
170715 }, .{});
170716 return dst_mcv;
170717 },
170718 },
170719 else => {},
170720 }
170721 return self.fail(
170722 "TODO implement genMulDivBinOp for {s} from {} to {}",
170723 .{ @tagName(tag), src_ty.fmt(pt), dst_ty.fmt(pt) },
170724 );
170725 }
170726 const ty = if (dst_abi_size <= 8) dst_ty else src_ty;
170727 const abi_size = if (dst_abi_size <= 8) dst_abi_size else src_abi_size;
170728
170729 const reg_locks = self.register_manager.lockRegs(2, .{ .rax, .rdx });
170730 defer for (reg_locks) |reg_lock| if (reg_lock) |lock| self.register_manager.unlockReg(lock);
170731
170732 const int_info = ty.intInfo(zcu);
170733 const signedness = int_info.signedness;
170734 switch (tag) {
170735 .mul,
170736 .mul_wrap,
170737 .rem,
170738 .div_trunc,
170739 .div_exact,
170740 => {
170741 const track_inst_rax = switch (tag) {
170742 .mul, .mul_wrap => if (dst_abi_size <= 8) maybe_inst else null,
170743 .div_exact, .div_trunc => maybe_inst,
170744 else => null,
170745 };
170746 const track_inst_rdx = switch (tag) {
170747 .rem => maybe_inst,
170748 else => null,
170749 };
170750 try self.register_manager.getKnownReg(.rax, track_inst_rax);
170751 try self.register_manager.getKnownReg(.rdx, track_inst_rdx);
170752
170753 try self.genIntMulDivOpMir(switch (signedness) {
170754 .signed => switch (tag) {
170755 .mul, .mul_wrap => .{ .i_, .mul },
170756 .div_trunc, .div_exact, .rem => .{ .i_, .div },
170757 else => unreachable,
170758 },
170759 .unsigned => switch (tag) {
170760 .mul, .mul_wrap => .{ ._, .mul },
170761 .div_trunc, .div_exact, .rem => .{ ._, .div },
170762 else => unreachable,
170763 },
170764 }, ty, lhs_mcv, rhs_mcv);
170765
170766 switch (tag) {
170767 .mul, .rem, .div_trunc, .div_exact => {},
170768 .mul_wrap => if (dst_ty.intInfo(zcu).bits < 8 * dst_abi_size) try self.truncateRegister(
170769 dst_ty,
170770 if (dst_abi_size <= 8) .rax else .rdx,
170771 ),
170772 else => unreachable,
170773 }
170774
170775 if (dst_abi_size <= 8) return .{ .register = registerAlias(switch (tag) {
170776 .mul, .mul_wrap, .div_trunc, .div_exact => .rax,
170777 .rem => .rdx,
170778 else => unreachable,
170779 }, dst_abi_size) };
170780
170781 const dst_mcv = try self.allocRegOrMemAdvanced(dst_ty, maybe_inst, false);
170782 try self.asmMemoryRegister(.{ ._, .mov }, .{
170783 .base = .{ .frame = dst_mcv.load_frame.index },
170784 .mod = .{ .rm = .{
170785 .size = .qword,
170786 .disp = dst_mcv.load_frame.off,
170787 } },
170788 }, .rax);
170789 try self.asmMemoryRegister(.{ ._, .mov }, .{
170790 .base = .{ .frame = dst_mcv.load_frame.index },
170791 .mod = .{ .rm = .{
170792 .size = .qword,
170793 .disp = dst_mcv.load_frame.off + 8,
170794 } },
170795 }, .rdx);
170796 return dst_mcv;
170797 },
170798
170799 .mod => {
170800 try self.register_manager.getKnownReg(.rax, null);
170801 try self.register_manager.getKnownReg(
170802 .rdx,
170803 if (signedness == .unsigned) maybe_inst else null,
170804 );
170805
170806 switch (signedness) {
170807 .signed => {
170808 const lhs_lock = switch (lhs_mcv) {
170809 .register => |reg| self.register_manager.lockReg(reg),
170810 else => null,
170811 };
170812 defer if (lhs_lock) |lock| self.register_manager.unlockReg(lock);
170813 const rhs_lock = switch (rhs_mcv) {
170814 .register => |reg| self.register_manager.lockReg(reg),
170815 else => null,
170816 };
170817 defer if (rhs_lock) |lock| self.register_manager.unlockReg(lock);
170818
170819 // hack around hazard between rhs and div_floor by copying rhs to another register
170820 const rhs_copy = try self.copyToTmpRegister(ty, rhs_mcv);
170821 const rhs_copy_lock = self.register_manager.lockRegAssumeUnused(rhs_copy);
170822 defer self.register_manager.unlockReg(rhs_copy_lock);
170823
170824 const div_floor = try self.genInlineIntDivFloor(ty, lhs_mcv, rhs_mcv);
170825 try self.genIntMulComplexOpMir(ty, div_floor, .{ .register = rhs_copy });
170826 const div_floor_lock = self.register_manager.lockReg(div_floor.register);
170827 defer if (div_floor_lock) |lock| self.register_manager.unlockReg(lock);
170828
170829 const result: MCValue = if (maybe_inst) |inst|
170830 try self.copyToRegisterWithInstTracking(inst, ty, lhs_mcv)
170831 else
170832 .{ .register = try self.copyToTmpRegister(ty, lhs_mcv) };
170833 try self.genBinOpMir(.{ ._, .sub }, ty, result, div_floor);
170834
170835 return result;
170836 },
170837 .unsigned => {
170838 try self.genIntMulDivOpMir(.{ ._, .div }, ty, lhs_mcv, rhs_mcv);
170839 return .{ .register = registerAlias(.rdx, abi_size) };
170840 },
170841 }
170842 },
170843
170844 .div_floor => {
170845 try self.register_manager.getKnownReg(
170846 .rax,
170847 if (signedness == .unsigned) maybe_inst else null,
170848 );
170849 try self.register_manager.getKnownReg(.rdx, null);
170850
170851 const lhs_lock: ?RegisterLock = switch (lhs_mcv) {
170852 .register => |reg| self.register_manager.lockRegAssumeUnused(reg),
170853 else => null,
170854 };
170855 defer if (lhs_lock) |lock| self.register_manager.unlockReg(lock);
170856
170857 const actual_rhs_mcv: MCValue = blk: {
170858 switch (signedness) {
170859 .signed => {
170860 const rhs_lock: ?RegisterLock = switch (rhs_mcv) {
170861 .register => |reg| self.register_manager.lockRegAssumeUnused(reg),
170862 else => null,
170863 };
170864 defer if (rhs_lock) |lock| self.register_manager.unlockReg(lock);
170865
170866 if (maybe_inst) |inst| {
170867 break :blk try self.copyToRegisterWithInstTracking(inst, ty, rhs_mcv);
170868 }
170869 break :blk MCValue{ .register = try self.copyToTmpRegister(ty, rhs_mcv) };
170870 },
170871 .unsigned => break :blk rhs_mcv,
170872 }
170873 };
170874 const rhs_lock: ?RegisterLock = switch (actual_rhs_mcv) {
170875 .register => |reg| self.register_manager.lockReg(reg),
170876 else => null,
170877 };
170878 defer if (rhs_lock) |lock| self.register_manager.unlockReg(lock);
170879
170880 switch (signedness) {
170881 .signed => return try self.genInlineIntDivFloor(ty, lhs_mcv, actual_rhs_mcv),
170882 .unsigned => {
170883 try self.genIntMulDivOpMir(.{ ._, .div }, ty, lhs_mcv, actual_rhs_mcv);
170884 return .{ .register = registerAlias(.rax, abi_size) };
170885 },
170886 }
170887 },
170888
170889 else => unreachable,
170890 }
170891}
170892
170893175626fn genBinOp(
170894175627 self: *CodeGen,
170895175628 maybe_inst: ?Air.Inst.Index,
......@@ -170904,7 +175637,7 @@ fn genBinOp(
170904175637 const abi_size: u32 = @intCast(lhs_ty.abiSize(zcu));
170905175638
170906175639 if (lhs_ty.isRuntimeFloat()) libcall: {
170907 const float_bits = lhs_ty.floatBits(self.target.*);
175640 const float_bits = lhs_ty.floatBits(self.target);
170908175641 const type_needs_libcall = switch (float_bits) {
170909175642 16 => !self.hasFeature(.f16c),
170910175643 32, 64 => false,
......@@ -171083,7 +175816,7 @@ fn genBinOp(
171083175816 },
171084175817 };
171085175818 if (sse_op and ((lhs_ty.scalarType(zcu).isRuntimeFloat() and
171086 lhs_ty.scalarType(zcu).floatBits(self.target.*) == 80) or
175819 lhs_ty.scalarType(zcu).floatBits(self.target) == 80) or
171087175820 lhs_ty.abiSize(zcu) > self.vectorSize(.float)))
171088175821 return self.fail("TODO implement genBinOp for {s} {}", .{ @tagName(air_tag), lhs_ty.fmt(pt) });
171089175822
......@@ -171403,6 +176136,7 @@ fn genBinOp(
171403176136 .register_offset,
171404176137 .register_overflow,
171405176138 .register_mask,
176139 .indirect_load_frame,
171406176140 .lea_frame,
171407176141 .load_nav,
171408176142 .lea_nav,
......@@ -171474,7 +176208,7 @@ fn genBinOp(
171474176208 const dst_reg = registerAlias(dst_mcv.getReg().?, abi_size);
171475176209 const mir_tag = @as(?Mir.Inst.FixedTag, switch (lhs_ty.zigTypeTag(zcu)) {
171476176210 else => unreachable,
171477 .float => switch (lhs_ty.floatBits(self.target.*)) {
176211 .float => switch (lhs_ty.floatBits(self.target)) {
171478176212 16 => {
171479176213 assert(self.hasFeature(.f16c));
171480176214 const lhs_reg = if (copied_to_dst) dst_reg else registerAlias(lhs_mcv.getReg().?, abi_size);
......@@ -171917,7 +176651,7 @@ fn genBinOp(
171917176651 },
171918176652 else => null,
171919176653 },
171920 .float => switch (lhs_ty.childType(zcu).floatBits(self.target.*)) {
176654 .float => switch (lhs_ty.childType(zcu).floatBits(self.target)) {
171921176655 16 => tag: {
171922176656 assert(self.hasFeature(.f16c));
171923176657 const lhs_reg = if (copied_to_dst) dst_reg else registerAlias(lhs_mcv.getReg().?, abi_size);
......@@ -172238,7 +176972,7 @@ fn genBinOp(
172238176972 lhs_reg,
172239176973 try src_mcv.mem(self, .{ .size = switch (lhs_ty.zigTypeTag(zcu)) {
172240176974 else => .fromSize(abi_size),
172241 .vector => .fromBitSize(dst_reg.bitSize()),
176975 .vector => dst_reg.size(),
172242176976 } }),
172243176977 ) else try self.asmRegisterRegisterRegister(
172244176978 mir_tag,
......@@ -172256,7 +176990,7 @@ fn genBinOp(
172256176990 dst_reg,
172257176991 try src_mcv.mem(self, .{ .size = switch (lhs_ty.zigTypeTag(zcu)) {
172258176992 else => .fromSize(abi_size),
172259 .vector => .fromBitSize(dst_reg.bitSize()),
176993 .vector => dst_reg.size(),
172260176994 } }),
172261176995 ) else try self.asmRegisterRegister(
172262176996 mir_tag,
......@@ -172284,7 +177018,7 @@ fn genBinOp(
172284177018 lhs_reg,
172285177019 try src_mcv.mem(self, .{ .size = switch (lhs_ty.zigTypeTag(zcu)) {
172286177020 else => .fromSize(abi_size),
172287 .vector => .fromBitSize(dst_reg.bitSize()),
177021 .vector => dst_reg.size(),
172288177022 } }),
172289177023 imm,
172290177024 ) else try self.asmRegisterRegisterRegisterImmediate(
......@@ -172304,7 +177038,7 @@ fn genBinOp(
172304177038 dst_reg,
172305177039 try src_mcv.mem(self, .{ .size = switch (lhs_ty.zigTypeTag(zcu)) {
172306177040 else => .fromSize(abi_size),
172307 .vector => .fromBitSize(dst_reg.bitSize()),
177041 .vector => dst_reg.size(),
172308177042 } }),
172309177043 imm,
172310177044 ) else try self.asmRegisterRegisterImmediate(
......@@ -172321,29 +177055,20 @@ fn genBinOp(
172321177055 }
172322177056
172323177057 switch (air_tag) {
172324 .add, .add_wrap, .sub, .sub_wrap, .mul, .mul_wrap, .div_float, .div_exact => {},
172325 .div_trunc, .div_floor => try self.genRound(lhs_ty, dst_reg, .{ .register = dst_reg }, .{
172326 .direction = switch (air_tag) {
172327 .div_trunc => .zero,
172328 .div_floor => .down,
172329 else => unreachable,
172330 },
172331 .precision = .inexact,
172332 }),
172333177058 .bit_and, .bit_or, .xor => {},
172334177059 .max, .min => if (maybe_mask_reg) |mask_reg| if (self.hasFeature(.avx)) {
172335177060 const rhs_copy_reg = registerAlias(src_mcv.getReg().?, abi_size);
172336177061
172337177062 try self.asmRegisterRegisterRegisterImmediate(
172338177063 @as(?Mir.Inst.FixedTag, switch (lhs_ty.zigTypeTag(zcu)) {
172339 .float => switch (lhs_ty.floatBits(self.target.*)) {
177064 .float => switch (lhs_ty.floatBits(self.target)) {
172340177065 32 => .{ .v_ss, .cmp },
172341177066 64 => .{ .v_sd, .cmp },
172342177067 16, 80, 128 => null,
172343177068 else => unreachable,
172344177069 },
172345177070 .vector => switch (lhs_ty.childType(zcu).zigTypeTag(zcu)) {
172346 .float => switch (lhs_ty.childType(zcu).floatBits(self.target.*)) {
177071 .float => switch (lhs_ty.childType(zcu).floatBits(self.target)) {
172347177072 32 => switch (lhs_ty.vectorLen(zcu)) {
172348177073 1 => .{ .v_ss, .cmp },
172349177074 2...8 => .{ .v_ps, .cmp },
......@@ -172370,14 +177095,14 @@ fn genBinOp(
172370177095 );
172371177096 try self.asmRegisterRegisterRegisterRegister(
172372177097 @as(?Mir.Inst.FixedTag, switch (lhs_ty.zigTypeTag(zcu)) {
172373 .float => switch (lhs_ty.floatBits(self.target.*)) {
177098 .float => switch (lhs_ty.floatBits(self.target)) {
172374177099 32 => .{ .v_ps, .blendv },
172375177100 64 => .{ .v_pd, .blendv },
172376177101 16, 80, 128 => null,
172377177102 else => unreachable,
172378177103 },
172379177104 .vector => switch (lhs_ty.childType(zcu).zigTypeTag(zcu)) {
172380 .float => switch (lhs_ty.childType(zcu).floatBits(self.target.*)) {
177105 .float => switch (lhs_ty.childType(zcu).floatBits(self.target)) {
172381177106 32 => switch (lhs_ty.vectorLen(zcu)) {
172382177107 1...8 => .{ .v_ps, .blendv },
172383177108 else => null,
......@@ -172404,14 +177129,14 @@ fn genBinOp(
172404177129 const has_blend = self.hasFeature(.sse4_1);
172405177130 try self.asmRegisterRegisterImmediate(
172406177131 @as(?Mir.Inst.FixedTag, switch (lhs_ty.zigTypeTag(zcu)) {
172407 .float => switch (lhs_ty.floatBits(self.target.*)) {
177132 .float => switch (lhs_ty.floatBits(self.target)) {
172408177133 32 => .{ ._ss, .cmp },
172409177134 64 => .{ ._sd, .cmp },
172410177135 16, 80, 128 => null,
172411177136 else => unreachable,
172412177137 },
172413177138 .vector => switch (lhs_ty.childType(zcu).zigTypeTag(zcu)) {
172414 .float => switch (lhs_ty.childType(zcu).floatBits(self.target.*)) {
177139 .float => switch (lhs_ty.childType(zcu).floatBits(self.target)) {
172415177140 32 => switch (lhs_ty.vectorLen(zcu)) {
172416177141 1 => .{ ._ss, .cmp },
172417177142 2...4 => .{ ._ps, .cmp },
......@@ -172437,14 +177162,14 @@ fn genBinOp(
172437177162 );
172438177163 if (has_blend) try self.asmRegisterRegisterRegister(
172439177164 @as(?Mir.Inst.FixedTag, switch (lhs_ty.zigTypeTag(zcu)) {
172440 .float => switch (lhs_ty.floatBits(self.target.*)) {
177165 .float => switch (lhs_ty.floatBits(self.target)) {
172441177166 32 => .{ ._ps, .blendv },
172442177167 64 => .{ ._pd, .blendv },
172443177168 16, 80, 128 => null,
172444177169 else => unreachable,
172445177170 },
172446177171 .vector => switch (lhs_ty.childType(zcu).zigTypeTag(zcu)) {
172447 .float => switch (lhs_ty.childType(zcu).floatBits(self.target.*)) {
177172 .float => switch (lhs_ty.childType(zcu).floatBits(self.target)) {
172448177173 32 => switch (lhs_ty.vectorLen(zcu)) {
172449177174 1...4 => .{ ._ps, .blendv },
172450177175 else => null,
......@@ -172467,14 +177192,14 @@ fn genBinOp(
172467177192 mask_reg,
172468177193 ) else {
172469177194 const mir_fixes = @as(?Mir.Inst.Fixes, switch (lhs_ty.zigTypeTag(zcu)) {
172470 .float => switch (lhs_ty.floatBits(self.target.*)) {
177195 .float => switch (lhs_ty.floatBits(self.target)) {
172471177196 32 => ._ps,
172472177197 64 => ._pd,
172473177198 16, 80, 128 => null,
172474177199 else => unreachable,
172475177200 },
172476177201 .vector => switch (lhs_ty.childType(zcu).zigTypeTag(zcu)) {
172477 .float => switch (lhs_ty.childType(zcu).floatBits(self.target.*)) {
177202 .float => switch (lhs_ty.childType(zcu).floatBits(self.target)) {
172478177203 32 => switch (lhs_ty.vectorLen(zcu)) {
172479177204 1...4 => ._ps,
172480177205 else => null,
......@@ -172596,6 +177321,7 @@ fn genBinOpMir(
172596177321 .lea_uav,
172597177322 .lea_lazy_sym,
172598177323 .lea_extern_func,
177324 .indirect_load_frame,
172599177325 .elementwise_args,
172600177326 .reserved_frame,
172601177327 .air_ref,
......@@ -172632,6 +177358,7 @@ fn genBinOpMir(
172632177358 .undef,
172633177359 .register_overflow,
172634177360 .register_mask,
177361 .indirect_load_frame,
172635177362 .elementwise_args,
172636177363 .reserved_frame,
172637177364 => unreachable,
......@@ -172803,6 +177530,7 @@ fn genBinOpMir(
172803177530 .undef,
172804177531 .register_overflow,
172805177532 .register_mask,
177533 .indirect_load_frame,
172806177534 .elementwise_args,
172807177535 .reserved_frame,
172808177536 .air_ref,
......@@ -172906,6 +177634,7 @@ fn genBinOpMir(
172906177634 .undef,
172907177635 .register_overflow,
172908177636 .register_mask,
177637 .indirect_load_frame,
172909177638 .elementwise_args,
172910177639 .reserved_frame,
172911177640 .air_ref,
......@@ -173036,6 +177765,7 @@ fn genIntMulComplexOpMir(self: *CodeGen, dst_ty: Type, dst_mcv: MCValue, src_mcv
173036177765 .register_offset,
173037177766 .register_overflow,
173038177767 .register_mask,
177768 .indirect_load_frame,
173039177769 .lea_frame,
173040177770 .lea_nav,
173041177771 .lea_uav,
......@@ -173073,6 +177803,7 @@ fn genIntMulComplexOpMir(self: *CodeGen, dst_ty: Type, dst_mcv: MCValue, src_mcv
173073177803 .register_quadruple,
173074177804 .register_overflow,
173075177805 .register_mask,
177806 .indirect_load_frame,
173076177807 .elementwise_args,
173077177808 .reserved_frame,
173078177809 .air_ref,
......@@ -173195,11 +177926,20 @@ fn airArg(self: *CodeGen, inst: Air.Inst.Index) !void {
173195177926 break :result src_mcv;
173196177927 },
173197177928 .indirect => |reg_off| {
173198 self.register_manager.getRegAssumeFree(reg_off.reg, inst);
177929 self.register_manager.getRegAssumeFree(reg_off.reg, null);
173199177930 const dst_mcv = try self.allocRegOrMem(inst, false);
173200177931 try self.genCopy(arg_ty, dst_mcv, src_mcv, .{});
173201177932 break :result dst_mcv;
173202177933 },
177934 .indirect_load_frame => |frame_addr| {
177935 const dst_mcv = try self.allocRegOrMem(inst, false);
177936 const ptr_reg = try self.register_manager.allocReg(null, abi.RegisterClass.gp);
177937 const ptr_lock = self.register_manager.lockRegAssumeUnused(ptr_reg);
177938 defer self.register_manager.unlockReg(ptr_lock);
177939 try self.genSetReg(ptr_reg, .usize, .{ .load_frame = frame_addr }, .{});
177940 try self.genCopy(arg_ty, dst_mcv, .{ .indirect = .{ .reg = ptr_reg } }, .{});
177941 break :result dst_mcv;
177942 },
173203177943 .elementwise_args => |regs_frame_addr| {
173204177944 try self.spillEflagsIfOccupied();
173205177945
......@@ -173398,18 +178138,6 @@ fn genLocalDebugInfo(cg: *CodeGen, air_tag: Air.Inst.Tag, ty: Type, mcv: MCValue
173398178138 };
173399178139}
173400178140
173401fn airRetAddr(self: *CodeGen, inst: Air.Inst.Index) !void {
173402 const dst_mcv = try self.allocRegOrMem(inst, true);
173403 try self.genCopy(.usize, dst_mcv, .{ .load_frame = .{ .index = .ret_addr } }, .{});
173404 return self.finishAir(inst, dst_mcv, .{ .none, .none, .none });
173405}
173406
173407fn airFrameAddress(self: *CodeGen, inst: Air.Inst.Index) !void {
173408 const dst_mcv = try self.allocRegOrMem(inst, true);
173409 try self.genCopy(.usize, dst_mcv, .{ .lea_frame = .{ .index = .base_ptr } }, .{});
173410 return self.finishAir(inst, dst_mcv, .{ .none, .none, .none });
173411}
173412
173413178141fn airCall(self: *CodeGen, inst: Air.Inst.Index, modifier: std.builtin.CallModifier, opts: CopyOptions) !void {
173414178142 if (modifier == .always_tail) return self.fail("TODO implement tail calls for x86_64", .{});
173415178143
......@@ -173541,7 +178269,7 @@ fn genCall(self: *CodeGen, info: union(enum) {
173541178269 },
173542178270 .load_frame => {
173543178271 try self.genCopy(arg_ty, dst_arg, src_arg, opts);
173544 try self.freeValue(src_arg);
178272 try self.freeValue(src_arg, .{});
173545178273 },
173546178274 .elementwise_args => |regs_frame_addr| {
173547178275 const index_reg = try self.register_manager.allocReg(null, abi.RegisterClass.gp);
......@@ -173832,7 +178560,7 @@ fn airCmp(self: *CodeGen, inst: Air.Inst.Index, op: std.math.CompareOperator) !v
173832178560
173833178561 switch (ty.zigTypeTag(zcu)) {
173834178562 .float => {
173835 const float_bits = ty.floatBits(self.target.*);
178563 const float_bits = ty.floatBits(self.target);
173836178564 if (!switch (float_bits) {
173837178565 16 => self.hasFeature(.f16c),
173838178566 32 => self.hasFeature(.sse),
......@@ -174188,7 +178916,7 @@ fn airCmp(self: *CodeGen, inst: Air.Inst.Index, op: std.math.CompareOperator) !v
174188178916 defer if (dst_lock) |lock| self.register_manager.unlockReg(lock);
174189178917 const src_mcv = if (flipped) lhs_mcv else rhs_mcv;
174190178918
174191 switch (ty.floatBits(self.target.*)) {
178919 switch (ty.floatBits(self.target)) {
174192178920 16 => {
174193178921 assert(self.hasFeature(.f16c));
174194178922 const tmp1_reg =
......@@ -174265,39 +178993,6 @@ fn airCmpVector(self: *CodeGen, inst: Air.Inst.Index) !void {
174265178993 return self.finishAir(inst, dst_mcv, .{ extra.lhs, extra.rhs, .none });
174266178994}
174267178995
174268fn airCmpLtErrorsLen(self: *CodeGen, inst: Air.Inst.Index) !void {
174269 const pt = self.pt;
174270 const zcu = pt.zcu;
174271 const un_op = self.air.instructions.items(.data)[@intFromEnum(inst)].un_op;
174272
174273 const addr_reg = try self.register_manager.allocReg(null, abi.RegisterClass.gp);
174274 const addr_lock = self.register_manager.lockRegAssumeUnused(addr_reg);
174275 defer self.register_manager.unlockReg(addr_lock);
174276 const anyerror_lazy_sym: link.File.LazySymbol = .{ .kind = .const_data, .ty = .anyerror_type };
174277 try self.genLazySymbolRef(.lea, addr_reg, anyerror_lazy_sym);
174278
174279 try self.spillEflagsIfOccupied();
174280
174281 const op_ty = self.typeOf(un_op);
174282 const op_abi_size: u32 = @intCast(op_ty.abiSize(zcu));
174283 const op_mcv = try self.resolveInst(un_op);
174284 const dst_reg = switch (op_mcv) {
174285 .register => |reg| reg,
174286 else => try self.copyToTmpRegister(op_ty, op_mcv),
174287 };
174288 try self.asmRegisterMemory(
174289 .{ ._, .cmp },
174290 registerAlias(dst_reg, op_abi_size),
174291 .{
174292 .base = .{ .reg = addr_reg },
174293 .mod = .{ .rm = .{ .size = .fromSize(op_abi_size) } },
174294 },
174295 );
174296
174297 self.eflags_inst = inst;
174298 return self.finishAir(inst, .{ .eflags = .b }, .{ un_op, .none, .none });
174299}
174300
174301178996fn airTry(self: *CodeGen, inst: Air.Inst.Index) !void {
174302178997 const pl_op = self.air.instructions.items(.data)[@intFromEnum(inst)].pl_op;
174303178998 const extra = self.air.extraData(Air.Try, pl_op.payload);
......@@ -174335,12 +179030,12 @@ fn genTry(
174335179030 const reloc = try self.genCondBrMir(.anyerror, is_err_mcv);
174336179031
174337179032 if (self.liveness.operandDies(inst, 0)) {
174338 if (operand.toIndex()) |operand_inst| try self.processDeath(operand_inst);
179033 if (operand.toIndex()) |operand_inst| try self.processDeath(operand_inst, .{});
174339179034 }
174340179035
174341179036 const state = try self.saveState();
174342179037
174343 for (liveness_cond_br.else_deaths) |death| try self.processDeath(death);
179038 for (liveness_cond_br.else_deaths) |death| try self.processDeath(death, .{});
174344179039 try self.genBodyBlock(body);
174345179040 try self.restoreState(state, &.{}, .{
174346179041 .emit_instructions = false,
......@@ -174351,7 +179046,7 @@ fn genTry(
174351179046
174352179047 self.performReloc(reloc);
174353179048
174354 for (liveness_cond_br.then_deaths) |death| try self.processDeath(death);
179049 for (liveness_cond_br.then_deaths) |death| try self.processDeath(death, .{});
174355179050
174356179051 const result = if (self.liveness.isUnused(inst))
174357179052 .unreach
......@@ -174362,33 +179057,6 @@ fn genTry(
174362179057 return result;
174363179058}
174364179059
174365fn airDbgVar(cg: *CodeGen, inst: Air.Inst.Index) !void {
174366 if (cg.mod.strip) return;
174367 const air_tag = cg.air.instructions.items(.tag)[@intFromEnum(inst)];
174368 const pl_op = cg.air.instructions.items(.data)[@intFromEnum(inst)].pl_op;
174369 const air_name: Air.NullTerminatedString = @enumFromInt(pl_op.payload);
174370 const op_ty = cg.typeOf(pl_op.operand);
174371 const local_ty = switch (air_tag) {
174372 else => unreachable,
174373 .dbg_var_ptr => op_ty.childType(cg.pt.zcu),
174374 .dbg_var_val, .dbg_arg_inline => op_ty,
174375 };
174376
174377 try cg.mir_locals.append(cg.gpa, .{
174378 .name = switch (air_name) {
174379 .none => switch (air_tag) {
174380 else => unreachable,
174381 .dbg_arg_inline => .none,
174382 },
174383 else => try cg.addString(air_name.toSlice(cg.air)),
174384 },
174385 .type = local_ty.toIntern(),
174386 });
174387
174388 try cg.genLocalDebugInfo(air_tag, local_ty, try cg.resolveInst(pl_op.operand));
174389 return cg.finishAir(inst, .unreach, .{ pl_op.operand, .none, .none });
174390}
174391
174392179060fn genCondBrMir(self: *CodeGen, ty: Type, mcv: MCValue) !Mir.Inst.Index {
174393179061 const pt = self.pt;
174394179062 const abi_size = ty.abiSize(pt.zcu);
......@@ -174431,13 +179099,13 @@ fn airCondBr(self: *CodeGen, inst: Air.Inst.Index) !void {
174431179099 // that death now instead of later as this has an effect on
174432179100 // whether it needs to be spilled in the branches
174433179101 if (self.liveness.operandDies(inst, 0)) {
174434 if (pl_op.operand.toIndex()) |op_inst| try self.processDeath(op_inst);
179102 if (pl_op.operand.toIndex()) |op_inst| try self.processDeath(op_inst, .{});
174435179103 }
174436179104
174437179105 const state = try self.saveState();
174438179106 const reloc = try self.genCondBrMir(cond_ty, cond);
174439179107
174440 for (liveness_cond_br.then_deaths) |death| try self.processDeath(death);
179108 for (liveness_cond_br.then_deaths) |death| try self.processDeath(death, .{});
174441179109 try self.genBodyBlock(then_body);
174442179110 try self.restoreState(state, &.{}, .{
174443179111 .emit_instructions = false,
......@@ -174448,7 +179116,7 @@ fn airCondBr(self: *CodeGen, inst: Air.Inst.Index) !void {
174448179116
174449179117 self.performReloc(reloc);
174450179118
174451 for (liveness_cond_br.else_deaths) |death| try self.processDeath(death);
179119 for (liveness_cond_br.else_deaths) |death| try self.processDeath(death, .{});
174452179120 try self.genBodyBlock(else_body);
174453179121 try self.restoreState(state, &.{}, .{
174454179122 .emit_instructions = false,
......@@ -174460,177 +179128,6 @@ fn airCondBr(self: *CodeGen, inst: Air.Inst.Index) !void {
174460179128 // We already took care of pl_op.operand earlier, so there's nothing left to do.
174461179129}
174462179130
174463fn isNull(self: *CodeGen, inst: Air.Inst.Index, opt_ty: Type, opt_mcv: MCValue) !MCValue {
174464 const pt = self.pt;
174465 const zcu = pt.zcu;
174466 switch (opt_mcv) {
174467 .register_overflow => |ro| return .{ .eflags = ro.eflags.negate() },
174468 else => {},
174469 }
174470
174471 try self.spillEflagsIfOccupied();
174472
174473 const pl_ty = opt_ty.optionalChild(zcu);
174474
174475 const some_info: struct { off: u31, ty: Type } = if (opt_ty.optionalReprIsPayload(zcu))
174476 .{ .off = 0, .ty = if (pl_ty.isSlice(zcu)) pl_ty.slicePtrFieldType(zcu) else pl_ty }
174477 else
174478 .{ .off = @intCast(pl_ty.abiSize(zcu)), .ty = .bool };
174479
174480 self.eflags_inst = inst;
174481 switch (opt_mcv) {
174482 .none,
174483 .unreach,
174484 .dead,
174485 .undef,
174486 .immediate,
174487 .eflags,
174488 .register_triple,
174489 .register_quadruple,
174490 .register_offset,
174491 .register_overflow,
174492 .register_mask,
174493 .lea_nav,
174494 .lea_uav,
174495 .lea_lazy_sym,
174496 .lea_extern_func,
174497 .elementwise_args,
174498 .reserved_frame,
174499 .air_ref,
174500 => unreachable,
174501
174502 .lea_frame => {
174503 self.eflags_inst = null;
174504 return .{ .immediate = @intFromBool(false) };
174505 },
174506
174507 .register => |opt_reg| {
174508 if (some_info.off == 0) {
174509 const some_abi_size: u32 = @intCast(some_info.ty.abiSize(zcu));
174510 const alias_reg = registerAlias(opt_reg, some_abi_size);
174511 assert(some_abi_size * 8 == alias_reg.bitSize());
174512 try self.asmRegisterRegister(.{ ._, .@"test" }, alias_reg, alias_reg);
174513 return .{ .eflags = .z };
174514 }
174515 assert(some_info.ty.ip_index == .bool_type);
174516 const opt_abi_size: u32 = @intCast(opt_ty.abiSize(zcu));
174517 try self.asmRegisterImmediate(
174518 .{ ._, .bt },
174519 registerAlias(opt_reg, opt_abi_size),
174520 .u(@as(u6, @intCast(some_info.off * 8))),
174521 );
174522 return .{ .eflags = .nc };
174523 },
174524
174525 .register_pair => |opt_regs| {
174526 if (some_info.off == 0) {
174527 const some_abi_size: u32 = @intCast(some_info.ty.abiSize(zcu));
174528 const alias_reg = registerAlias(opt_regs[0], some_abi_size);
174529 assert(some_abi_size * 8 == alias_reg.bitSize());
174530 try self.asmRegisterRegister(.{ ._, .@"test" }, alias_reg, alias_reg);
174531 return .{ .eflags = .z };
174532 }
174533 assert(some_info.ty.ip_index == .bool_type);
174534 const opt_abi_size: u32 = @intCast(opt_ty.abiSize(zcu));
174535 try self.asmRegisterImmediate(
174536 .{ ._, .bt },
174537 registerAlias(opt_regs[some_info.off / 8], opt_abi_size),
174538 .u(@as(u6, @truncate(some_info.off * 8))),
174539 );
174540 return .{ .eflags = .nc };
174541 },
174542
174543 .memory,
174544 .load_nav,
174545 .load_uav,
174546 .load_lazy_sym,
174547 .load_extern_func,
174548 => {
174549 const addr_reg = (try self.register_manager.allocReg(null, abi.RegisterClass.gp)).to64();
174550 const addr_reg_lock = self.register_manager.lockRegAssumeUnused(addr_reg);
174551 defer self.register_manager.unlockReg(addr_reg_lock);
174552
174553 try self.genSetReg(addr_reg, .usize, opt_mcv.address(), .{});
174554 const some_abi_size: u32 = @intCast(some_info.ty.abiSize(zcu));
174555 try self.asmMemoryImmediate(
174556 .{ ._, .cmp },
174557 .{
174558 .base = .{ .reg = addr_reg },
174559 .mod = .{ .rm = .{
174560 .size = .fromSize(some_abi_size),
174561 .disp = some_info.off,
174562 } },
174563 },
174564 .u(0),
174565 );
174566 return .{ .eflags = .e };
174567 },
174568
174569 .indirect, .load_frame => {
174570 const some_abi_size: u32 = @intCast(some_info.ty.abiSize(zcu));
174571 try self.asmMemoryImmediate(
174572 .{ ._, .cmp },
174573 switch (opt_mcv) {
174574 .indirect => |reg_off| .{
174575 .base = .{ .reg = reg_off.reg },
174576 .mod = .{ .rm = .{
174577 .size = .fromSize(some_abi_size),
174578 .disp = reg_off.off + some_info.off,
174579 } },
174580 },
174581 .load_frame => |frame_addr| .{
174582 .base = .{ .frame = frame_addr.index },
174583 .mod = .{ .rm = .{
174584 .size = .fromSize(some_abi_size),
174585 .disp = frame_addr.off + some_info.off,
174586 } },
174587 },
174588 else => unreachable,
174589 },
174590 .u(0),
174591 );
174592 return .{ .eflags = .e };
174593 },
174594 }
174595}
174596
174597fn isNullPtr(self: *CodeGen, inst: Air.Inst.Index, ptr_ty: Type, ptr_mcv: MCValue) !MCValue {
174598 const pt = self.pt;
174599 const zcu = pt.zcu;
174600 const opt_ty = ptr_ty.childType(zcu);
174601 const pl_ty = opt_ty.optionalChild(zcu);
174602
174603 try self.spillEflagsIfOccupied();
174604
174605 const some_info: struct { off: i32, ty: Type } = if (opt_ty.optionalReprIsPayload(zcu))
174606 .{ .off = 0, .ty = if (pl_ty.isSlice(zcu)) pl_ty.slicePtrFieldType(zcu) else pl_ty }
174607 else
174608 .{ .off = @intCast(pl_ty.abiSize(zcu)), .ty = .bool };
174609
174610 const ptr_reg = switch (ptr_mcv) {
174611 .register => |reg| reg,
174612 else => try self.copyToTmpRegister(ptr_ty, ptr_mcv),
174613 };
174614 const ptr_lock = self.register_manager.lockReg(ptr_reg);
174615 defer if (ptr_lock) |lock| self.register_manager.unlockReg(lock);
174616
174617 const some_abi_size: u32 = @intCast(some_info.ty.abiSize(zcu));
174618 try self.asmMemoryImmediate(
174619 .{ ._, .cmp },
174620 .{
174621 .base = .{ .reg = ptr_reg },
174622 .mod = .{ .rm = .{
174623 .size = .fromSize(some_abi_size),
174624 .disp = some_info.off,
174625 } },
174626 },
174627 .u(0),
174628 );
174629
174630 self.eflags_inst = inst;
174631 return .{ .eflags = .e };
174632}
174633
174634179131fn isErr(self: *CodeGen, maybe_inst: ?Air.Inst.Index, eu_ty: Type, eu_mcv: MCValue) !MCValue {
174635179132 const pt = self.pt;
174636179133 const zcu = pt.zcu;
......@@ -174708,124 +179205,6 @@ fn isErrPtr(self: *CodeGen, maybe_inst: ?Air.Inst.Index, ptr_ty: Type, ptr_mcv:
174708179205 return MCValue{ .eflags = .a };
174709179206}
174710179207
174711fn isNonErr(self: *CodeGen, inst: Air.Inst.Index, eu_ty: Type, eu_mcv: MCValue) !MCValue {
174712 const is_err_res = try self.isErr(inst, eu_ty, eu_mcv);
174713 switch (is_err_res) {
174714 .eflags => |cc| {
174715 assert(cc == .a);
174716 return MCValue{ .eflags = cc.negate() };
174717 },
174718 .immediate => |imm| {
174719 assert(imm == 0);
174720 return MCValue{ .immediate = @intFromBool(imm == 0) };
174721 },
174722 else => unreachable,
174723 }
174724}
174725
174726fn isNonErrPtr(self: *CodeGen, inst: Air.Inst.Index, ptr_ty: Type, ptr_mcv: MCValue) !MCValue {
174727 const is_err_res = try self.isErrPtr(inst, ptr_ty, ptr_mcv);
174728 switch (is_err_res) {
174729 .eflags => |cc| {
174730 assert(cc == .a);
174731 return MCValue{ .eflags = cc.negate() };
174732 },
174733 .immediate => |imm| {
174734 assert(imm == 0);
174735 return MCValue{ .immediate = @intFromBool(imm == 0) };
174736 },
174737 else => unreachable,
174738 }
174739}
174740
174741fn airIsNull(self: *CodeGen, inst: Air.Inst.Index) !void {
174742 const un_op = self.air.instructions.items(.data)[@intFromEnum(inst)].un_op;
174743 const operand = try self.resolveInst(un_op);
174744 const ty = self.typeOf(un_op);
174745 const result = try self.isNull(inst, ty, operand);
174746 return self.finishAir(inst, result, .{ un_op, .none, .none });
174747}
174748
174749fn airIsNullPtr(self: *CodeGen, inst: Air.Inst.Index) !void {
174750 const un_op = self.air.instructions.items(.data)[@intFromEnum(inst)].un_op;
174751 const operand = try self.resolveInst(un_op);
174752 const ty = self.typeOf(un_op);
174753 const result = try self.isNullPtr(inst, ty, operand);
174754 return self.finishAir(inst, result, .{ un_op, .none, .none });
174755}
174756
174757fn airIsNonNull(self: *CodeGen, inst: Air.Inst.Index) !void {
174758 const un_op = self.air.instructions.items(.data)[@intFromEnum(inst)].un_op;
174759 const operand = try self.resolveInst(un_op);
174760 const ty = self.typeOf(un_op);
174761 const result: MCValue = switch (try self.isNull(inst, ty, operand)) {
174762 .immediate => |imm| .{ .immediate = @intFromBool(imm == 0) },
174763 .eflags => |cc| .{ .eflags = cc.negate() },
174764 else => unreachable,
174765 };
174766 return self.finishAir(inst, result, .{ un_op, .none, .none });
174767}
174768
174769fn airIsNonNullPtr(self: *CodeGen, inst: Air.Inst.Index) !void {
174770 const un_op = self.air.instructions.items(.data)[@intFromEnum(inst)].un_op;
174771 const operand = try self.resolveInst(un_op);
174772 const ty = self.typeOf(un_op);
174773 const result: MCValue = switch (try self.isNullPtr(inst, ty, operand)) {
174774 .eflags => |cc| .{ .eflags = cc.negate() },
174775 else => unreachable,
174776 };
174777 return self.finishAir(inst, result, .{ un_op, .none, .none });
174778}
174779
174780fn airIsErr(self: *CodeGen, inst: Air.Inst.Index) !void {
174781 const un_op = self.air.instructions.items(.data)[@intFromEnum(inst)].un_op;
174782 const operand = try self.resolveInst(un_op);
174783 const ty = self.typeOf(un_op);
174784 const result = try self.isErr(inst, ty, operand);
174785 return self.finishAir(inst, result, .{ un_op, .none, .none });
174786}
174787
174788fn airIsErrPtr(self: *CodeGen, inst: Air.Inst.Index) !void {
174789 const un_op = self.air.instructions.items(.data)[@intFromEnum(inst)].un_op;
174790 const operand = try self.resolveInst(un_op);
174791 const ty = self.typeOf(un_op);
174792 const result = try self.isErrPtr(inst, ty, operand);
174793 return self.finishAir(inst, result, .{ un_op, .none, .none });
174794}
174795
174796fn airIsNonErr(self: *CodeGen, inst: Air.Inst.Index) !void {
174797 const un_op = self.air.instructions.items(.data)[@intFromEnum(inst)].un_op;
174798 const operand = try self.resolveInst(un_op);
174799 const ty = self.typeOf(un_op);
174800 const result = try self.isNonErr(inst, ty, operand);
174801 return self.finishAir(inst, result, .{ un_op, .none, .none });
174802}
174803
174804fn airIsNonErrPtr(self: *CodeGen, inst: Air.Inst.Index) !void {
174805 const un_op = self.air.instructions.items(.data)[@intFromEnum(inst)].un_op;
174806 const operand = try self.resolveInst(un_op);
174807 const ty = self.typeOf(un_op);
174808 const result = try self.isNonErrPtr(inst, ty, operand);
174809 return self.finishAir(inst, result, .{ un_op, .none, .none });
174810}
174811
174812fn airLoop(self: *CodeGen, inst: Air.Inst.Index) !void {
174813 // A loop is a setup to be able to jump back to the beginning.
174814 const ty_pl = self.air.instructions.items(.data)[@intFromEnum(inst)].ty_pl;
174815 const loop = self.air.extraData(Air.Block, ty_pl.payload);
174816 const body: []const Air.Inst.Index = @ptrCast(self.air.extra.items[loop.end..][0..loop.data.body_len]);
174817
174818 const state = try self.saveState();
174819
174820 try self.loops.putNoClobber(self.gpa, inst, .{
174821 .state = state,
174822 .target = @intCast(self.mir_instructions.len),
174823 });
174824 defer assert(self.loops.remove(inst));
174825
174826 try self.genBodyBlock(body);
174827}
174828
174829179208fn lowerBlock(self: *CodeGen, inst: Air.Inst.Index, body: []const Air.Inst.Index) !void {
174830179209 // A block is a setup to be able to jump to the end.
174831179210 const inst_tracking_i = self.inst_tracking.count();
......@@ -174860,7 +179239,7 @@ fn lowerBlock(self: *CodeGen, inst: Air.Inst.Index, body: []const Air.Inst.Index
174860179239
174861179240 if (std.debug.runtime_safety) assert(self.inst_tracking.getIndex(inst).? == inst_tracking_i);
174862179241 const tracking = &self.inst_tracking.values()[inst_tracking_i];
174863 if (self.liveness.isUnused(inst)) try tracking.die(self, inst);
179242 if (self.liveness.isUnused(inst)) try tracking.die(self, inst, .{});
174864179243 self.getValueIfFree(tracking.short, inst);
174865179244}
174866179245
......@@ -175019,7 +179398,7 @@ fn lowerSwitchBr(
175019179398 }
175020179399 }
175021179400
175022 for (liveness.deaths[case.idx]) |operand| try cg.processDeath(operand);
179401 for (liveness.deaths[case.idx]) |operand| try cg.processDeath(operand, .{});
175023179402
175024179403 try cg.genBodyBlock(case.body);
175025179404 try cg.restoreState(state, &.{}, .{
......@@ -175033,7 +179412,7 @@ fn lowerSwitchBr(
175033179412 const else_body = cases_it.elseBody();
175034179413
175035179414 const else_deaths = liveness.deaths.len - 1;
175036 for (liveness.deaths[else_deaths]) |operand| try cg.processDeath(operand);
179415 for (liveness.deaths[else_deaths]) |operand| try cg.processDeath(operand, .{});
175037179416
175038179417 cg.performReloc(else_reloc);
175039179418 if (is_loop) {
......@@ -175151,7 +179530,7 @@ fn lowerSwitchBr(
175151179530 // The jump to skip this case if the conditions all failed.
175152179531 const skip_case_reloc = try cg.asmJmpReloc(undefined);
175153179532
175154 for (liveness.deaths[case.idx]) |operand| try cg.processDeath(operand);
179533 for (liveness.deaths[case.idx]) |operand| try cg.processDeath(operand, .{});
175155179534
175156179535 // Relocate all success cases to the body we're about to generate.
175157179536 for (relocs) |reloc| cg.performReloc(reloc);
......@@ -175170,7 +179549,7 @@ fn lowerSwitchBr(
175170179549 const else_body = cases_it.elseBody();
175171179550
175172179551 const else_deaths = liveness.deaths.len - 1;
175173 for (liveness.deaths[else_deaths]) |operand| try cg.processDeath(operand);
179552 for (liveness.deaths[else_deaths]) |operand| try cg.processDeath(operand, .{});
175174179553
175175179554 try cg.genBodyBlock(else_body);
175176179555 try cg.restoreState(state, &.{}, .{
......@@ -175191,7 +179570,7 @@ fn airSwitchBr(self: *CodeGen, inst: Air.Inst.Index) !void {
175191179570 // whether it needs to be spilled in the branches
175192179571 const condition_dies = self.liveness.operandDies(inst, 0);
175193179572 if (condition_dies) {
175194 if (switch_br.operand.toIndex()) |op_inst| try self.processDeath(op_inst);
179573 if (switch_br.operand.toIndex()) |op_inst| try self.processDeath(op_inst, .{});
175195179574 }
175196179575 try self.lowerSwitchBr(inst, switch_br, condition, condition_dies, false);
175197179576
......@@ -175216,7 +179595,7 @@ fn airLoopSwitchBr(self: *CodeGen, inst: Air.Inst.Index) !void {
175216179595 // that death now instead of later as this has an effect on
175217179596 // whether it needs to be spilled in the branches
175218179597 if (self.liveness.operandDies(inst, 0)) {
175219 if (switch_br.operand.toIndex()) |op_inst| try self.processDeath(op_inst);
179598 if (switch_br.operand.toIndex()) |op_inst| try self.processDeath(op_inst, .{});
175220179599 }
175221179600
175222179601 // Ensure a register is available for dispatch.
......@@ -175231,11 +179610,11 @@ fn airLoopSwitchBr(self: *CodeGen, inst: Air.Inst.Index) !void {
175231179610 defer assert(self.loops.remove(inst));
175232179611
175233179612 // Stop tracking block result without forgetting tracking info
175234 try self.freeValue(mat_cond);
179613 try self.freeValue(mat_cond, .{});
175235179614
175236179615 try self.lowerSwitchBr(inst, switch_br, mat_cond, true, true);
175237179616
175238 try self.processDeath(inst);
179617 try self.processDeath(inst, .{});
175239179618}
175240179619
175241179620fn airSwitchDispatch(self: *CodeGen, inst: Air.Inst.Index) !void {
......@@ -175262,7 +179641,7 @@ fn airSwitchDispatch(self: *CodeGen, inst: Air.Inst.Index) !void {
175262179641
175263179642 // Process operand death so that it is properly accounted for in the State below.
175264179643 if (self.liveness.operandDies(inst, 0)) {
175265 if (br.operand.toIndex()) |op_inst| try self.processDeath(op_inst);
179644 if (br.operand.toIndex()) |op_inst| try self.processDeath(op_inst, .{});
175266179645 }
175267179646
175268179647 try self.restoreState(loop_data.state, &.{}, .{
......@@ -175340,7 +179719,7 @@ fn airSwitchDispatch(self: *CodeGen, inst: Air.Inst.Index) !void {
175340179719 _ = try self.asmJmpReloc(loop_data.target);
175341179720
175342179721 // Stop tracking block result without forgetting tracking info
175343 try self.freeValue(block_tracking.short);
179722 try self.freeValue(block_tracking.short, .{ .emit_instructions = false });
175344179723}
175345179724
175346179725fn performReloc(self: *CodeGen, reloc: Mir.Inst.Index) void {
......@@ -175389,10 +179768,14 @@ fn airBr(self: *CodeGen, inst: Air.Inst.Index) !void {
175389179768 if (first_br) break :result src_mcv;
175390179769
175391179770 try self.getValue(block_tracking.short, br.block_inst);
175392 // .long = .none to avoid merging operand and block result stack frames.
175393 const current_tracking: InstTracking = .{ .long = .none, .short = src_mcv };
175394 try current_tracking.materializeUnsafe(self, br.block_inst, block_tracking.*);
175395 for (current_tracking.getRegs()) |src_reg| self.register_manager.freeReg(src_reg);
179771 try InstTracking.materializeUnsafe(
179772 // .long = .none to avoid merging operand and block result stack frames.
179773 .{ .long = .none, .short = src_mcv },
179774 self,
179775 br.block_inst,
179776 block_tracking.*,
179777 );
179778 try self.freeValue(src_mcv, .{});
175396179779 break :result block_tracking.short;
175397179780 }
175398179781
......@@ -175406,7 +179789,7 @@ fn airBr(self: *CodeGen, inst: Air.Inst.Index) !void {
175406179789
175407179790 // Process operand death so that it is properly accounted for in the State below.
175408179791 if (self.liveness.operandDies(inst, 0)) {
175409 if (br.operand.toIndex()) |op_inst| try self.processDeath(op_inst);
179792 if (br.operand.toIndex()) |op_inst| try self.processDeath(op_inst, .{});
175410179793 }
175411179794
175412179795 if (first_br) {
......@@ -175425,7 +179808,7 @@ fn airBr(self: *CodeGen, inst: Air.Inst.Index) !void {
175425179808 try block_data.relocs.append(self.gpa, jmp_reloc);
175426179809
175427179810 // Stop tracking block result without forgetting tracking info
175428 try self.freeValue(block_tracking.short);
179811 try self.freeValue(block_tracking.short, .{ .emit_instructions = false });
175429179812}
175430179813
175431179814fn airAsm(self: *CodeGen, inst: Air.Inst.Index) !void {
......@@ -175802,7 +180185,7 @@ fn airAsm(self: *CodeGen, inst: Air.Inst.Index) !void {
175802180185 } },
175803180186 } };
175804180187 } else {
175805 if (mnem_size.use()) |size| if (reg.bitSize() != size.bitSize(self.target))
180188 if (mnem_size.use()) |size| if (reg.size().bitSize(self.target) != size.bitSize(self.target))
175806180189 return self.fail("invalid register size: '{s}'", .{op_str});
175807180190 op.* = .{ .reg = reg };
175808180191 }
......@@ -176181,7 +180564,7 @@ const MoveStrategy = union(enum) {
176181180564 if (tag[0] == ._ps and tag[1] == .movl) try cg.asmRegisterRegister(.{ ._ps, .xor }, dst_reg, dst_reg);
176182180565 try cg.asmRegisterMemory(tag, switch (tag[1]) {
176183180566 else => dst_reg,
176184 .lea => if (dst_reg.bitSize() >= 32) dst_reg else dst_reg.to32(),
180567 .lea => if (dst_reg.size().bitSize(cg.target) >= 32) dst_reg else dst_reg.to32(),
176185180568 }, src_mem);
176186180569 },
176187180570 .load_store_x87 => if (dst_reg != .st0 and cg.register_manager.isKnownRegFree(.st7)) {
......@@ -176335,7 +180718,7 @@ fn moveStrategy(cg: *CodeGen, ty: Type, class: Register.Class, aligned: bool) !M
176335180718 else => {},
176336180719 }
176337180720 },
176338 .float => switch (ty.floatBits(cg.target.*)) {
180721 .float => switch (ty.floatBits(cg.target)) {
176339180722 16 => return if (cg.hasFeature(.avx)) .{ .vex_insert_extract = .{
176340180723 .insert = .{ .vp_w, .insr },
176341180724 .extract = .{ .vp_w, .extr },
......@@ -176482,7 +180865,7 @@ fn moveStrategy(cg: *CodeGen, ty: Type, class: Register.Class, aligned: bool) !M
176482180865 }
176483180866 else
176484180867 unreachable,
176485 .float => switch (ty.childType(zcu).floatBits(cg.target.*)) {
180868 .float => switch (ty.childType(zcu).floatBits(cg.target)) {
176486180869 16 => switch (ty.vectorLen(zcu)) {
176487180870 1...8 => return .{ .load_store = if (cg.hasFeature(.avx))
176488180871 .{ if (aligned) .v_dqa else .v_dqu, .mov }
......@@ -176554,6 +180937,7 @@ fn genCopy(self: *CodeGen, ty: Type, dst_mcv: MCValue, src_mcv: MCValue, opts: C
176554180937 .eflags,
176555180938 .register_overflow,
176556180939 .register_mask,
180940 .indirect_load_frame,
176557180941 .lea_frame,
176558180942 .lea_nav,
176559180943 .lea_uav,
......@@ -176750,12 +181134,13 @@ fn genSetReg(
176750181134 const zcu = pt.zcu;
176751181135 const abi_size: u32 = @intCast(ty.abiSize(zcu));
176752181136 const dst_alias = registerAlias(dst_reg, abi_size);
176753 if (ty.bitSize(zcu) > dst_alias.bitSize())
181137 if (ty.bitSize(zcu) > dst_alias.size().bitSize(self.target))
176754181138 return self.fail("genSetReg called with a value larger than dst_reg", .{});
176755181139 switch (src_mcv) {
176756181140 .none,
176757181141 .unreach,
176758181142 .dead,
181143 .indirect_load_frame,
176759181144 .elementwise_args,
176760181145 .reserved_frame,
176761181146 => unreachable,
......@@ -177017,7 +181402,7 @@ fn genSetReg(
177017181402 17...32 => if (self.hasFeature(.avx)) .{ .v_dqa, .mov } else null,
177018181403 else => null,
177019181404 },
177020 .float => switch (ty.scalarType(zcu).floatBits(self.target.*)) {
181405 .float => switch (ty.scalarType(zcu).floatBits(self.target)) {
177021181406 16, 128 => switch (abi_size) {
177022181407 2...16 => if (self.hasFeature(.avx))
177023181408 .{ .v_dqa, .mov }
......@@ -177112,7 +181497,7 @@ fn genSetReg(
177112181497 ty,
177113181498 dst_reg.class(),
177114181499 self.getFrameAddrAlignment(frame_addr).compare(.gte, .fromLog2Units(
177115 std.math.log2_int_ceil(u10, @divExact(dst_reg.bitSize(), 8)),
181500 std.math.log2_int_ceil(u64, @divExact(dst_reg.size().bitSize(self.target), 8)),
177116181501 )),
177117181502 ),
177118181503 .lea_frame => .{ .load_store = .{ ._, .lea } },
......@@ -177318,6 +181703,7 @@ fn genSetMem(
177318181703 .none,
177319181704 .unreach,
177320181705 .dead,
181706 .indirect_load_frame,
177321181707 .elementwise_args,
177322181708 .reserved_frame,
177323181709 => unreachable,
......@@ -177382,43 +181768,37 @@ fn genSetMem(
177382181768 const frame_abi_size = self.frame_allocs.items(.abi_size)[@intFromEnum(base_fi)];
177383181769 const frame_spill_pad = self.frame_allocs.items(.spill_pad)[@intFromEnum(base_fi)];
177384181770 assert(frame_abi_size - frame_spill_pad - disp >= abi_size);
177385 break :mem_size if (frame_abi_size - frame_spill_pad - disp == abi_size)
177386 frame_abi_size
177387 else
177388 abi_size;
181771 break :mem_size if (frame_abi_size - frame_spill_pad - disp == abi_size) frame_abi_size else abi_size;
177389181772 },
177390181773 else => abi_size,
177391181774 };
177392181775 const src_alias = registerAlias(src_reg, @intCast(self.unalignedSize(ty)));
177393181776 const src_class = src_alias.class();
177394 const src_size: u32 = switch (src_class) {
177395 .general_purpose, .gphi, .segment, .ip, .cr, .dr => @intCast(@divExact(src_alias.bitSize(), 8)),
177396 .mmx, .sse => abi_size,
181777 const src_size: Memory.Size = switch (src_class) {
181778 .general_purpose, .gphi, .segment, .ip, .cr, .dr => src_alias.size(),
181779 .mmx, .sse => .fromSize(abi_size),
177397181780 .x87 => switch (abi.classifySystemV(ty, zcu, self.target, .other)[0]) {
177398181781 else => unreachable,
177399 .float, .float_combine => 4,
177400 .sse => 8,
177401 .x87 => 10,
181782 .float => .dword,
181783 .float_combine, .sse => .qword,
181784 .x87 => .tbyte,
177402181785 },
177403181786 };
177404 const src_align: InternPool.Alignment = .fromNonzeroByteUnits(
177405 std.math.ceilPowerOfTwoAssert(u32, src_size),
177406 );
177407 if (src_size > mem_size) {
181787 const src_bit_size = src_size.bitSize(self.target);
181788 const src_align: InternPool.Alignment = .fromNonzeroByteUnits(std.math.ceilPowerOfTwoAssert(u64, src_bit_size));
181789 const src_byte_size = @divExact(src_bit_size, 8);
181790 if (src_byte_size > mem_size) {
177408181791 const frame_index = try self.allocFrameIndex(.init(.{
177409 .size = src_size,
181792 .size = src_byte_size,
177410181793 .alignment = src_align,
177411181794 }));
177412181795 const frame_mcv: MCValue = .{ .load_frame = .{ .index = frame_index } };
177413 try (try self.moveStrategy(ty, src_class, true)).write(
177414 self,
177415 .{ .base = .{ .frame = frame_index }, .mod = .{ .rm = .{
177416 .size = .fromSize(src_size),
177417 } } },
177418 src_alias,
177419 );
181796 try (try self.moveStrategy(ty, src_class, true)).write(self, .{
181797 .base = .{ .frame = frame_index },
181798 .mod = .{ .rm = .{ .size = src_size } },
181799 }, src_alias);
177420181800 try self.genSetMem(base, disp, ty, frame_mcv, opts);
177421 try self.freeValue(frame_mcv);
181801 try self.freeValue(frame_mcv, .{});
177422181802 } else try (try self.moveStrategy(ty, src_class, switch (base) {
177423181803 .none => src_align.check(@as(u32, @bitCast(disp))),
177424181804 .reg => |reg| switch (reg) {
......@@ -177432,17 +181812,10 @@ fn genSetMem(
177432181812 .table, .rip_inst, .lazy_sym, .extern_func => unreachable,
177433181813 .nav => |nav| ip.getNav(nav).getAlignment().compare(.gte, src_align),
177434181814 .uav => |uav| Type.fromInterned(uav.orig_ty).ptrAlignment(zcu).compare(.gte, src_align),
177435 })).write(
177436 self,
177437 .{ .base = base, .mod = .{ .rm = .{
177438 .size = .fromBitSize(@min(
177439 self.memSize(ty).bitSize(self.target),
177440 src_alias.bitSize(),
177441 )),
177442 .disp = disp,
177443 } } },
177444 src_alias,
177445 );
181815 })).write(self, .{
181816 .base = base,
181817 .mod = .{ .rm = .{ .size = src_size, .disp = disp } },
181818 }, src_alias);
177446181819 },
177447181820 inline .register_pair, .register_triple, .register_quadruple => |src_regs| {
177448181821 var part_disp: i32 = disp;
......@@ -177776,7 +182149,7 @@ fn airFloatFromInt(self: *CodeGen, inst: Air.Inst.Index) !void {
177776182149 const ty_op = self.air.instructions.items(.data)[@intFromEnum(inst)].ty_op;
177777182150
177778182151 const dst_ty = self.typeOfIndex(inst);
177779 const dst_bits = dst_ty.floatBits(self.target.*);
182152 const dst_bits = dst_ty.floatBits(self.target);
177780182153
177781182154 const src_ty = self.typeOf(ty_op.operand);
177782182155 const src_bits: u32 = @intCast(src_ty.bitSize(zcu));
......@@ -177828,7 +182201,7 @@ fn airFloatFromInt(self: *CodeGen, inst: Air.Inst.Index) !void {
177828182201 defer self.register_manager.unlockReg(dst_lock);
177829182202
177830182203 const mir_tag = @as(?Mir.Inst.FixedTag, switch (dst_ty.zigTypeTag(zcu)) {
177831 .float => switch (dst_ty.floatBits(self.target.*)) {
182204 .float => switch (dst_ty.floatBits(self.target)) {
177832182205 32 => if (self.hasFeature(.avx)) .{ .v_ss, .cvtsi2 } else .{ ._ss, .cvtsi2 },
177833182206 64 => if (self.hasFeature(.avx)) .{ .v_sd, .cvtsi2 } else .{ ._sd, .cvtsi2 },
177834182207 16, 80, 128 => null,
......@@ -177865,7 +182238,7 @@ fn airIntFromFloat(self: *CodeGen, inst: Air.Inst.Index) !void {
177865182238 }, 32), 8) catch unreachable;
177866182239
177867182240 const src_ty = self.typeOf(ty_op.operand);
177868 const src_bits = src_ty.floatBits(self.target.*);
182241 const src_bits = src_ty.floatBits(self.target);
177869182242
177870182243 const result = result: {
177871182244 if (switch (src_bits) {
......@@ -178136,22 +182509,22 @@ fn atomicOp(
178136182509 }
178137182510 if (rmw_op) |op| if (use_sse) {
178138182511 const mir_tag = @as(?Mir.Inst.FixedTag, switch (op) {
178139 .Add => switch (val_ty.floatBits(self.target.*)) {
182512 .Add => switch (val_ty.floatBits(self.target)) {
178140182513 32 => if (self.hasFeature(.avx)) .{ .v_ss, .add } else .{ ._ss, .add },
178141182514 64 => if (self.hasFeature(.avx)) .{ .v_sd, .add } else .{ ._sd, .add },
178142182515 else => null,
178143182516 },
178144 .Sub => switch (val_ty.floatBits(self.target.*)) {
182517 .Sub => switch (val_ty.floatBits(self.target)) {
178145182518 32 => if (self.hasFeature(.avx)) .{ .v_ss, .sub } else .{ ._ss, .sub },
178146182519 64 => if (self.hasFeature(.avx)) .{ .v_sd, .sub } else .{ ._sd, .sub },
178147182520 else => null,
178148182521 },
178149 .Min => switch (val_ty.floatBits(self.target.*)) {
182522 .Min => switch (val_ty.floatBits(self.target)) {
178150182523 32 => if (self.hasFeature(.avx)) .{ .v_ss, .min } else .{ ._ss, .min },
178151182524 64 => if (self.hasFeature(.avx)) .{ .v_sd, .min } else .{ ._sd, .min },
178152182525 else => null,
178153182526 },
178154 .Max => switch (val_ty.floatBits(self.target.*)) {
182527 .Max => switch (val_ty.floatBits(self.target)) {
178155182528 32 => if (self.hasFeature(.avx)) .{ .v_ss, .max } else .{ ._ss, .max },
178156182529 64 => if (self.hasFeature(.avx)) .{ .v_sd, .max } else .{ ._sd, .max },
178157182530 else => null,
......@@ -178582,271 +182955,6 @@ fn airMemset(self: *CodeGen, inst: Air.Inst.Index, safety: bool) !void {
178582182955 return self.finishAir(inst, .unreach, .{ bin_op.lhs, bin_op.rhs, .none });
178583182956}
178584182957
178585fn airMemcpy(self: *CodeGen, inst: Air.Inst.Index) !void {
178586 const pt = self.pt;
178587 const zcu = pt.zcu;
178588 const bin_op = self.air.instructions.items(.data)[@intFromEnum(inst)].bin_op;
178589
178590 try self.spillRegisters(&.{ .rdi, .rsi, .rcx });
178591 const reg_locks = self.register_manager.lockRegsAssumeUnused(3, .{ .rdi, .rsi, .rcx });
178592 defer for (reg_locks) |lock| self.register_manager.unlockReg(lock);
178593
178594 const dst = try self.resolveInst(bin_op.lhs);
178595 const dst_ty = self.typeOf(bin_op.lhs);
178596 const dst_locks: [2]?RegisterLock = switch (dst) {
178597 .register => |dst_reg| .{ self.register_manager.lockRegAssumeUnused(dst_reg), null },
178598 .register_pair => |dst_regs| .{
178599 self.register_manager.lockRegAssumeUnused(dst_regs[0]),
178600 self.register_manager.lockReg(dst_regs[1]),
178601 },
178602 else => @splat(null),
178603 };
178604 for (dst_locks) |dst_lock| if (dst_lock) |lock| self.register_manager.unlockReg(lock);
178605
178606 const src = try self.resolveInst(bin_op.rhs);
178607 const src_locks: [2]?RegisterLock = switch (src) {
178608 .register => |src_reg| .{ self.register_manager.lockReg(src_reg), null },
178609 .register_pair => |src_regs| .{
178610 self.register_manager.lockRegAssumeUnused(src_regs[0]),
178611 self.register_manager.lockRegAssumeUnused(src_regs[1]),
178612 },
178613 else => @splat(null),
178614 };
178615 for (src_locks) |src_lock| if (src_lock) |lock| self.register_manager.unlockReg(lock);
178616
178617 const len: MCValue = switch (dst_ty.ptrSize(zcu)) {
178618 .slice => len: {
178619 const len_reg = try self.register_manager.allocReg(null, abi.RegisterClass.gp);
178620 const len_lock = self.register_manager.lockRegAssumeUnused(len_reg);
178621 defer self.register_manager.unlockReg(len_lock);
178622
178623 switch (dst) {
178624 .register_pair => |dst_regs| try self.asmRegisterRegisterImmediate(
178625 .{ .i_, .mul },
178626 len_reg,
178627 dst_regs[1],
178628 .s(@intCast(dst_ty.childType(zcu).abiSize(zcu))),
178629 ),
178630 else => try self.asmRegisterMemoryImmediate(
178631 .{ .i_, .mul },
178632 len_reg,
178633 try dst.address().offset(8).deref().mem(self, .{ .size = .qword }),
178634 .s(@intCast(dst_ty.childType(zcu).abiSize(zcu))),
178635 ),
178636 }
178637 break :len .{ .register = len_reg };
178638 },
178639 .one => len: {
178640 const array_ty = dst_ty.childType(zcu);
178641 break :len .{ .immediate = array_ty.arrayLen(zcu) * array_ty.childType(zcu).abiSize(zcu) };
178642 },
178643 .c, .many => unreachable,
178644 };
178645 const len_lock: ?RegisterLock = switch (len) {
178646 .register => |reg| self.register_manager.lockReg(reg),
178647 else => null,
178648 };
178649 defer if (len_lock) |lock| self.register_manager.unlockReg(lock);
178650
178651 const dst_ptr: MCValue = switch (dst) {
178652 .register_pair => |dst_regs| .{ .register = dst_regs[0] },
178653 else => dst,
178654 };
178655 const src_ptr: MCValue = switch (src) {
178656 .register_pair => |src_regs| .{ .register = src_regs[0] },
178657 else => src,
178658 };
178659
178660 try self.genInlineMemcpy(dst_ptr, src_ptr, len, .{ .no_alias = true });
178661
178662 return self.finishAir(inst, .unreach, .{ bin_op.lhs, bin_op.rhs, .none });
178663}
178664
178665fn airTagName(self: *CodeGen, inst: Air.Inst.Index, only_safety: bool) !void {
178666 const pt = self.pt;
178667 const zcu = pt.zcu;
178668 const un_op = self.air.instructions.items(.data)[@intFromEnum(inst)].un_op;
178669 const inst_ty = self.typeOfIndex(inst);
178670 const enum_ty = self.typeOf(un_op);
178671
178672 // We need a properly aligned and sized call frame to be able to call this function.
178673 {
178674 const needed_call_frame: FrameAlloc = .init(.{
178675 .size = inst_ty.abiSize(zcu),
178676 .alignment = inst_ty.abiAlignment(zcu),
178677 });
178678 const frame_allocs_slice = self.frame_allocs.slice();
178679 const stack_frame_size =
178680 &frame_allocs_slice.items(.abi_size)[@intFromEnum(FrameIndex.call_frame)];
178681 stack_frame_size.* = @max(stack_frame_size.*, needed_call_frame.abi_size);
178682 const stack_frame_align =
178683 &frame_allocs_slice.items(.abi_align)[@intFromEnum(FrameIndex.call_frame)];
178684 stack_frame_align.* = stack_frame_align.max(needed_call_frame.abi_align);
178685 }
178686
178687 var param_gpr = abi.getCAbiIntParamRegs(.auto);
178688 const err_ret_trace_reg = if (zcu.comp.config.any_error_tracing) err_ret_trace_reg: {
178689 defer param_gpr = param_gpr[0 .. param_gpr.len - 1];
178690 break :err_ret_trace_reg param_gpr[param_gpr.len - 1];
178691 } else .none;
178692
178693 try self.spillEflagsIfOccupied();
178694 try self.spillCallerPreservedRegs(.auto, err_ret_trace_reg);
178695
178696 const operand = try self.resolveInst(un_op);
178697 try self.genSetReg(param_gpr[0], enum_ty, operand, .{});
178698
178699 const enum_lazy_sym: link.File.LazySymbol = .{ .kind = .code, .ty = enum_ty.toIntern() };
178700 try self.genLazySymbolRef(.call, abi.getCAbiLinkerScratchReg(.auto), enum_lazy_sym);
178701
178702 const tag_name_regs = param_gpr[0..2].*;
178703 const dst_mcv: MCValue = if (only_safety) result: {
178704 try self.asmRegisterRegister(.{ ._, .@"test" }, tag_name_regs[0].to64(), tag_name_regs[0].to64());
178705 break :result .{ .eflags = .nz };
178706 } else .{ .register_pair = tag_name_regs };
178707 return self.finishAir(inst, dst_mcv, .{ un_op, .none, .none });
178708}
178709
178710fn airErrorName(self: *CodeGen, inst: Air.Inst.Index) !void {
178711 const un_op = self.air.instructions.items(.data)[@intFromEnum(inst)].un_op;
178712
178713 const err_ty = self.typeOf(un_op);
178714 const err_mcv = try self.resolveInst(un_op);
178715 const err_reg = try self.copyToTmpRegister(err_ty, err_mcv);
178716 const err_lock = self.register_manager.lockRegAssumeUnused(err_reg);
178717 defer self.register_manager.unlockReg(err_lock);
178718
178719 const addr_reg = try self.register_manager.allocReg(null, abi.RegisterClass.gp);
178720 const addr_lock = self.register_manager.lockRegAssumeUnused(addr_reg);
178721 defer self.register_manager.unlockReg(addr_lock);
178722 const anyerror_lazy_sym: link.File.LazySymbol = .{ .kind = .const_data, .ty = .anyerror_type };
178723 try self.genLazySymbolRef(.lea, addr_reg, anyerror_lazy_sym);
178724
178725 const start_reg = try self.register_manager.allocReg(null, abi.RegisterClass.gp);
178726 const start_lock = self.register_manager.lockRegAssumeUnused(start_reg);
178727 defer self.register_manager.unlockReg(start_lock);
178728
178729 const end_reg = try self.register_manager.allocReg(null, abi.RegisterClass.gp);
178730 const end_lock = self.register_manager.lockRegAssumeUnused(end_reg);
178731 defer self.register_manager.unlockReg(end_lock);
178732
178733 try self.truncateRegister(err_ty, err_reg.to32());
178734
178735 try self.asmRegisterMemory(
178736 .{ ._, .mov },
178737 start_reg.to32(),
178738 .{
178739 .base = .{ .reg = addr_reg.to64() },
178740 .mod = .{ .rm = .{
178741 .size = .dword,
178742 .index = err_reg.to64(),
178743 .scale = .@"4",
178744 .disp = (1 - 1) * 4,
178745 } },
178746 },
178747 );
178748 try self.asmRegisterMemory(
178749 .{ ._, .mov },
178750 end_reg.to32(),
178751 .{
178752 .base = .{ .reg = addr_reg.to64() },
178753 .mod = .{ .rm = .{
178754 .size = .dword,
178755 .index = err_reg.to64(),
178756 .scale = .@"4",
178757 .disp = (2 - 1) * 4,
178758 } },
178759 },
178760 );
178761 try self.asmRegisterRegister(.{ ._, .sub }, end_reg.to32(), start_reg.to32());
178762 try self.asmRegisterMemory(
178763 .{ ._, .lea },
178764 start_reg.to64(),
178765 .{
178766 .base = .{ .reg = addr_reg.to64() },
178767 .mod = .{ .rm = .{ .index = start_reg.to64() } },
178768 },
178769 );
178770 try self.asmRegisterMemory(
178771 .{ ._, .lea },
178772 end_reg.to32(),
178773 .{
178774 .base = .{ .reg = end_reg.to64() },
178775 .mod = .{ .rm = .{ .disp = -1 } },
178776 },
178777 );
178778
178779 const dst_mcv = try self.allocRegOrMem(inst, false);
178780 try self.asmMemoryRegister(
178781 .{ ._, .mov },
178782 .{
178783 .base = .{ .frame = dst_mcv.load_frame.index },
178784 .mod = .{ .rm = .{
178785 .size = .qword,
178786 .disp = dst_mcv.load_frame.off,
178787 } },
178788 },
178789 start_reg.to64(),
178790 );
178791 try self.asmMemoryRegister(
178792 .{ ._, .mov },
178793 .{
178794 .base = .{ .frame = dst_mcv.load_frame.index },
178795 .mod = .{ .rm = .{
178796 .size = .qword,
178797 .disp = dst_mcv.load_frame.off + 8,
178798 } },
178799 },
178800 end_reg.to64(),
178801 );
178802
178803 return self.finishAir(inst, dst_mcv, .{ un_op, .none, .none });
178804}
178805
178806fn airErrorSetHasValue(self: *CodeGen, inst: Air.Inst.Index) !void {
178807 const pt = self.pt;
178808 const zcu = pt.zcu;
178809 const ty_op = self.air.instructions.items(.data)[@intFromEnum(inst)].ty_op;
178810 const inst_ty = self.typeOfIndex(inst);
178811 const err_ty = ty_op.ty.toType();
178812
178813 // We need a properly aligned and sized call frame to be able to call this function.
178814 {
178815 const needed_call_frame: FrameAlloc = .init(.{
178816 .size = inst_ty.abiSize(zcu),
178817 .alignment = inst_ty.abiAlignment(zcu),
178818 });
178819 const frame_allocs_slice = self.frame_allocs.slice();
178820 const stack_frame_size =
178821 &frame_allocs_slice.items(.abi_size)[@intFromEnum(FrameIndex.call_frame)];
178822 stack_frame_size.* = @max(stack_frame_size.*, needed_call_frame.abi_size);
178823 const stack_frame_align =
178824 &frame_allocs_slice.items(.abi_align)[@intFromEnum(FrameIndex.call_frame)];
178825 stack_frame_align.* = stack_frame_align.max(needed_call_frame.abi_align);
178826 }
178827
178828 var param_gpr = abi.getCAbiIntParamRegs(.auto);
178829 const err_ret_trace_reg = if (zcu.comp.config.any_error_tracing) err_ret_trace_reg: {
178830 defer param_gpr = param_gpr[0 .. param_gpr.len - 1];
178831 break :err_ret_trace_reg param_gpr[param_gpr.len - 1];
178832 } else .none;
178833
178834 try self.spillEflagsIfOccupied();
178835 try self.spillCallerPreservedRegs(.auto, err_ret_trace_reg);
178836
178837 const operand = try self.resolveInst(ty_op.operand);
178838 try self.genSetReg(param_gpr[0], err_ty, operand, .{});
178839
178840 const enum_lazy_sym: link.File.LazySymbol = .{ .kind = .code, .ty = err_ty.toIntern() };
178841 try self.genLazySymbolRef(.call, abi.getCAbiLinkerScratchReg(.auto), enum_lazy_sym);
178842
178843 const res_reg = param_gpr[0];
178844 try self.asmRegisterRegister(.{ ._, .@"test" }, res_reg.to32(), res_reg.to32());
178845
178846 const dst_mcv: MCValue = .{ .eflags = .nz };
178847 return self.finishAir(inst, dst_mcv, .{ ty_op.operand, .none, .none });
178848}
178849
178850182958fn airSplat(self: *CodeGen, inst: Air.Inst.Index) !void {
178851182959 const pt = self.pt;
178852182960 const zcu = pt.zcu;
......@@ -178988,7 +183096,7 @@ fn airSplat(self: *CodeGen, inst: Air.Inst.Index) !void {
178988183096 );
178989183097 break :result .{ .register = dst_reg };
178990183098 },
178991 .float => switch (scalar_ty.floatBits(self.target.*)) {
183099 .float => switch (scalar_ty.floatBits(self.target)) {
178992183100 32 => switch (vector_len) {
178993183101 1 => {
178994183102 const src_mcv = try self.resolveInst(ty_op.operand);
......@@ -179581,7 +183689,7 @@ fn airSelect(self: *CodeGen, inst: Air.Inst.Index) !void {
179581183689 null,
179582183690 else => null,
179583183691 },
179584 .float => switch (elem_ty.floatBits(self.target.*)) {
183692 .float => switch (elem_ty.floatBits(self.target)) {
179585183693 else => unreachable,
179586183694 16, 80, 128 => null,
179587183695 32 => switch (vec_len) {
......@@ -180308,7 +184416,7 @@ fn airShuffle(self: *CodeGen, inst: Air.Inst.Index) !void {
180308184416 defer self.register_manager.unlockReg(mask_lock);
180309184417
180310184418 const mir_fixes: Mir.Inst.Fixes = if (elem_ty.isRuntimeFloat())
180311 switch (elem_ty.floatBits(self.target.*)) {
184419 switch (elem_ty.floatBits(self.target)) {
180312184420 16, 80, 128 => .p_,
180313184421 32 => ._ps,
180314184422 64 => ._pd,
......@@ -180414,7 +184522,7 @@ fn airShuffle(self: *CodeGen, inst: Air.Inst.Index) !void {
180414184522 .{ switch (elem_ty.zigTypeTag(zcu)) {
180415184523 else => break :result null,
180416184524 .int => .vp_,
180417 .float => switch (elem_ty.floatBits(self.target.*)) {
184525 .float => switch (elem_ty.floatBits(self.target)) {
180418184526 32 => .v_ps,
180419184527 64 => .v_pd,
180420184528 16, 80, 128 => break :result null,
......@@ -180428,7 +184536,7 @@ fn airShuffle(self: *CodeGen, inst: Air.Inst.Index) !void {
180428184536 .{ switch (elem_ty.zigTypeTag(zcu)) {
180429184537 else => break :result null,
180430184538 .int => .p_,
180431 .float => switch (elem_ty.floatBits(self.target.*)) {
184539 .float => switch (elem_ty.floatBits(self.target)) {
180432184540 32 => ._ps,
180433184541 64 => ._pd,
180434184542 16, 80, 128 => break :result null,
......@@ -180451,120 +184559,6 @@ fn airShuffle(self: *CodeGen, inst: Air.Inst.Index) !void {
180451184559 return self.finishAir(inst, result, .{ extra.a, extra.b, .none });
180452184560}
180453184561
180454fn airReduce(self: *CodeGen, inst: Air.Inst.Index) !void {
180455 const pt = self.pt;
180456 const zcu = pt.zcu;
180457 const reduce = self.air.instructions.items(.data)[@intFromEnum(inst)].reduce;
180458
180459 const result: MCValue = result: {
180460 const operand_ty = self.typeOf(reduce.operand);
180461 if (operand_ty.isVector(zcu) and operand_ty.childType(zcu).toIntern() == .bool_type) {
180462 try self.spillEflagsIfOccupied();
180463
180464 const abi_size: u32 = @intCast(operand_ty.abiSize(zcu));
180465 const operand_mcv = try self.resolveInst(reduce.operand);
180466 const mask_len = operand_ty.vectorLen(zcu);
180467 const mask_len_minus_one = (std.math.cast(u6, mask_len - 1) orelse {
180468 const acc_reg = try self.register_manager.allocReg(null, abi.RegisterClass.gp);
180469 const acc_lock = self.register_manager.lockRegAssumeUnused(acc_reg);
180470 defer self.register_manager.unlockReg(acc_lock);
180471 var limb_offset: i31 = @intCast((mask_len - 1) / 64 * 8);
180472 const need_mask = mask_len % 64 != 0;
180473 if (need_mask) try self.asmRegisterImmediate(
180474 .{ ._, .mov },
180475 if (mask_len % 64 <= 32) acc_reg.to32() else acc_reg.to64(),
180476 .u((@as(u64, std.math.maxInt(u64)) >> @truncate(-%mask_len))),
180477 );
180478 const operand_mem_mcv: MCValue = if (!operand_mcv.isBase()) operand_mem: {
180479 const frame_index = try self.allocFrameIndex(.initSpill(operand_ty, zcu));
180480 try self.genSetMem(.{ .frame = frame_index }, 0, operand_ty, operand_mcv, .{});
180481 break :operand_mem .{ .load_frame = .{ .index = frame_index } };
180482 } else operand_mcv;
180483 var first = true;
180484 while (true) : (limb_offset -= 8) {
180485 try self.asmRegisterMemory(
180486 .{ ._, if (first) if (need_mask) .@"and" else .mov else switch (reduce.operation) {
180487 .Or => .@"or",
180488 .And => .@"and",
180489 else => return self.fail("TODO implement airReduce for {}", .{operand_ty.fmt(pt)}),
180490 } },
180491 acc_reg.to64(),
180492 try operand_mem_mcv.mem(self, .{
180493 .size = .qword,
180494 .disp = limb_offset,
180495 }),
180496 );
180497 if (limb_offset == 0) break;
180498 first = false;
180499 }
180500 switch (reduce.operation) {
180501 .Or => {
180502 try self.asmRegisterRegister(.{ ._, .@"test" }, acc_reg.to64(), acc_reg.to64());
180503 break :result .{ .eflags = .nz };
180504 },
180505 .And => {
180506 try self.asmRegisterImmediate(.{ ._, .cmp }, acc_reg.to64(), .s(-1));
180507 break :result .{ .eflags = .z };
180508 },
180509 else => unreachable,
180510 }
180511 });
180512 const mask = @as(u64, std.math.maxInt(u64)) >> ~mask_len_minus_one;
180513 switch (reduce.operation) {
180514 .Or => {
180515 if (operand_mcv.isBase()) try self.asmMemoryImmediate(
180516 .{ ._, .@"test" },
180517 try operand_mcv.mem(self, .{ .size = .fromSize(abi_size) }),
180518 if (mask_len < abi_size * 8)
180519 .u(mask)
180520 else
180521 .s(-1),
180522 ) else {
180523 const operand_reg = registerAlias(operand_reg: {
180524 if (operand_mcv.isRegister()) {
180525 const operand_reg = operand_mcv.getReg().?;
180526 if (operand_reg.isClass(.general_purpose)) break :operand_reg operand_reg;
180527 }
180528 break :operand_reg try self.copyToTmpRegister(operand_ty, operand_mcv);
180529 }, abi_size);
180530 const operand_lock = self.register_manager.lockReg(operand_reg);
180531 defer if (operand_lock) |lock| self.register_manager.unlockReg(lock);
180532
180533 if (mask_len < abi_size * 8) try self.asmRegisterImmediate(
180534 .{ ._, .@"test" },
180535 operand_reg,
180536 .u(mask),
180537 ) else try self.asmRegisterRegister(
180538 .{ ._, .@"test" },
180539 operand_reg,
180540 operand_reg,
180541 );
180542 }
180543 break :result .{ .eflags = .nz };
180544 },
180545 .And => {
180546 const tmp_reg = registerAlias(
180547 try self.copyToTmpRegister(operand_ty, operand_mcv),
180548 abi_size,
180549 );
180550 const tmp_lock = self.register_manager.lockRegAssumeUnused(tmp_reg);
180551 defer self.register_manager.unlockReg(tmp_lock);
180552
180553 try self.asmRegister(.{ ._, .not }, tmp_reg);
180554 if (mask_len < abi_size * 8)
180555 try self.asmRegisterImmediate(.{ ._, .@"test" }, tmp_reg, .u(mask))
180556 else
180557 try self.asmRegisterRegister(.{ ._, .@"test" }, tmp_reg, tmp_reg);
180558 break :result .{ .eflags = .z };
180559 },
180560 else => return self.fail("TODO implement airReduce for {}", .{operand_ty.fmt(pt)}),
180561 }
180562 }
180563 return self.fail("TODO implement airReduce for {}", .{operand_ty.fmt(pt)});
180564 };
180565 return self.finishAir(inst, result, .{ reduce.operand, .none, .none });
180566}
180567
180568184562fn airAggregateInit(self: *CodeGen, inst: Air.Inst.Index) !void {
180569184563 const pt = self.pt;
180570184564 const zcu = pt.zcu;
......@@ -180800,7 +184794,7 @@ fn airMulAdd(self: *CodeGen, inst: Air.Inst.Index) !void {
180800184794
180801184795 const ops = [3]Air.Inst.Ref{ extra.lhs, extra.rhs, pl_op.operand };
180802184796 const result = result: {
180803 if (switch (ty.scalarType(zcu).floatBits(self.target.*)) {
184797 if (switch (ty.scalarType(zcu).floatBits(self.target)) {
180804184798 16, 80, 128 => true,
180805184799 32, 64 => !self.hasFeature(.fma),
180806184800 else => unreachable,
......@@ -180855,14 +184849,14 @@ fn airMulAdd(self: *CodeGen, inst: Air.Inst.Index) !void {
180855184849 const mir_tag = @as(?Mir.Inst.FixedTag, if (std.mem.eql(u2, &order, &.{ 1, 3, 2 }) or
180856184850 std.mem.eql(u2, &order, &.{ 3, 1, 2 }))
180857184851 switch (ty.zigTypeTag(zcu)) {
180858 .float => switch (ty.floatBits(self.target.*)) {
184852 .float => switch (ty.floatBits(self.target)) {
180859184853 32 => .{ .v_ss, .fmadd132 },
180860184854 64 => .{ .v_sd, .fmadd132 },
180861184855 16, 80, 128 => null,
180862184856 else => unreachable,
180863184857 },
180864184858 .vector => switch (ty.childType(zcu).zigTypeTag(zcu)) {
180865 .float => switch (ty.childType(zcu).floatBits(self.target.*)) {
184859 .float => switch (ty.childType(zcu).floatBits(self.target)) {
180866184860 32 => switch (ty.vectorLen(zcu)) {
180867184861 1 => .{ .v_ss, .fmadd132 },
180868184862 2...8 => .{ .v_ps, .fmadd132 },
......@@ -180882,14 +184876,14 @@ fn airMulAdd(self: *CodeGen, inst: Air.Inst.Index) !void {
180882184876 }
180883184877 else if (std.mem.eql(u2, &order, &.{ 2, 1, 3 }) or std.mem.eql(u2, &order, &.{ 1, 2, 3 }))
180884184878 switch (ty.zigTypeTag(zcu)) {
180885 .float => switch (ty.floatBits(self.target.*)) {
184879 .float => switch (ty.floatBits(self.target)) {
180886184880 32 => .{ .v_ss, .fmadd213 },
180887184881 64 => .{ .v_sd, .fmadd213 },
180888184882 16, 80, 128 => null,
180889184883 else => unreachable,
180890184884 },
180891184885 .vector => switch (ty.childType(zcu).zigTypeTag(zcu)) {
180892 .float => switch (ty.childType(zcu).floatBits(self.target.*)) {
184886 .float => switch (ty.childType(zcu).floatBits(self.target)) {
180893184887 32 => switch (ty.vectorLen(zcu)) {
180894184888 1 => .{ .v_ss, .fmadd213 },
180895184889 2...8 => .{ .v_ps, .fmadd213 },
......@@ -180909,14 +184903,14 @@ fn airMulAdd(self: *CodeGen, inst: Air.Inst.Index) !void {
180909184903 }
180910184904 else if (std.mem.eql(u2, &order, &.{ 2, 3, 1 }) or std.mem.eql(u2, &order, &.{ 3, 2, 1 }))
180911184905 switch (ty.zigTypeTag(zcu)) {
180912 .float => switch (ty.floatBits(self.target.*)) {
184906 .float => switch (ty.floatBits(self.target)) {
180913184907 32 => .{ .v_ss, .fmadd231 },
180914184908 64 => .{ .v_sd, .fmadd231 },
180915184909 16, 80, 128 => null,
180916184910 else => unreachable,
180917184911 },
180918184912 .vector => switch (ty.childType(zcu).zigTypeTag(zcu)) {
180919 .float => switch (ty.childType(zcu).floatBits(self.target.*)) {
184913 .float => switch (ty.childType(zcu).floatBits(self.target)) {
180920184914 32 => switch (ty.vectorLen(zcu)) {
180921184915 1 => .{ .v_ss, .fmadd231 },
180922184916 2...8 => .{ .v_ps, .fmadd231 },
......@@ -181278,14 +185272,16 @@ const CallMCValues = struct {
181278185272 }
181279185273};
181280185274
185275const win64_shadow_space = 8 * 4;
185276
181281185277/// Caller must call `CallMCValues.deinit`.
181282185278fn resolveCallingConventionValues(
181283 self: *CodeGen,
185279 cg: *CodeGen,
181284185280 fn_info: InternPool.Key.FuncType,
181285185281 var_args: []const Type,
181286185282 stack_frame_base: FrameIndex,
181287185283) !CallMCValues {
181288 const pt = self.pt;
185284 const pt = cg.pt;
181289185285 const zcu = pt.zcu;
181290185286 const ip = &zcu.intern_pool;
181291185287 const cc = fn_info.cc;
......@@ -181294,7 +185290,7 @@ fn resolveCallingConventionValues(
181294185290 param_types: [32][@sizeOf(Type)]u8 align(@alignOf(Type)),
181295185291 };
181296185292 var stack align(@max(@alignOf(ExpectedContents), @alignOf(std.heap.StackFallbackAllocator(0)))) =
181297 std.heap.stackFallback(@sizeOf(ExpectedContents), self.gpa);
185293 std.heap.stackFallback(@sizeOf(ExpectedContents), cg.gpa);
181298185294 const allocator = stack.get();
181299185295
181300185296 const param_types = try allocator.alloc(Type, fn_info.param_types.len + var_args.len);
......@@ -181303,10 +185299,10 @@ fn resolveCallingConventionValues(
181303185299 for (param_types[0..fn_info.param_types.len], fn_info.param_types.get(ip)) |*param_ty, arg_ty|
181304185300 param_ty.* = .fromInterned(arg_ty);
181305185301 for (param_types[fn_info.param_types.len..], var_args) |*param_ty, arg_ty|
181306 param_ty.* = self.promoteVarArg(arg_ty);
185302 param_ty.* = cg.promoteVarArg(arg_ty);
181307185303
181308185304 var result: CallMCValues = .{
181309 .args = try self.gpa.alloc(MCValue, param_types.len),
185305 .args = try cg.gpa.alloc(MCValue, param_types.len),
181310185306 .air_arg_count = 0,
181311185307 // These undefined values must be populated before returning from this function.
181312185308 .return_value = undefined,
......@@ -181316,29 +185312,30 @@ fn resolveCallingConventionValues(
181316185312 .fp_count = 0,
181317185313 .err_ret_trace_reg = .none,
181318185314 };
181319 errdefer self.gpa.free(result.args);
185315 errdefer cg.gpa.free(result.args);
181320185316
181321185317 const ret_ty: Type = .fromInterned(fn_info.return_type);
181322185318 switch (cc) {
181323185319 .naked => {
181324185320 assert(result.args.len == 0);
181325185321 result.return_value = .init(.unreach);
181326 result.stack_align = switch (self.target.cpu.arch) {
185322 result.stack_align = switch (cg.target.cpu.arch) {
181327185323 else => unreachable,
181328185324 .x86 => .@"4",
181329185325 .x86_64 => .@"8",
181330185326 };
181331185327 },
181332185328 .x86_64_sysv, .x86_64_win => |cc_opts| {
181333 var ret_int_reg_i: u32 = 0;
181334 var ret_sse_reg_i: u32 = 0;
181335 var param_int_reg_i: u32 = 0;
181336 var param_sse_reg_i: u32 = 0;
185329 const param_gpr = abi.getCAbiIntParamRegs(cc);
185330 var param_gpr_index: u32 = 0;
185331 const param_sse = abi.getCAbiSseParamRegs(cc, cg.target);
185332 var param_sse_index: u32 = 0;
185333
181337185334 result.stack_align = .fromByteUnits(cc_opts.incoming_stack_alignment orelse 16);
181338185335
181339185336 switch (cc) {
181340185337 .x86_64_sysv => {},
181341 .x86_64_win => result.stack_byte_count += @intCast(4 * 8),
185338 .x86_64_win => result.stack_byte_count += @intCast(win64_shadow_space),
181342185339 else => unreachable,
181343185340 }
181344185341
......@@ -181350,62 +185347,56 @@ fn resolveCallingConventionValues(
181350185347 result.return_value = .init(.none);
181351185348 } else {
181352185349 var ret_tracking: [4]InstTracking = undefined;
181353 var ret_tracking_i: usize = 0;
185350 var ret_tracking_len: u32 = 0;
185351 var ret_gpr = abi.getCAbiIntReturnRegs(cc);
185352 var ret_sse = abi.getCAbiSseReturnRegs(cc);
185353 var ret_x87 = abi.getCAbiX87ReturnRegs(cc);
181354185354
181355185355 const classes = switch (cc) {
181356 .x86_64_sysv => std.mem.sliceTo(&abi.classifySystemV(ret_ty, zcu, self.target, .ret), .none),
181357 .x86_64_win => &.{abi.classifyWindows(ret_ty, zcu)},
185356 .x86_64_sysv => std.mem.sliceTo(&abi.classifySystemV(ret_ty, zcu, cg.target, .ret), .none),
185357 .x86_64_win => &.{abi.classifyWindows(ret_ty, zcu, cg.target)},
181358185358 else => unreachable,
181359185359 };
181360185360 for (classes) |class| switch (class) {
181361185361 .integer => {
181362 const ret_int_reg = registerAlias(
181363 abi.getCAbiIntReturnRegs(cc)[ret_int_reg_i],
185362 ret_tracking[ret_tracking_len] = .init(.{ .register = registerAlias(
185363 ret_gpr[0],
181364185364 @intCast(@min(ret_ty.abiSize(zcu), 8)),
181365 );
181366 ret_int_reg_i += 1;
181367
181368 ret_tracking[ret_tracking_i] = .init(.{ .register = ret_int_reg });
181369 ret_tracking_i += 1;
185365 ) });
185366 ret_tracking_len += 1;
185367 ret_gpr = ret_gpr[1..];
181370185368 },
181371185369 .sse, .float, .float_combine, .win_i128 => {
181372 const ret_sse_regs = abi.getCAbiSseReturnRegs(cc);
181373185370 const abi_size: u32 = @intCast(ret_ty.abiSize(zcu));
181374 const reg_size = @min(abi_size, self.vectorSize(.float));
185371 const reg_size = @min(abi_size, cg.vectorSize(.float));
181375185372 var byte_offset: u32 = 0;
181376185373 while (byte_offset < abi_size) : (byte_offset += reg_size) {
181377 const ret_sse_reg = registerAlias(ret_sse_regs[ret_sse_reg_i], reg_size);
181378 ret_sse_reg_i += 1;
185374 const ret_sse_reg = registerAlias(ret_sse[0], reg_size);
185375 ret_sse = ret_sse[1..];
181379185376
181380 ret_tracking[ret_tracking_i] = .init(.{ .register = ret_sse_reg });
181381 ret_tracking_i += 1;
185377 ret_tracking[ret_tracking_len] = .init(.{ .register = ret_sse_reg });
185378 ret_tracking_len += 1;
181382185379 }
181383185380 },
181384 .sseup => assert(ret_tracking[ret_tracking_i - 1].short.register.isClass(.sse)),
185381 .sseup => assert(ret_tracking[ret_tracking_len - 1].short.register.isClass(.sse)),
181385185382 .x87 => {
181386 ret_tracking[ret_tracking_i] = .init(.{ .register = abi.getCAbiX87ReturnRegs(cc)[0] });
181387 ret_tracking_i += 1;
181388 },
181389 .x87up => assert(ret_tracking[ret_tracking_i - 1].short.register.isClass(.x87)),
181390 .complex_x87 => {
181391 ret_tracking[ret_tracking_i] = .init(.{ .register_pair = abi.getCAbiX87ReturnRegs(cc)[0..2].* });
181392 ret_tracking_i += 1;
181393 },
181394 .memory => {
181395 const ret_int_reg = abi.getCAbiIntReturnRegs(cc)[ret_int_reg_i].to64();
181396 ret_int_reg_i += 1;
181397 const ret_indirect_reg = abi.getCAbiIntParamRegs(cc)[param_int_reg_i];
181398 param_int_reg_i += 1;
181399
181400 ret_tracking[ret_tracking_i] = .{
181401 .short = .{ .indirect = .{ .reg = ret_int_reg } },
181402 .long = .{ .indirect = .{ .reg = ret_indirect_reg } },
185383 ret_tracking[ret_tracking_len] = .init(.{ .register = ret_x87[0] });
185384 ret_tracking_len += 1;
185385 ret_x87 = ret_x87[1..];
185386 },
185387 .x87up => assert(ret_tracking[ret_tracking_len - 1].short.register.isClass(.x87)),
185388 .memory, .integer_per_element => {
185389 ret_tracking[ret_tracking_len] = .{
185390 .short = .{ .indirect = .{ .reg = ret_gpr[0].to64() } },
185391 .long = .{ .indirect = .{ .reg = param_gpr[param_gpr_index].to64() } },
181403185392 };
181404 ret_tracking_i += 1;
185393 ret_tracking_len += 1;
185394 ret_gpr = ret_gpr[1..];
185395 param_gpr_index += 1;
181405185396 },
181406 .none, .integer_per_element => unreachable,
185397 .none => unreachable,
181407185398 };
181408 result.return_value = switch (ret_tracking_i) {
185399 result.return_value = switch (ret_tracking_len) {
181409185400 else => unreachable,
181410185401 1 => ret_tracking[0],
181411185402 2 => .init(.{ .register_pair = .{
......@@ -181427,97 +185418,96 @@ fn resolveCallingConventionValues(
181427185418 }
181428185419
181429185420 // Input params
181430 for (param_types, result.args) |ty, *arg| {
185421 params: for (param_types, result.args) |ty, *arg| {
181431185422 assert(ty.hasRuntimeBitsIgnoreComptime(zcu));
181432185423 result.air_arg_count += 1;
181433185424 switch (cc) {
181434185425 .x86_64_sysv => {},
181435185426 .x86_64_win => {
181436 param_int_reg_i = @max(param_int_reg_i, param_sse_reg_i);
181437 param_sse_reg_i = param_int_reg_i;
185427 param_gpr_index = @max(param_gpr_index, param_sse_index);
185428 param_sse_index = param_gpr_index;
181438185429 },
181439185430 else => unreachable,
181440185431 }
181441185432
181442185433 var arg_mcv: [4]MCValue = undefined;
181443 var arg_mcv_i: usize = 0;
185434 var arg_mcv_len: u32 = 0;
181444185435
181445185436 const classes = switch (cc) {
181446 .x86_64_sysv => std.mem.sliceTo(&abi.classifySystemV(ty, zcu, self.target, .arg), .none),
181447 .x86_64_win => &.{abi.classifyWindows(ty, zcu)},
185437 .x86_64_sysv => std.mem.sliceTo(&abi.classifySystemV(ty, zcu, cg.target, .arg), .none),
185438 .x86_64_win => &.{abi.classifyWindows(ty, zcu, cg.target)},
181448185439 else => unreachable,
181449185440 };
181450185441 classes: for (classes) |class| switch (class) {
181451185442 .integer => {
181452 const param_int_regs = abi.getCAbiIntParamRegs(cc);
181453 if (param_int_reg_i >= param_int_regs.len) break;
181454
181455 const param_int_reg =
181456 registerAlias(param_int_regs[param_int_reg_i], @intCast(@min(ty.abiSize(zcu), 8)));
181457 param_int_reg_i += 1;
181458
181459 arg_mcv[arg_mcv_i] = .{ .register = param_int_reg };
181460 arg_mcv_i += 1;
185443 if (param_gpr_index >= param_gpr.len) break;
185444 arg_mcv[arg_mcv_len] = .{
185445 .register = registerAlias(param_gpr[param_gpr_index], @intCast(@min(ty.abiSize(zcu), 8))),
185446 };
185447 arg_mcv_len += 1;
185448 param_gpr_index += 1;
181461185449 },
181462185450 .sse, .float, .float_combine => {
181463 const param_sse_regs = abi.getCAbiSseParamRegs(cc, self.target);
181464185451 const abi_size: u32 = @intCast(ty.abiSize(zcu));
181465 const reg_size = @min(abi_size, self.vectorSize(.float));
185452 const reg_size = @min(abi_size, cg.vectorSize(.float));
181466185453 var byte_offset: u32 = 0;
181467185454 while (byte_offset < abi_size) : (byte_offset += reg_size) {
181468 if (param_sse_reg_i >= param_sse_regs.len) break :classes;
185455 if (param_sse_index >= param_sse.len) break :classes;
181469185456
181470 const param_sse_reg = registerAlias(param_sse_regs[param_sse_reg_i], reg_size);
181471 param_sse_reg_i += 1;
185457 const param_sse_reg = registerAlias(param_sse[param_sse_index], reg_size);
185458 param_sse_index += 1;
181472185459
181473 arg_mcv[arg_mcv_i] = .{ .register = param_sse_reg };
181474 arg_mcv_i += 1;
185460 arg_mcv[arg_mcv_len] = .{ .register = param_sse_reg };
185461 arg_mcv_len += 1;
181475185462 }
181476185463 },
181477 .sseup => assert(arg_mcv[arg_mcv_i - 1].register.isClass(.sse)),
181478 .x87, .x87up, .complex_x87, .memory, .win_i128 => switch (cc) {
185464 .sseup => assert(arg_mcv[arg_mcv_len - 1].register.isClass(.sse)),
185465 .x87, .x87up, .memory, .win_i128 => switch (cc) {
181479185466 .x86_64_sysv => switch (class) {
181480 .x87, .x87up, .complex_x87, .memory => break,
185467 .x87, .x87up, .memory => break,
181481185468 else => unreachable,
181482185469 },
181483185470 .x86_64_win => if (ty.abiSize(zcu) > 8) {
181484 const param_int_reg = abi.getCAbiIntParamRegs(cc)[param_int_reg_i].to64();
181485 param_int_reg_i += 1;
181486
181487 arg_mcv[arg_mcv_i] = .{ .indirect = .{ .reg = param_int_reg } };
181488 arg_mcv_i += 1;
185471 if (param_gpr_index < param_gpr.len) {
185472 arg_mcv[arg_mcv_len] = .{ .indirect = .{ .reg = param_gpr[param_gpr_index].to64() } };
185473 arg_mcv_len += 1;
185474 param_gpr_index += 1;
185475 } else {
185476 assert(arg_mcv_len == 0);
185477 const param_align = Type.usize.abiAlignment(zcu);
185478 result.stack_byte_count = @intCast(param_align.forward(result.stack_byte_count));
185479 result.stack_align = result.stack_align.max(param_align);
185480 arg.* = .{ .indirect_load_frame = .{
185481 .index = stack_frame_base,
185482 .off = result.stack_byte_count,
185483 } };
185484 result.stack_byte_count += @intCast(Type.usize.abiSize(zcu));
185485 continue :params;
185486 }
181489185487 } else break,
181490185488 else => unreachable,
181491185489 },
181492185490 .none => unreachable,
181493185491 .integer_per_element => {
181494 const param_int_regs_len: u32 =
181495 @intCast(abi.getCAbiIntParamRegs(cc).len);
181496 const remaining_param_int_regs: u3 =
181497 @intCast(param_int_regs_len - param_int_reg_i);
181498 param_int_reg_i = param_int_regs_len;
185492 const remaining_param_gpr_len: u3 = @intCast(param_gpr.len - param_gpr_index);
185493 param_gpr_index = @intCast(param_gpr.len);
181499185494
181500185495 const frame_elem_align = 8;
181501 const frame_elems_len = ty.vectorLen(zcu) - remaining_param_int_regs;
181502 const frame_elem_size = std.mem.alignForward(
181503 u64,
181504 ty.childType(zcu).abiSize(zcu),
181505 frame_elem_align,
181506 );
185496 const frame_elems_len = ty.vectorLen(zcu) - remaining_param_gpr_len;
185497 const frame_elem_size = std.mem.alignForward(u64, ty.childType(zcu).abiSize(zcu), frame_elem_align);
181507185498 const frame_size: u31 = @intCast(frame_elems_len * frame_elem_size);
181508185499
181509 result.stack_byte_count =
181510 std.mem.alignForward(u31, result.stack_byte_count, frame_elem_align);
181511 arg_mcv[arg_mcv_i] = .{ .elementwise_args = .{
181512 .regs = remaining_param_int_regs,
185500 result.stack_byte_count = std.mem.alignForward(u31, result.stack_byte_count, frame_elem_align);
185501 arg_mcv[arg_mcv_len] = .{ .elementwise_args = .{
185502 .regs = remaining_param_gpr_len,
181513185503 .frame_off = @intCast(result.stack_byte_count),
181514185504 .frame_index = stack_frame_base,
181515185505 } };
181516 arg_mcv_i += 1;
185506 arg_mcv_len += 1;
181517185507 result.stack_byte_count += frame_size;
181518185508 },
181519185509 } else {
181520 arg.* = switch (arg_mcv_i) {
185510 arg.* = switch (arg_mcv_len) {
181521185511 else => unreachable,
181522185512 1 => arg_mcv[0],
181523185513 2 => .{ .register_pair = .{
......@@ -181548,17 +185538,17 @@ fn resolveCallingConventionValues(
181548185538 } };
181549185539 result.stack_byte_count += @intCast(ty.abiSize(zcu));
181550185540 }
181551 assert(param_int_reg_i <= 6);
181552 result.gp_count = param_int_reg_i;
181553 assert(param_sse_reg_i <= 16);
181554 result.fp_count = param_sse_reg_i;
185541 assert(param_gpr_index <= 6);
185542 result.gp_count = param_gpr_index;
185543 assert(param_sse_index <= 16);
185544 result.fp_count = param_sse_index;
181555185545 },
181556185546 .auto => {
181557 result.stack_align = abi.zigcc.stack_align orelse .fromByteUnits(self.vectorSize(.float));
185547 result.stack_align = abi.zigcc.stack_align orelse .fromByteUnits(cg.vectorSize(.float));
181558185548
181559185549 var param_gpr = abi.getCAbiIntParamRegs(cc);
181560185550 var param_x87 = abi.getCAbiX87ParamRegs(cc);
181561 var param_sse = abi.getCAbiSseParamRegs(cc, self.target);
185551 var param_sse = abi.getCAbiSseParamRegs(cc, cg.target);
181562185552
181563185553 if (zcu.comp.config.any_error_tracing) {
181564185554 result.err_ret_trace_reg = param_gpr[param_gpr.len - 1];
......@@ -181573,8 +185563,8 @@ fn resolveCallingConventionValues(
181573185563 else return_value: {
181574185564 const ret_gpr = abi.getCAbiIntReturnRegs(cc);
181575185565 const ret_size: u31 = @intCast(ret_ty.abiSize(zcu));
181576 if (abi.zigcc.return_in_regs) switch (self.regClassForType(ret_ty)) {
181577 .general_purpose, .gphi => if (ret_size <= @as(u4, switch (self.target.cpu.arch) {
185566 if (abi.zigcc.return_in_regs) switch (cg.regClassForType(ret_ty)) {
185567 .general_purpose, .gphi => if (ret_size <= @as(u4, switch (cg.target.cpu.arch) {
181578185568 else => unreachable,
181579185569 .x86 => 4,
181580185570 .x86_64 => 8,
......@@ -181584,7 +185574,7 @@ fn resolveCallingConventionValues(
181584185574 break :return_value .init(.{ .register_pair = ret_gpr[0..2].* }),
181585185575 .segment, .mmx, .ip, .cr, .dr => unreachable,
181586185576 .x87 => if (ret_size <= 16) break :return_value .init(.{ .register = .st0 }),
181587 .sse => if (ret_size <= self.vectorSize(.float)) break :return_value .init(.{
185577 .sse => if (ret_size <= cg.vectorSize(.float)) break :return_value .init(.{
181588185578 .register = registerAlias(abi.getCAbiSseReturnRegs(cc)[0], @max(ret_size, 16)),
181589185579 }),
181590185580 };
......@@ -181604,8 +185594,8 @@ fn resolveCallingConventionValues(
181604185594 }
181605185595 result.air_arg_count += 1;
181606185596 const param_size: u31 = @intCast(param_ty.abiSize(zcu));
181607 if (abi.zigcc.params_in_regs) switch (self.regClassForType(param_ty)) {
181608 .general_purpose, .gphi => if (param_gpr.len >= 1 and param_size <= @as(u4, switch (self.target.cpu.arch) {
185597 if (abi.zigcc.params_in_regs) switch (cg.regClassForType(param_ty)) {
185598 .general_purpose, .gphi => if (param_gpr.len >= 1 and param_size <= @as(u4, switch (cg.target.cpu.arch) {
181609185599 else => unreachable,
181610185600 .x86 => 4,
181611185601 .x86_64 => 8,
......@@ -181624,7 +185614,7 @@ fn resolveCallingConventionValues(
181624185614 param_x87 = param_x87[1..];
181625185615 continue;
181626185616 },
181627 .sse => if (param_sse.len >= 1 and param_size <= self.vectorSize(.float)) {
185617 .sse => if (param_sse.len >= 1 and param_size <= cg.vectorSize(.float)) {
181628185618 arg.* = .{
181629185619 .register = registerAlias(param_sse[0], @max(param_size, 16)),
181630185620 };
......@@ -181642,27 +185632,27 @@ fn resolveCallingConventionValues(
181642185632 result.stack_byte_count += param_size;
181643185633 }
181644185634 },
181645 else => return self.fail("TODO implement function parameters and return values for {} on x86_64", .{cc}),
185635 else => return cg.fail("TODO implement function parameters and return values for {} on x86_64", .{cc}),
181646185636 }
181647185637
181648185638 result.stack_byte_count = @intCast(result.stack_align.forward(result.stack_byte_count));
181649185639 return result;
181650185640}
181651185641
181652fn fail(self: *CodeGen, comptime format: []const u8, args: anytype) error{ OutOfMemory, CodegenFail } {
185642fn fail(cg: *CodeGen, comptime format: []const u8, args: anytype) error{ OutOfMemory, CodegenFail } {
181653185643 @branchHint(.cold);
181654 const zcu = self.pt.zcu;
181655 switch (self.owner) {
185644 const zcu = cg.pt.zcu;
185645 switch (cg.owner) {
181656185646 .nav_index => |i| return zcu.codegenFail(i, format, args),
181657185647 .lazy_sym => |s| return zcu.codegenFailType(s.ty, format, args),
181658185648 }
181659185649 return error.CodegenFail;
181660185650}
181661185651
181662fn failMsg(self: *CodeGen, msg: *Zcu.ErrorMsg) error{ OutOfMemory, CodegenFail } {
185652fn failMsg(cg: *CodeGen, msg: *Zcu.ErrorMsg) error{ OutOfMemory, CodegenFail } {
181663185653 @branchHint(.cold);
181664 const zcu = self.pt.zcu;
181665 switch (self.owner) {
185654 const zcu = cg.pt.zcu;
185655 switch (cg.owner) {
181666185656 .nav_index => |i| return zcu.codegenFailMsg(i, msg),
181667185657 .lazy_sym => |s| return zcu.codegenFailTypeMsg(s.ty, msg),
181668185658 }
......@@ -181979,7 +185969,7 @@ fn promoteInt(self: *CodeGen, ty: Type) Type {
181979185969
181980185970fn promoteVarArg(self: *CodeGen, ty: Type) Type {
181981185971 if (!ty.isRuntimeFloat()) return self.promoteInt(ty);
181982 switch (ty.floatBits(self.target.*)) {
185972 switch (ty.floatBits(self.target)) {
181983185973 32, 64 => return .f64,
181984185974 else => |float_bits| {
181985185975 assert(float_bits == self.target.cTypeBitSize(.longdouble));
......@@ -182080,7 +186070,7 @@ fn intInfo(cg: *CodeGen, ty: Type) ?std.builtin.Type.Int {
182080186070}
182081186071
182082186072fn floatBits(cg: *CodeGen, ty: Type) ?u16 {
182083 return if (ty.isRuntimeFloat()) ty.floatBits(cg.target.*) else null;
186073 return if (ty.isRuntimeFloat()) ty.floatBits(cg.target) else null;
182084186074}
182085186075
182086186076const Temp = struct {
......@@ -182127,6 +186117,7 @@ const Temp = struct {
182127186117 .register_mask,
182128186118 .memory,
182129186119 .indirect,
186120 .indirect_load_frame,
182130186121 .lea_frame,
182131186122 .load_nav,
182132186123 .lea_nav,
......@@ -182200,7 +186191,7 @@ const Temp = struct {
182200186191 switch (temp_tracking.short) {
182201186192 else => {},
182202186193 .register => |reg| {
182203 try cg.freeValue(temp_tracking.long);
186194 try cg.freeValue(temp_tracking.long, .{});
182204186195 temp_tracking.* = .init(.{ .register_offset = .{
182205186196 .reg = reg,
182206186197 .off = off,
......@@ -182208,7 +186199,7 @@ const Temp = struct {
182208186199 return;
182209186200 },
182210186201 .register_offset => |reg_off| {
182211 try cg.freeValue(temp_tracking.long);
186202 try cg.freeValue(temp_tracking.long, .{});
182212186203 temp_tracking.* = .init(.{ .register_offset = .{
182213186204 .reg = reg_off.reg,
182214186205 .off = reg_off.off + off,
......@@ -182598,6 +186589,7 @@ const Temp = struct {
182598186589 .register_quadruple,
182599186590 .register_overflow,
182600186591 .register_mask,
186592 .indirect_load_frame,
182601186593 .elementwise_args,
182602186594 .reserved_frame,
182603186595 .air_ref,
......@@ -182675,7 +186667,7 @@ const Temp = struct {
182675186667 .register_quadruple,
182676186668 => |val_regs| for (val_regs) |val_reg| {
182677186669 try ptr.loadReg(val_ty, val_reg, cg);
182678 try ptr.toOffset(@divExact(val_reg.bitSize(), 8), cg);
186670 try ptr.toOffset(@intCast(@divExact(val_reg.size().bitSize(cg.target), 8)), cg);
182679186671 while (try ptr.toLea(cg)) {}
182680186672 },
182681186673 .register_offset => |val_reg_off| switch (val_reg_off.off) {
......@@ -182820,7 +186812,7 @@ const Temp = struct {
182820186812 var disp = opts.disp;
182821186813 for (val_regs) |val_reg| {
182822186814 try src.readReg(disp, val_ty, val_reg, cg);
182823 disp += @divExact(val_reg.bitSize(), 8);
186815 disp += @intCast(@divExact(val_reg.size().bitSize(cg.target), 8));
182824186816 }
182825186817 },
182826186818 .register_offset => |val_reg_off| switch (val_reg_off.off) {
......@@ -182950,25 +186942,59 @@ const Temp = struct {
182950186942 while (try ptr.toRegClass(false, .general_purpose, cg)) {},
182951186943 }
182952186944 try strat.read(cg, dst_reg, try ptr.tracking(cg).short.deref().mem(cg, .{
182953 .size = .fromBitSize(@min(8 * dst_ty.abiSize(cg.pt.zcu), dst_reg.bitSize())),
186945 .size = cg.memSize(dst_ty),
182954186946 }));
182955186947 }
182956186948
182957186949 fn storeRegs(ptr: *Temp, src_ty: Type, src_regs: []const Register, cg: *CodeGen) InnerError!void {
186950 const zcu = cg.pt.zcu;
186951 const ip = &zcu.intern_pool;
182958186952 var part_disp: u31 = 0;
182959186953 var deferred_disp: u31 = 0;
182960186954 var src_abi_size: u32 = @intCast(src_ty.abiSize(cg.pt.zcu));
182961 for (src_regs) |src_reg| {
186955 for (src_regs, 0..) |src_reg, part_index| {
186956 const part_ty: Type = if (src_regs.len == 1)
186957 src_ty
186958 else if (cg.intInfo(src_ty)) |int_info| part_ty: {
186959 assert(src_regs.len == std.math.divCeil(u16, int_info.bits, 64) catch unreachable);
186960 break :part_ty .u64;
186961 } else part_ty: switch (ip.indexToKey(src_ty.toIntern())) {
186962 else => std.debug.panic("{s}: {}\n", .{ @src().fn_name, src_ty.fmt(cg.pt) }),
186963 .ptr_type => |ptr_info| {
186964 assert(ptr_info.flags.size == .slice);
186965 assert(src_regs.len == 2);
186966 break :part_ty .usize;
186967 },
186968 .array_type => {
186969 assert(src_regs.len - part_index == std.math.divCeil(u32, src_abi_size, 8) catch unreachable);
186970 break :part_ty try cg.pt.intType(.unsigned, @as(u16, 8) * @min(src_abi_size, 8));
186971 },
186972 .opt_type => |opt_child| switch (ip.indexToKey(opt_child)) {
186973 else => std.debug.panic("{s}: {}\n", .{ @src().fn_name, src_ty.fmt(cg.pt) }),
186974 .ptr_type => |ptr_info| {
186975 assert(ptr_info.flags.size == .slice);
186976 assert(src_regs.len == 2);
186977 break :part_ty .usize;
186978 },
186979 },
186980 .struct_type => {
186981 assert(src_regs.len - part_index == std.math.divCeil(u32, src_abi_size, 8) catch unreachable);
186982 break :part_ty .u64;
186983 },
186984 };
186985 const part_size: u31 = @intCast(part_ty.abiSize(zcu));
182962186986 const src_rc = src_reg.class();
182963 const part_bit_size = @min(8 * src_abi_size, src_reg.bitSize());
182964 const part_size = @divExact(part_bit_size, 8);
186987 const part_bit_size = switch (src_rc) {
186988 else => 8 * part_size,
186989 .x87 => part_ty.bitSize(zcu),
186990 };
182965186991 if (src_rc == .x87 or std.math.isPowerOfTwo(part_size)) {
182966186992 // hack around linker relocation bugs
182967186993 switch (ptr.tracking(cg).short) {
182968186994 else => {},
182969186995 .lea_nav, .lea_uav, .lea_lazy_sym => while (try ptr.toRegClass(false, .general_purpose, cg)) {},
182970186996 }
182971 const strat = try cg.moveStrategy(src_ty, src_rc, false);
186997 const strat = try cg.moveStrategy(part_ty, src_rc, false);
182972186998 try strat.write(cg, try ptr.tracking(cg).short.deref().mem(cg, .{
182973186999 .size = .fromBitSize(part_bit_size),
182974187000 .disp = part_disp,
......@@ -182979,7 +187005,7 @@ const Temp = struct {
182979187005 .size = frame_size,
182980187006 .alignment = .fromNonzeroByteUnits(frame_size),
182981187007 }));
182982 const strat = try cg.moveStrategy(src_ty, src_rc, true);
187008 const strat = try cg.moveStrategy(part_ty, src_rc, true);
182983187009 try strat.write(cg, .{
182984187010 .base = .{ .frame = frame_index },
182985187011 .mod = .{ .rm = .{ .size = .fromSize(frame_size) } },
......@@ -183001,7 +187027,7 @@ const Temp = struct {
183001187027 fn readReg(src: Temp, disp: i32, dst_ty: Type, dst_reg: Register, cg: *CodeGen) InnerError!void {
183002187028 const strat = try cg.moveStrategy(dst_ty, dst_reg.class(), false);
183003187029 try strat.read(cg, dst_reg, try src.tracking(cg).short.mem(cg, .{
183004 .size = .fromBitSize(@min(8 * dst_ty.abiSize(cg.pt.zcu), dst_reg.bitSize())),
187030 .size = cg.memSize(dst_ty),
183005187031 .disp = disp,
183006187032 }));
183007187033 }
......@@ -183012,7 +187038,7 @@ const Temp = struct {
183012187038 if (src_rc == .x87 or std.math.isPowerOfTwo(src_abi_size)) {
183013187039 const strat = try cg.moveStrategy(src_ty, src_rc, false);
183014187040 try strat.write(cg, try dst.tracking(cg).short.mem(cg, .{
183015 .size = .fromBitSize(@min(8 * src_abi_size, src_reg.bitSize())),
187041 .size = cg.memSize(src_ty),
183016187042 .disp = disp,
183017187043 }), registerAlias(src_reg, src_abi_size));
183018187044 } else {
......@@ -183050,14 +187076,14 @@ const Temp = struct {
183050187076 .integer, .memory, .float, .float_combine => class_index + 1,
183051187077 .sse => std.mem.indexOfNonePos(abi.Class, classes, class_index + 1, &.{.sseup}) orelse classes.len,
183052187078 .x87 => std.mem.indexOfNonePos(abi.Class, classes, class_index + 1, &.{.x87up}) orelse classes.len,
183053 .sseup, .x87up, .complex_x87, .none, .win_i128, .integer_per_element => unreachable,
187079 .sseup, .x87up, .none, .win_i128, .integer_per_element => unreachable,
183054187080 });
183055187081 const part_size = switch (class) {
183056187082 .integer, .sse, .memory => @min(8 * @as(u7, next_class_index - class_index), remaining_abi_size),
183057187083 .x87 => 16,
183058187084 .float => 4,
183059187085 .float_combine => 8,
183060 .sseup, .x87up, .complex_x87, .none, .win_i128, .integer_per_element => unreachable,
187086 .sseup, .x87up, .none, .win_i128, .integer_per_element => unreachable,
183061187087 };
183062187088 try dst.writeReg(part_disp, switch (class) {
183063187089 .integer => .u64,
......@@ -183070,7 +187096,7 @@ const Temp = struct {
183070187096 .x87 => .f80,
183071187097 .float => .f32,
183072187098 .float_combine => .vector_2_f32,
183073 .sseup, .x87up, .complex_x87, .memory, .none, .win_i128, .integer_per_element => unreachable,
187099 .sseup, .x87up, .memory, .none, .win_i128, .integer_per_element => unreachable,
183074187100 }, src_reg, cg);
183075187101 part_disp += part_size;
183076187102 remaining_abi_size -= part_size;
......@@ -186718,12 +190744,12 @@ const Temp = struct {
186718190744 .{ ._, ._, .div, .src1q, ._, ._, ._ },
186719190745 } },
186720190746 }, .{
186721 .required_features = .{ .@"64bit", null, null, null },
190747 .required_cc_abi = .sysv64,
186722190748 .src_constraints = .{ .{ .signed_int = .xword }, .{ .signed_int = .xword }, .any },
186723190749 .patterns = &.{
186724190750 .{ .src = .{
186725 .{ .to_param_gpr_pair = .{ .cc = .ccc, .at = 0 } },
186726 .{ .to_param_gpr_pair = .{ .cc = .ccc, .at = 2 } },
190751 .{ .to_param_gpr_pair = .{ .cc = .ccc, .after = 0, .at = 0 } },
190752 .{ .to_param_gpr_pair = .{ .cc = .ccc, .after = 2, .at = 2 } },
186727190753 .none,
186728190754 } },
186729190755 },
......@@ -186741,18 +190767,46 @@ const Temp = struct {
186741190767 .unused,
186742190768 .unused,
186743190769 },
186744 .dst_temps = .{ .{ .ret_gpr_pair = .{ .cc = .ccc, .at = 0 } }, .unused },
190770 .dst_temps = .{ .{ .ret_gpr_pair = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
186745190771 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
186746190772 .each = .{ .once = &.{
186747190773 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
186748190774 } },
186749190775 }, .{
186750 .required_features = .{ .@"64bit", null, null, null },
190776 .required_cc_abi = .win64,
190777 .required_features = .{ .sse, null, null, null },
190778 .src_constraints = .{ .{ .signed_int = .xword }, .{ .signed_int = .xword }, .any },
190779 .patterns = &.{
190780 .{ .src = .{ .to_mem, .to_mem, .none } },
190781 },
190782 .call_frame = .{ .alignment = .@"16" },
190783 .extra_temps = .{
190784 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
190785 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
190786 .{ .type = .usize, .kind = .{ .extern_func = "__divti3" } },
190787 .unused,
190788 .unused,
190789 .unused,
190790 .unused,
190791 .unused,
190792 .unused,
190793 .unused,
190794 .unused,
190795 },
190796 .dst_temps = .{ .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
190797 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
190798 .each = .{ .once = &.{
190799 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
190800 .{ ._, ._, .lea, .tmp1p, .mem(.src1), ._, ._ },
190801 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
190802 } },
190803 }, .{
190804 .required_cc_abi = .sysv64,
186751190805 .src_constraints = .{ .{ .unsigned_int = .xword }, .{ .unsigned_int = .xword }, .any },
186752190806 .patterns = &.{
186753190807 .{ .src = .{
186754 .{ .to_param_gpr_pair = .{ .cc = .ccc, .at = 0 } },
186755 .{ .to_param_gpr_pair = .{ .cc = .ccc, .at = 2 } },
190808 .{ .to_param_gpr_pair = .{ .cc = .ccc, .after = 0, .at = 0 } },
190809 .{ .to_param_gpr_pair = .{ .cc = .ccc, .after = 2, .at = 2 } },
186756190810 .none,
186757190811 } },
186758190812 },
......@@ -186770,11 +190824,39 @@ const Temp = struct {
186770190824 .unused,
186771190825 .unused,
186772190826 },
186773 .dst_temps = .{ .{ .ret_gpr_pair = .{ .cc = .ccc, .at = 0 } }, .unused },
190827 .dst_temps = .{ .{ .ret_gpr_pair = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
186774190828 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
186775190829 .each = .{ .once = &.{
186776190830 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
186777190831 } },
190832 }, .{
190833 .required_cc_abi = .win64,
190834 .required_features = .{ .sse, null, null, null },
190835 .src_constraints = .{ .{ .unsigned_int = .xword }, .{ .unsigned_int = .xword }, .any },
190836 .patterns = &.{
190837 .{ .src = .{ .to_mem, .to_mem, .none } },
190838 },
190839 .call_frame = .{ .alignment = .@"16" },
190840 .extra_temps = .{
190841 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
190842 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
190843 .{ .type = .usize, .kind = .{ .extern_func = "__udivti3" } },
190844 .unused,
190845 .unused,
190846 .unused,
190847 .unused,
190848 .unused,
190849 .unused,
190850 .unused,
190851 .unused,
190852 },
190853 .dst_temps = .{ .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } }, .unused },
190854 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
190855 .each = .{ .once = &.{
190856 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
190857 .{ ._, ._, .lea, .tmp1p, .mem(.src1), ._, ._ },
190858 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
190859 } },
186778190860 }, .{
186779190861 .required_features = .{ .@"64bit", null, null, null },
186780190862 .src_constraints = .{
......@@ -186787,10 +190869,10 @@ const Temp = struct {
186787190869 },
186788190870 .call_frame = .{ .alignment = .@"16" },
186789190871 .extra_temps = .{
186790 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 0 } } },
186791 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 1 } } },
186792 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 2 } } },
186793 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 3 } } },
190872 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
190873 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
190874 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 2, .at = 2 } } },
190875 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 3, .at = 3 } } },
186794190876 .{ .type = .usize, .kind = .{ .extern_func = "__divei4" } },
186795190877 .unused,
186796190878 .unused,
......@@ -186820,10 +190902,10 @@ const Temp = struct {
186820190902 },
186821190903 .call_frame = .{ .alignment = .@"16" },
186822190904 .extra_temps = .{
186823 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 0 } } },
186824 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 1 } } },
186825 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 2 } } },
186826 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 3 } } },
190905 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
190906 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
190907 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 2, .at = 2 } } },
190908 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 3, .at = 3 } } },
186827190909 .{ .type = .usize, .kind = .{ .extern_func = "__udivei4" } },
186828190910 .unused,
186829190911 .unused,
......@@ -187172,7 +191254,7 @@ const Temp = struct {
187172191254 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
187173191255 } },
187174191256 }, .{
187175 .required_features = .{ .@"64bit", null, null, null },
191257 .required_cc_abi = .sysv64,
187176191258 .src_constraints = .{
187177191259 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } },
187178191260 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } },
......@@ -187184,12 +191266,12 @@ const Temp = struct {
187184191266 .call_frame = .{ .alignment = .@"16" },
187185191267 .extra_temps = .{
187186191268 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
187187 .{ .type = .u64, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 0 } } },
187188 .{ .type = .i64, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 1 } } },
187189 .{ .type = .u64, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 2 } } },
187190 .{ .type = .i64, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 3 } } },
191269 .{ .type = .u64, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
191270 .{ .type = .i64, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
191271 .{ .type = .u64, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 2, .at = 2 } } },
191272 .{ .type = .i64, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 3, .at = 3 } } },
187191191273 .{ .type = .usize, .kind = .{ .extern_func = "__divti3" } },
187192 .{ .type = .u64, .kind = .{ .ret_gpr = .{ .cc = .ccc, .at = 0 } } },
191274 .{ .type = .u64, .kind = .{ .ret_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
187193191275 .unused,
187194191276 .unused,
187195191277 .unused,
......@@ -187210,7 +191292,115 @@ const Temp = struct {
187210191292 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
187211191293 } },
187212191294 }, .{
187213 .required_features = .{ .@"64bit", null, null, null },
191295 .required_cc_abi = .win64,
191296 .required_features = .{ .avx, null, null, null },
191297 .src_constraints = .{
191298 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } },
191299 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } },
191300 .any,
191301 },
191302 .patterns = &.{
191303 .{ .src = .{ .to_mem, .to_mem, .none } },
191304 },
191305 .call_frame = .{ .alignment = .@"16" },
191306 .extra_temps = .{
191307 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
191308 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
191309 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
191310 .{ .type = .usize, .kind = .{ .extern_func = "__divti3" } },
191311 .{ .type = .i128, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
191312 .unused,
191313 .unused,
191314 .unused,
191315 .unused,
191316 .unused,
191317 .unused,
191318 },
191319 .dst_temps = .{ .mem, .unused },
191320 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
191321 .each = .{ .once = &.{
191322 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
191323 .{ .@"0:", ._, .lea, .tmp1p, .memia(.src0, .tmp0, .add_unaligned_size), ._, ._ },
191324 .{ ._, ._, .lea, .tmp2p, .memia(.src1, .tmp0, .add_unaligned_size), ._, ._ },
191325 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
191326 .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp4x, ._, ._ },
191327 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
191328 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
191329 } },
191330 }, .{
191331 .required_cc_abi = .win64,
191332 .required_features = .{ .sse2, null, null, null },
191333 .src_constraints = .{
191334 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } },
191335 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } },
191336 .any,
191337 },
191338 .patterns = &.{
191339 .{ .src = .{ .to_mem, .to_mem, .none } },
191340 },
191341 .call_frame = .{ .alignment = .@"16" },
191342 .extra_temps = .{
191343 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
191344 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
191345 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
191346 .{ .type = .usize, .kind = .{ .extern_func = "__divti3" } },
191347 .{ .type = .i128, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
191348 .unused,
191349 .unused,
191350 .unused,
191351 .unused,
191352 .unused,
191353 .unused,
191354 },
191355 .dst_temps = .{ .mem, .unused },
191356 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
191357 .each = .{ .once = &.{
191358 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
191359 .{ .@"0:", ._, .lea, .tmp1p, .memia(.src0, .tmp0, .add_unaligned_size), ._, ._ },
191360 .{ ._, ._, .lea, .tmp2p, .memia(.src1, .tmp0, .add_unaligned_size), ._, ._ },
191361 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
191362 .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp4x, ._, ._ },
191363 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
191364 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
191365 } },
191366 }, .{
191367 .required_cc_abi = .win64,
191368 .required_features = .{ .sse, null, null, null },
191369 .src_constraints = .{
191370 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } },
191371 .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } },
191372 .any,
191373 },
191374 .patterns = &.{
191375 .{ .src = .{ .to_mem, .to_mem, .none } },
191376 },
191377 .call_frame = .{ .alignment = .@"16" },
191378 .extra_temps = .{
191379 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
191380 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
191381 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
191382 .{ .type = .usize, .kind = .{ .extern_func = "__divti3" } },
191383 .{ .type = .i128, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
191384 .unused,
191385 .unused,
191386 .unused,
191387 .unused,
191388 .unused,
191389 .unused,
191390 },
191391 .dst_temps = .{ .mem, .unused },
191392 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
191393 .each = .{ .once = &.{
191394 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
191395 .{ .@"0:", ._, .lea, .tmp1p, .memia(.src0, .tmp0, .add_unaligned_size), ._, ._ },
191396 .{ ._, ._, .lea, .tmp2p, .memia(.src1, .tmp0, .add_unaligned_size), ._, ._ },
191397 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
191398 .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp4x, ._, ._ },
191399 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
191400 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
191401 } },
191402 }, .{
191403 .required_cc_abi = .sysv64,
187214191404 .src_constraints = .{
187215191405 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } },
187216191406 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } },
......@@ -187222,12 +191412,12 @@ const Temp = struct {
187222191412 .call_frame = .{ .alignment = .@"16" },
187223191413 .extra_temps = .{
187224191414 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
187225 .{ .type = .u64, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 0 } } },
187226 .{ .type = .u64, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 1 } } },
187227 .{ .type = .u64, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 2 } } },
187228 .{ .type = .u64, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 3 } } },
191415 .{ .type = .u64, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
191416 .{ .type = .u64, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
191417 .{ .type = .u64, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 2, .at = 2 } } },
191418 .{ .type = .u64, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 3, .at = 3 } } },
187229191419 .{ .type = .usize, .kind = .{ .extern_func = "__udivti3" } },
187230 .{ .type = .u64, .kind = .{ .ret_gpr = .{ .cc = .ccc, .at = 0 } } },
191420 .{ .type = .u64, .kind = .{ .ret_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
187231191421 .unused,
187232191422 .unused,
187233191423 .unused,
......@@ -187247,6 +191437,114 @@ const Temp = struct {
187247191437 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
187248191438 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
187249191439 } },
191440 }, .{
191441 .required_cc_abi = .win64,
191442 .required_features = .{ .avx, null, null, null },
191443 .src_constraints = .{
191444 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } },
191445 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } },
191446 .any,
191447 },
191448 .patterns = &.{
191449 .{ .src = .{ .to_mem, .to_mem, .none } },
191450 },
191451 .call_frame = .{ .alignment = .@"16" },
191452 .extra_temps = .{
191453 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
191454 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
191455 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
191456 .{ .type = .usize, .kind = .{ .extern_func = "__udivti3" } },
191457 .{ .type = .u128, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
191458 .unused,
191459 .unused,
191460 .unused,
191461 .unused,
191462 .unused,
191463 .unused,
191464 },
191465 .dst_temps = .{ .mem, .unused },
191466 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
191467 .each = .{ .once = &.{
191468 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
191469 .{ .@"0:", ._, .lea, .tmp1p, .memia(.src0, .tmp0, .add_unaligned_size), ._, ._ },
191470 .{ ._, ._, .lea, .tmp2p, .memia(.src1, .tmp0, .add_unaligned_size), ._, ._ },
191471 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
191472 .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp4x, ._, ._ },
191473 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
191474 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
191475 } },
191476 }, .{
191477 .required_cc_abi = .win64,
191478 .required_features = .{ .sse2, null, null, null },
191479 .src_constraints = .{
191480 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } },
191481 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } },
191482 .any,
191483 },
191484 .patterns = &.{
191485 .{ .src = .{ .to_mem, .to_mem, .none } },
191486 },
191487 .call_frame = .{ .alignment = .@"16" },
191488 .extra_temps = .{
191489 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
191490 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
191491 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
191492 .{ .type = .usize, .kind = .{ .extern_func = "__udivti3" } },
191493 .{ .type = .u128, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
191494 .unused,
191495 .unused,
191496 .unused,
191497 .unused,
191498 .unused,
191499 .unused,
191500 },
191501 .dst_temps = .{ .mem, .unused },
191502 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
191503 .each = .{ .once = &.{
191504 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
191505 .{ .@"0:", ._, .lea, .tmp1p, .memia(.src0, .tmp0, .add_unaligned_size), ._, ._ },
191506 .{ ._, ._, .lea, .tmp2p, .memia(.src1, .tmp0, .add_unaligned_size), ._, ._ },
191507 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
191508 .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp4x, ._, ._ },
191509 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
191510 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
191511 } },
191512 }, .{
191513 .required_cc_abi = .win64,
191514 .required_features = .{ .sse, null, null, null },
191515 .src_constraints = .{
191516 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } },
191517 .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } },
191518 .any,
191519 },
191520 .patterns = &.{
191521 .{ .src = .{ .to_mem, .to_mem, .none } },
191522 },
191523 .call_frame = .{ .alignment = .@"16" },
191524 .extra_temps = .{
191525 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
191526 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
191527 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
191528 .{ .type = .usize, .kind = .{ .extern_func = "__udivti3" } },
191529 .{ .type = .u128, .kind = .{ .ret_sse = .{ .cc = .ccc, .after = 0, .at = 0 } } },
191530 .unused,
191531 .unused,
191532 .unused,
191533 .unused,
191534 .unused,
191535 .unused,
191536 },
191537 .dst_temps = .{ .mem, .unused },
191538 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
191539 .each = .{ .once = &.{
191540 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
191541 .{ .@"0:", ._, .lea, .tmp1p, .memia(.src0, .tmp0, .add_unaligned_size), ._, ._ },
191542 .{ ._, ._, .lea, .tmp2p, .memia(.src1, .tmp0, .add_unaligned_size), ._, ._ },
191543 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
191544 .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp4x, ._, ._ },
191545 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
191546 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
191547 } },
187250191548 }, .{
187251191549 .required_features = .{ .@"64bit", null, null, null },
187252191550 .src_constraints = .{
......@@ -187260,10 +191558,10 @@ const Temp = struct {
187260191558 .call_frame = .{ .alignment = .@"16" },
187261191559 .extra_temps = .{
187262191560 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
187263 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 0 } } },
187264 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 1 } } },
187265 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 2 } } },
187266 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 3 } } },
191561 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
191562 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
191563 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 2, .at = 2 } } },
191564 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 3, .at = 3 } } },
187267191565 .{ .type = .usize, .kind = .{ .extern_func = "__divei4" } },
187268191566 .unused,
187269191567 .unused,
......@@ -187296,10 +191594,10 @@ const Temp = struct {
187296191594 .call_frame = .{ .alignment = .@"16" },
187297191595 .extra_temps = .{
187298191596 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
187299 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 0 } } },
187300 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 1 } } },
187301 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 2 } } },
187302 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .at = 3 } } },
191597 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 0, .at = 0 } } },
191598 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 1, .at = 1 } } },
191599 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 2, .at = 2 } } },
191600 .{ .type = .usize, .kind = .{ .param_gpr = .{ .cc = .ccc, .after = 3, .at = 3 } } },
187303191601 .{ .type = .usize, .kind = .{ .extern_func = "__udivei4" } },
187304191602 .unused,
187305191603 .unused,
......@@ -187337,14 +191635,21 @@ const Temp = struct {
187337191635 if (op_temp.tracking(cg).short != .dead) try op_temp.die(cg);
187338191636 if (tomb_bits & @as(Air.Liveness.Bpi, 1) << @intCast(op_index) == 0) continue;
187339191637 if (cg.reused_operands.isSet(op_index)) continue;
187340 try cg.processDeath(op_ref.toIndexAllowNone() orelse continue);
191638 try cg.processDeath(op_ref.toIndexAllowNone() orelse continue, .{});
187341191639 }
187342191640 if (cg.liveness.isUnused(inst)) try temp.die(cg) else {
187343191641 switch (temp.unwrap(cg)) {
187344191642 .ref, .err_ret_trace => {
187345191643 const temp_mcv = temp.tracking(cg).short;
187346191644 const result = result: switch (temp_mcv) {
187347 .none, .unreach, .dead, .elementwise_args, .reserved_frame, .air_ref => unreachable,
191645 .none,
191646 .unreach,
191647 .dead,
191648 .indirect_load_frame,
191649 .elementwise_args,
191650 .reserved_frame,
191651 .air_ref,
191652 => unreachable,
187348191653 .undef, .immediate, .lea_frame => temp_mcv,
187349191654 .eflags,
187350191655 .register,
......@@ -187386,14 +191691,14 @@ const Temp = struct {
187386191691 if (op_temp.index != temp.index) continue;
187387191692 if (tomb_bits & @as(Air.Liveness.Bpi, 1) << @intCast(op_index) == 0) continue;
187388191693 if (cg.reused_operands.isSet(op_index)) continue;
187389 try cg.processDeath(op_ref.toIndexAllowNone() orelse continue);
191694 try cg.processDeath(op_ref.toIndexAllowNone() orelse continue, .{});
187390191695 }
187391191696 }
187392191697
187393191698 fn die(temp: Temp, cg: *CodeGen) InnerError!void {
187394191699 switch (temp.unwrap(cg)) {
187395191700 .ref, .err_ret_trace => {},
187396 .temp => |temp_index| try temp_index.tracking(cg).die(cg, temp_index.toIndex()),
191701 .temp => |temp_index| try temp_index.tracking(cg).die(cg, temp_index.toIndex(), .{}),
187397191702 }
187398191703 }
187399191704
......@@ -187779,6 +192084,8 @@ const Select = struct {
187779192084 }
187780192085
187781192086 const Case = struct {
192087 required_abi: enum { any, gnu, msvc } = .any,
192088 required_cc_abi: enum { any, sysv64, win64 } = .any,
187782192089 required_features: [4]?std.Target.x86.Feature = @splat(null),
187783192090 src_constraints: [@intFromEnum(Select.Operand.Ref.none) - @intFromEnum(Select.Operand.Ref.src0)]Constraint = @splat(.any),
187784192091 dst_constraints: [@intFromEnum(Select.Operand.Ref.src0) - @intFromEnum(Select.Operand.Ref.dst0)]Constraint = @splat(.any),
......@@ -188151,6 +192458,7 @@ const Select = struct {
188151192458 to_reg_pair: [2]Register,
188152192459 to_param_gpr: TempSpec.Kind.CallConvRegSpec,
188153192460 to_param_gpr_pair: TempSpec.Kind.CallConvRegSpec,
192461 to_param_sse: TempSpec.Kind.CallConvRegSpec,
188154192462 to_ret_gpr: TempSpec.Kind.CallConvRegSpec,
188155192463 to_ret_gpr_pair: TempSpec.Kind.CallConvRegSpec,
188156192464 mem,
......@@ -188238,7 +192546,7 @@ const Select = struct {
188238192546 .mem => temp.tracking(cg).short.isMemory(),
188239192547 .to_mem, .to_mut_mem => true,
188240192548 .mut_mem => temp.isMut(cg) and temp.tracking(cg).short.isMemory(),
188241 .to_reg, .to_reg_pair, .to_param_gpr, .to_param_gpr_pair, .to_ret_gpr, .to_ret_gpr_pair => true,
192549 .to_reg, .to_reg_pair, .to_param_gpr, .to_param_gpr_pair, .to_param_sse, .to_ret_gpr, .to_ret_gpr_pair => true,
188242192550 .gpr => temp.typeOf(cg).abiSize(cg.pt.zcu) <= 8 and switch (temp.tracking(cg).short) {
188243192551 .register => |reg| reg.isClass(.general_purpose),
188244192552 .register_offset => |reg_off| reg_off.reg.isClass(.general_purpose) and reg_off.off == 0,
......@@ -188343,10 +192651,11 @@ const Select = struct {
188343192651 .mut_mem, .to_mut_mem => try temp.toBase(true, cg),
188344192652 .to_reg => |reg| try temp.toReg(reg, cg),
188345192653 .to_reg_pair => |regs| try temp.toRegPair(regs, cg),
188346 .to_param_gpr => |param_spec| try temp.toReg(abi.getCAbiIntParamRegs(param_spec.tag(cg))[param_spec.at], cg),
188347 .to_param_gpr_pair => |param_spec| try temp.toRegPair(abi.getCAbiIntParamRegs(param_spec.tag(cg))[param_spec.at..][0..2].*, cg),
188348 .to_ret_gpr => |ret_spec| try temp.toReg(abi.getCAbiIntReturnRegs(ret_spec.tag(cg))[ret_spec.at], cg),
188349 .to_ret_gpr_pair => |ret_spec| try temp.toRegPair(abi.getCAbiIntReturnRegs(ret_spec.tag(cg))[ret_spec.at..][0..2].*, cg),
192654 .to_param_gpr => |param_spec| try temp.toReg(abi.getCAbiIntParamRegs(param_spec.tag(cg))[param_spec.index(cg)], cg),
192655 .to_param_gpr_pair => |param_spec| try temp.toRegPair(abi.getCAbiIntParamRegs(param_spec.tag(cg))[param_spec.index(cg)..][0..2].*, cg),
192656 .to_param_sse => |param_spec| try temp.toReg(abi.getCAbiSseParamRegs(param_spec.tag(cg), cg.target)[param_spec.index(cg)], cg),
192657 .to_ret_gpr => |ret_spec| try temp.toReg(abi.getCAbiIntReturnRegs(ret_spec.tag(cg))[ret_spec.index(cg)], cg),
192658 .to_ret_gpr_pair => |ret_spec| try temp.toRegPair(abi.getCAbiIntReturnRegs(ret_spec.tag(cg))[ret_spec.index(cg)..][0..2].*, cg),
188350192659 .gpr, .immut_gpr, .to_gpr => try temp.toRegClass(false, .general_purpose, cg),
188351192660 .mut_gpr, .to_mut_gpr => try temp.toRegClass(true, .general_purpose, cg),
188352192661 .to_gphi => try temp.toRegClass(false, .gphi, cg),
......@@ -188381,8 +192690,10 @@ const Select = struct {
188381192690 reg_pair: [2]Register,
188382192691 param_gpr: CallConvRegSpec,
188383192692 param_gpr_pair: CallConvRegSpec,
192693 param_sse: CallConvRegSpec,
188384192694 ret_gpr: CallConvRegSpec,
188385192695 ret_gpr_pair: CallConvRegSpec,
192696 ret_sse: CallConvRegSpec,
188386192697 rc: Register.Class,
188387192698 rc_pair: Register.Class,
188388192699 mut_rc: struct { ref: Select.Operand.Ref, rc: Register.Class },
......@@ -188422,6 +192733,7 @@ const Select = struct {
188422192733
188423192734 const CallConvRegSpec = struct {
188424192735 cc: Case.CallConv,
192736 after: u2,
188425192737 at: u2,
188426192738
188427192739 fn tag(spec: CallConvRegSpec, cg: *const CodeGen) std.builtin.CallingConvention.Tag {
......@@ -188431,6 +192743,14 @@ const Select = struct {
188431192743 .zigcc => .auto,
188432192744 };
188433192745 }
192746
192747 fn index(spec: CallConvRegSpec, cg: *const CodeGen) u2 {
192748 return switch (spec.tag(cg)) {
192749 .auto, .x86_64_sysv => spec.after,
192750 .x86_64_win => spec.at,
192751 else => unreachable,
192752 };
192753 }
188434192754 };
188435192755
188436192756 fn lock(kind: Kind, cg: *CodeGen) ![2]?RegisterLock {
......@@ -188439,10 +192759,12 @@ const Select = struct {
188439192759 else => return reg_locks,
188440192760 .reg => |reg| .{ reg, .none },
188441192761 .reg_pair => |regs| regs,
188442 .param_gpr => |param_spec| abi.getCAbiIntParamRegs(param_spec.tag(cg))[param_spec.at..][0..1].* ++ .{.none},
188443 .param_gpr_pair => |param_spec| abi.getCAbiIntParamRegs(param_spec.tag(cg))[param_spec.at..][0..2].*,
188444 .ret_gpr => |ret_spec| abi.getCAbiIntReturnRegs(ret_spec.tag(cg))[ret_spec.at..][0..1].* ++ .{.none},
188445 .ret_gpr_pair => |ret_spec| abi.getCAbiIntReturnRegs(ret_spec.tag(cg))[ret_spec.at..][0..2].*,
192762 .param_gpr => |param_spec| abi.getCAbiIntParamRegs(param_spec.tag(cg))[param_spec.index(cg)..][0..1].* ++ .{.none},
192763 .param_gpr_pair => |param_spec| abi.getCAbiIntParamRegs(param_spec.tag(cg))[param_spec.index(cg)..][0..2].*,
192764 .param_sse => |param_spec| abi.getCAbiSseParamRegs(param_spec.tag(cg), cg.target)[param_spec.index(cg)..][0..1].* ++ .{.none},
192765 .ret_gpr => |ret_spec| abi.getCAbiIntReturnRegs(ret_spec.tag(cg))[ret_spec.index(cg)..][0..1].* ++ .{.none},
192766 .ret_gpr_pair => |ret_spec| abi.getCAbiIntReturnRegs(ret_spec.tag(cg))[ret_spec.index(cg)..][0..2].*,
192767 .ret_sse => |ret_spec| abi.getCAbiSseReturnRegs(ret_spec.tag(cg))[ret_spec.index(cg)..][0..1].* ++ .{.none},
188446192768 };
188447192769 for (regs, &reg_locks) |reg, *reg_lock| {
188448192770 if (reg == .none) continue;
......@@ -188476,16 +192798,22 @@ const Select = struct {
188476192798 .reg => |reg| .{ try cg.tempInit(spec.type, .{ .register = reg }), true },
188477192799 .reg_pair => |regs| .{ try cg.tempInit(spec.type, .{ .register_pair = regs }), true },
188478192800 .param_gpr => |param_spec| .{ try cg.tempInit(spec.type, .{
188479 .register = abi.getCAbiIntParamRegs(param_spec.tag(cg))[param_spec.at],
192801 .register = abi.getCAbiIntParamRegs(param_spec.tag(cg))[param_spec.index(cg)],
188480192802 }), true },
188481192803 .param_gpr_pair => |param_spec| .{ try cg.tempInit(spec.type, .{
188482 .register_pair = abi.getCAbiIntParamRegs(param_spec.tag(cg))[param_spec.at..][0..2].*,
192804 .register_pair = abi.getCAbiIntParamRegs(param_spec.tag(cg))[param_spec.index(cg)..][0..2].*,
192805 }), true },
192806 .param_sse => |param_spec| .{ try cg.tempInit(spec.type, .{
192807 .register = abi.getCAbiSseParamRegs(param_spec.tag(cg), cg.target)[param_spec.index(cg)],
188483192808 }), true },
188484192809 .ret_gpr => |ret_spec| .{ try cg.tempInit(spec.type, .{
188485 .register = abi.getCAbiIntReturnRegs(ret_spec.tag(cg))[ret_spec.at],
192810 .register = abi.getCAbiIntReturnRegs(ret_spec.tag(cg))[ret_spec.index(cg)],
188486192811 }), true },
188487192812 .ret_gpr_pair => |ret_spec| .{ try cg.tempInit(spec.type, .{
188488 .register_pair = abi.getCAbiIntReturnRegs(ret_spec.tag(cg))[ret_spec.at..][0..2].*,
192813 .register_pair = abi.getCAbiIntReturnRegs(ret_spec.tag(cg))[ret_spec.index(cg)..][0..2].*,
192814 }), true },
192815 .ret_sse => |ret_spec| .{ try cg.tempInit(spec.type, .{
192816 .register = abi.getCAbiSseReturnRegs(ret_spec.tag(cg))[ret_spec.index(cg)],
188489192817 }), true },
188490192818 .rc => |rc| .{ try cg.tempAllocReg(spec.type, regSetForRegClass(rc)), true },
188491192819 .rc_pair => |rc| .{ try cg.tempAllocRegPair(spec.type, regSetForRegClass(rc)), true },
......@@ -188842,7 +193170,17 @@ const Select = struct {
188842193170 .storage = .{ .elems = elems },
188843193171 } }))), true };
188844193172 },
188845 .frame => |frame_index| .{ try cg.tempInit(spec.type, .{ .load_frame = .{ .index = frame_index } }), true },
193173 .frame => |frame_index| .{ try cg.tempInit(spec.type, .{ .load_frame = .{
193174 .index = frame_index,
193175 .off = switch (frame_index) {
193176 .call_frame => switch (cg.target.cCallingConvention().?) {
193177 .x86_64_sysv => 0,
193178 .x86_64_win => win64_shadow_space,
193179 else => unreachable,
193180 },
193181 else => 0,
193182 },
193183 } }), true },
188846193184 .lazy_sym => |lazy_symbol_spec| {
188847193185 const ip = &pt.zcu.intern_pool;
188848193186 const ty = if (lazy_symbol_spec.ref == .none) spec.type else lazy_symbol_spec.ref.typeOf(s);
......@@ -188997,6 +193335,7 @@ const Select = struct {
188997193335 const add_src0_elem_size_mul_src1: Adjust = .{ .sign = .pos, .lhs = .src0_elem_size_mul_src1, .op = .mul, .rhs = .@"1" };
188998193336 const sub_src0_elem_size_mul_src1: Adjust = .{ .sign = .neg, .lhs = .src0_elem_size_mul_src1, .op = .mul, .rhs = .@"1" };
188999193337 const add_dst0_elem_size: Adjust = .{ .sign = .pos, .lhs = .dst0_elem_size, .op = .mul, .rhs = .@"1" };
193338 const sub_dst0_elem_size: Adjust = .{ .sign = .neg, .lhs = .dst0_elem_size, .op = .mul, .rhs = .@"1" };
189000193339 const add_src1_div_8_down_4: Adjust = .{ .sign = .pos, .lhs = .src1, .op = .div_8_down, .rhs = .@"4" };
189001193340 const add_src1_rem_32: Adjust = .{ .sign = .pos, .lhs = .src1, .op = .rem_8_mul, .rhs = .@"4" };
189002193341 const add_src1_rem_64: Adjust = .{ .sign = .pos, .lhs = .src1, .op = .rem_8_mul, .rhs = .@"8" };
......@@ -189287,7 +193626,11 @@ const Select = struct {
189287193626 const tmp0t: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp0t } };
189288193627 const tmp0x: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp0x } };
189289193628 const tmp0y: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp0y } };
193629 const tmp0w0: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp0w }, .imm = 1 };
193630 const tmp0d0: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp0d }, .imm = 1 };
189290193631 const tmp0q0: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp0q }, .imm = 1 };
193632 const tmp0w1: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp0w }, .imm = 2 };
193633 const tmp0d1: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp0d }, .imm = 2 };
189291193634 const tmp0q1: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp0q }, .imm = 2 };
189292193635
189293193636 const tmp1l: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp1l } };
......@@ -189301,7 +193644,11 @@ const Select = struct {
189301193644 const tmp1t: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp1t } };
189302193645 const tmp1x: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp1x } };
189303193646 const tmp1y: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp1y } };
193647 const tmp1w0: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp1w }, .imm = 1 };
193648 const tmp1d0: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp1d }, .imm = 1 };
189304193649 const tmp1q0: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp1q }, .imm = 1 };
193650 const tmp1w1: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp1w }, .imm = 2 };
193651 const tmp1d1: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp1d }, .imm = 2 };
189305193652 const tmp1q1: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp1q }, .imm = 2 };
189306193653
189307193654 const tmp2l: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp2l } };
......@@ -189315,7 +193662,11 @@ const Select = struct {
189315193662 const tmp2t: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp2t } };
189316193663 const tmp2x: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp2x } };
189317193664 const tmp2y: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp2y } };
193665 const tmp2w0: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp2w }, .imm = 1 };
193666 const tmp2d0: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp2d }, .imm = 1 };
189318193667 const tmp2q0: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp2q }, .imm = 1 };
193668 const tmp2w1: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp2w }, .imm = 2 };
193669 const tmp2d1: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp2d }, .imm = 2 };
189319193670 const tmp2q1: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp2q }, .imm = 2 };
189320193671
189321193672 const tmp3l: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp3l } };
......@@ -189329,7 +193680,11 @@ const Select = struct {
189329193680 const tmp3t: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp3t } };
189330193681 const tmp3x: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp3x } };
189331193682 const tmp3y: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp3y } };
193683 const tmp3w0: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp3w }, .imm = 1 };
193684 const tmp3d0: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp3d }, .imm = 1 };
189332193685 const tmp3q0: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp3q }, .imm = 1 };
193686 const tmp3w1: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp3w }, .imm = 2 };
193687 const tmp3d1: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp3d }, .imm = 2 };
189333193688 const tmp3q1: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp3q }, .imm = 2 };
189334193689
189335193690 const tmp4l: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp4l } };
......@@ -189343,7 +193698,11 @@ const Select = struct {
189343193698 const tmp4t: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp4t } };
189344193699 const tmp4x: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp4x } };
189345193700 const tmp4y: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp4y } };
193701 const tmp4w0: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp4w }, .imm = 1 };
193702 const tmp4d0: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp4d }, .imm = 1 };
189346193703 const tmp4q0: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp4q }, .imm = 1 };
193704 const tmp4w1: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp4w }, .imm = 2 };
193705 const tmp4d1: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp4d }, .imm = 2 };
189347193706 const tmp4q1: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp4q }, .imm = 2 };
189348193707
189349193708 const tmp5l: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp5l } };
......@@ -189357,7 +193716,11 @@ const Select = struct {
189357193716 const tmp5t: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp5t } };
189358193717 const tmp5x: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp5x } };
189359193718 const tmp5y: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp5y } };
193719 const tmp5w0: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp5w }, .imm = 1 };
193720 const tmp5d0: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp5d }, .imm = 1 };
189360193721 const tmp5q0: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp5q }, .imm = 1 };
193722 const tmp5w1: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp5w }, .imm = 2 };
193723 const tmp5d1: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp5d }, .imm = 2 };
189361193724 const tmp5q1: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp5q }, .imm = 2 };
189362193725
189363193726 const tmp6l: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp6l } };
......@@ -189371,7 +193734,11 @@ const Select = struct {
189371193734 const tmp6t: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp6t } };
189372193735 const tmp6x: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp6x } };
189373193736 const tmp6y: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp6y } };
193737 const tmp6w0: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp6w }, .imm = 1 };
193738 const tmp6d0: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp6d }, .imm = 1 };
189374193739 const tmp6q0: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp6q }, .imm = 1 };
193740 const tmp6w1: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp6w }, .imm = 2 };
193741 const tmp6d1: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp6d }, .imm = 2 };
189375193742 const tmp6q1: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp6q }, .imm = 2 };
189376193743
189377193744 const tmp7l: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp7l } };
......@@ -189385,7 +193752,11 @@ const Select = struct {
189385193752 const tmp7t: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp7t } };
189386193753 const tmp7x: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp7x } };
189387193754 const tmp7y: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp7y } };
193755 const tmp7w0: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp7w }, .imm = 1 };
193756 const tmp7d0: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp7d }, .imm = 1 };
189388193757 const tmp7q0: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp7q }, .imm = 1 };
193758 const tmp7w1: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp7w }, .imm = 2 };
193759 const tmp7d1: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp7d }, .imm = 2 };
189389193760 const tmp7q1: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp7q }, .imm = 2 };
189390193761
189391193762 const tmp8l: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp8l } };
......@@ -189399,7 +193770,11 @@ const Select = struct {
189399193770 const tmp8t: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp8t } };
189400193771 const tmp8x: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp8x } };
189401193772 const tmp8y: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp8y } };
193773 const tmp8w0: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp8w }, .imm = 1 };
193774 const tmp8d0: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp8d }, .imm = 1 };
189402193775 const tmp8q0: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp8q }, .imm = 1 };
193776 const tmp8w1: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp8w }, .imm = 2 };
193777 const tmp8d1: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp8d }, .imm = 2 };
189403193778 const tmp8q1: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp8q }, .imm = 2 };
189404193779
189405193780 const tmp9l: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp9l } };
......@@ -189413,7 +193788,11 @@ const Select = struct {
189413193788 const tmp9t: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp9t } };
189414193789 const tmp9x: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp9x } };
189415193790 const tmp9y: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp9y } };
193791 const tmp9w0: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp9w }, .imm = 1 };
193792 const tmp9d0: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp9d }, .imm = 1 };
189416193793 const tmp9q0: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp9q }, .imm = 1 };
193794 const tmp9w1: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp9w }, .imm = 2 };
193795 const tmp9d1: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp9d }, .imm = 2 };
189417193796 const tmp9q1: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp9q }, .imm = 2 };
189418193797
189419193798 const tmp10l: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp10l } };
......@@ -189427,7 +193806,11 @@ const Select = struct {
189427193806 const tmp10t: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp10t } };
189428193807 const tmp10x: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp10x } };
189429193808 const tmp10y: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp10y } };
193809 const tmp10w0: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp10w }, .imm = 1 };
193810 const tmp10d0: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp10d }, .imm = 1 };
189430193811 const tmp10q0: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp10q }, .imm = 1 };
193812 const tmp10w1: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp10w }, .imm = 2 };
193813 const tmp10d1: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp10d }, .imm = 2 };
189431193814 const tmp10q1: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp10q }, .imm = 2 };
189432193815
189433193816 const dst0l: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .dst0l } };
......@@ -189441,7 +193824,11 @@ const Select = struct {
189441193824 const dst0t: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .dst0t } };
189442193825 const dst0x: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .dst0x } };
189443193826 const dst0y: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .dst0y } };
193827 const dst0w0: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .dst0w }, .imm = 1 };
193828 const dst0d0: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .dst0d }, .imm = 1 };
189444193829 const dst0q0: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .dst0q }, .imm = 1 };
193830 const dst0w1: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .dst0w }, .imm = 2 };
193831 const dst0d1: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .dst0d }, .imm = 2 };
189445193832 const dst0q1: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .dst0q }, .imm = 2 };
189446193833
189447193834 const dst1l: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .dst1l } };
......@@ -189455,7 +193842,11 @@ const Select = struct {
189455193842 const dst1t: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .dst1t } };
189456193843 const dst1x: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .dst1x } };
189457193844 const dst1y: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .dst1y } };
193845 const dst1w0: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .dst1w }, .imm = 1 };
193846 const dst1d0: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .dst1d }, .imm = 1 };
189458193847 const dst1q0: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .dst1q }, .imm = 1 };
193848 const dst1w1: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .dst1w }, .imm = 2 };
193849 const dst1d1: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .dst1d }, .imm = 2 };
189459193850 const dst1q1: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .dst1q }, .imm = 2 };
189460193851
189461193852 const src0l: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .src0l } };
......@@ -189469,7 +193860,11 @@ const Select = struct {
189469193860 const src0t: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .src0t } };
189470193861 const src0x: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .src0x } };
189471193862 const src0y: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .src0y } };
193863 const src0w0: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .src0w }, .imm = 1 };
193864 const src0d0: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .src0d }, .imm = 1 };
189472193865 const src0q0: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .src0q }, .imm = 1 };
193866 const src0w1: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .src0w }, .imm = 2 };
193867 const src0d1: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .src0d }, .imm = 2 };
189473193868 const src0q1: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .src0q }, .imm = 2 };
189474193869
189475193870 const src1l: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .src1l } };
......@@ -189483,7 +193878,11 @@ const Select = struct {
189483193878 const src1t: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .src1t } };
189484193879 const src1x: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .src1x } };
189485193880 const src1y: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .src1y } };
193881 const src1w0: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .src1w }, .imm = 1 };
193882 const src1d0: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .src1d }, .imm = 1 };
189486193883 const src1q0: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .src1q }, .imm = 1 };
193884 const src1w1: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .src1w }, .imm = 2 };
193885 const src1d1: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .src1d }, .imm = 2 };
189487193886 const src1q1: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .src1q }, .imm = 2 };
189488193887
189489193888 const src2l: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .src2l } };
......@@ -189497,7 +193896,11 @@ const Select = struct {
189497193896 const src2t: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .src2t } };
189498193897 const src2x: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .src2x } };
189499193898 const src2y: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .src2y } };
193899 const src2w0: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .src2w }, .imm = 1 };
193900 const src2d0: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .src2d }, .imm = 1 };
189500193901 const src2q0: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .src2q }, .imm = 1 };
193902 const src2w1: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .src2w }, .imm = 2 };
193903 const src2d1: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .src2d }, .imm = 2 };
189501193904 const src2q1: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .src2q }, .imm = 2 };
189502193905
189503193906 fn si(imm: i32) Select.Operand {
......@@ -189956,6 +194359,22 @@ fn select(
189956194359) Select.Error!void {
189957194360 @setEvalBranchQuota(33_500);
189958194361 cases: for (cases) |case| {
194362 switch (case.required_abi) {
194363 .any => {},
194364 .gnu => if (switch (cg.target.abi) {
194365 .none, .msvc, .itanium => cg.target.os.tag == .windows,
194366 else => false,
194367 }) continue :cases,
194368 .msvc => if (switch (cg.target.abi) {
194369 .none, .msvc, .itanium => cg.target.os.tag != .windows,
194370 else => true,
194371 }) continue :cases,
194372 }
194373 switch (case.required_cc_abi) {
194374 .any => {},
194375 .sysv64 => if (cg.target.cCallingConvention().? != .x86_64_sysv) continue :cases,
194376 .win64 => if (cg.target.cCallingConvention().? != .x86_64_win) continue :cases,
194377 }
189959194378 for (case.required_features) |required_feature| if (required_feature) |feature| if (!cg.hasFeature(feature)) continue :cases;
189960194379 for (case.src_constraints[0..src_temps.len], src_temps) |src_constraint, src_temp| if (!src_constraint.accepts(src_temp.typeOf(cg), cg)) continue :cases;
189961194380 for (case.dst_constraints[0..dst_temps.len], dst_tys) |dst_constraint, dst_ty| if (!dst_constraint.accepts(dst_ty, cg)) continue :cases;
......@@ -189972,7 +194391,11 @@ fn select(
189972194391 const frame_allocs_slice = cg.frame_allocs.slice();
189973194392 const stack_frame_size =
189974194393 &frame_allocs_slice.items(.abi_size)[@intFromEnum(FrameIndex.call_frame)];
189975 stack_frame_size.* = @max(stack_frame_size.*, case.call_frame.size);
194394 stack_frame_size.* = @max(stack_frame_size.*, switch (cg.target.cCallingConvention().?) {
194395 .x86_64_sysv => case.call_frame.size,
194396 .x86_64_win => win64_shadow_space + case.call_frame.size,
194397 else => unreachable,
194398 });
189976194399 const stack_frame_align =
189977194400 &frame_allocs_slice.items(.abi_align)[@intFromEnum(FrameIndex.call_frame)];
189978194401 stack_frame_align.* = stack_frame_align.max(case.call_frame.alignment);
src/arch/x86_64/Emit.zig+7-13
......@@ -105,9 +105,9 @@ pub fn emitMir(emit: *Emit) Error!void {
105105 emit.pt,
106106 emit.lower.src_loc,
107107 nav,
108 emit.lower.target.*,
108 emit.lower.target,
109109 )) {
110 .mcv => |mcv| mcv.lea_symbol,
110 .sym_index => |sym_index| sym_index,
111111 .fail => |em| {
112112 assert(emit.lower.err_msg == null);
113113 emit.lower.err_msg = em;
......@@ -151,7 +151,7 @@ pub fn emitMir(emit: *Emit) Error!void {
151151 Type.fromInterned(uav.orig_ty).ptrAlignment(emit.pt.zcu),
152152 emit.lower.src_loc,
153153 )) {
154 .mcv => |mcv| mcv.load_symbol,
154 .sym_index => |sym_index| sym_index,
155155 .fail => |em| {
156156 assert(emit.lower.err_msg == null);
157157 emit.lower.err_msg = em;
......@@ -186,7 +186,7 @@ pub fn emitMir(emit: *Emit) Error!void {
186186 else if (emit.bin_file.cast(.macho)) |macho_file|
187187 try macho_file.getGlobalSymbol(extern_func.toSlice(&emit.lower.mir).?, null)
188188 else if (emit.bin_file.cast(.coff)) |coff_file|
189 link.File.Coff.global_symbol_bit | try coff_file.getGlobalSymbol(extern_func.toSlice(&emit.lower.mir).?, null)
189 try coff_file.getGlobalSymbol(extern_func.toSlice(&emit.lower.mir).?, "compiler_rt")
190190 else
191191 return emit.fail("external symbols unimplemented for {s}", .{@tagName(emit.bin_file.tag)}),
192192 .is_extern = true,
......@@ -542,16 +542,13 @@ pub fn emitMir(emit: *Emit) Error!void {
542542 emit.pt,
543543 emit.lower.src_loc,
544544 nav,
545 emit.lower.target.*,
545 emit.lower.target,
546546 ) catch |err| switch (err) {
547547 error.CodegenFail,
548548 => return emit.fail("unable to codegen: {s}", .{@errorName(err)}),
549549 else => |e| return e,
550550 }) {
551 .mcv => |mcv| switch (mcv) {
552 else => unreachable,
553 .load_direct, .load_symbol => |sym_index| sym_index,
554 },
551 .sym_index => |sym_index| sym_index,
555552 .fail => |em| {
556553 assert(emit.lower.err_msg == null);
557554 emit.lower.err_msg = em;
......@@ -564,10 +561,7 @@ pub fn emitMir(emit: *Emit) Error!void {
564561 Type.fromInterned(uav.orig_ty).ptrAlignment(emit.pt.zcu),
565562 emit.lower.src_loc,
566563 )) {
567 .mcv => |mcv| switch (mcv) {
568 else => unreachable,
569 .load_direct, .load_symbol => |sym_index| sym_index,
570 },
564 .sym_index => |sym_index| sym_index,
571565 .fail => |em| {
572566 assert(emit.lower.err_msg == null);
573567 emit.lower.err_msg = em;
src/arch/x86_64/Encoding.zig+2-2
......@@ -598,7 +598,7 @@ pub const Op = enum {
598598 .rax => .rax,
599599 .cl => .cl,
600600 .dx => .dx,
601 else => switch (reg.bitSize()) {
601 else => switch (reg.size().bitSize(target)) {
602602 8 => .r8,
603603 16 => .r16,
604604 32 => .r32,
......@@ -615,7 +615,7 @@ pub const Op = enum {
615615 .mmx => .mm,
616616 .sse => switch (reg) {
617617 .xmm0 => .xmm0,
618 else => switch (reg.bitSize()) {
618 else => switch (reg.size().bitSize(target)) {
619619 128 => .xmm,
620620 256 => .ymm,
621621 else => unreachable,
src/arch/x86_64/Mir.zig+3
......@@ -12,6 +12,8 @@ extra: []const u32,
1212string_bytes: []const u8,
1313locals: []const Local,
1414table: []const Inst.Index,
15/// Optional data which, when present, can be used to accelerate encoding speed.
16memoized_encodings: []const u0 = &.{},
1517frame_locs: std.MultiArrayList(FrameLoc).Slice,
1618
1719pub const Inst = struct {
......@@ -1963,6 +1965,7 @@ pub fn deinit(mir: *Mir, gpa: std.mem.Allocator) void {
19631965 gpa.free(mir.string_bytes);
19641966 gpa.free(mir.locals);
19651967 gpa.free(mir.table);
1968 gpa.free(mir.memoized_encodings);
19661969 mir.frame_locs.deinit(gpa);
19671970 mir.* = undefined;
19681971}
src/arch/x86_64/abi.zig+149-149
......@@ -1,20 +1,86 @@
11pub const Class = enum {
2 /// INTEGER: This class consists of integral types that fit into one of the general
3 /// purpose registers.
24 integer,
5 /// SSE: The class consists of types that fit into a vector register.
36 sse,
7 /// SSEUP: The class consists of types that fit into a vector register and can be passed
8 /// and returned in the upper bytes of it.
49 sseup,
10 /// X87, X87UP: These classes consist of types that will be returned via the
11 /// x87 FPU.
512 x87,
13 /// The 15-bit exponent, 1-bit sign, and 6 bytes of padding of an `f80`.
614 x87up,
7 complex_x87,
8 memory,
15 /// NO_CLASS: This class is used as initializer in the algorithms. It will be used for
16 /// padding and empty structures and unions.
917 none,
18 /// MEMORY: This class consists of types that will be passed and returned in mem-
19 /// ory via the stack.
20 memory,
21 /// Win64 passes 128-bit integers as `Class.memory` but returns them as `Class.sse`.
1022 win_i128,
23 /// A `Class.sse` containing one `f32`.
1124 float,
25 /// A `Class.sse` containing two `f32`s.
1226 float_combine,
27 /// Clang passes each vector element in a separate `Class.integer`, but returns as `Class.memory`.
1328 integer_per_element,
1429
15 fn isX87(class: Class) bool {
30 pub const one_integer: [8]Class = .{
31 .integer, .none, .none, .none,
32 .none, .none, .none, .none,
33 };
34 pub const two_integers: [8]Class = .{
35 .integer, .integer, .none, .none,
36 .none, .none, .none, .none,
37 };
38 pub const three_integers: [8]Class = .{
39 .integer, .integer, .integer, .none,
40 .none, .none, .none, .none,
41 };
42 pub const four_integers: [8]Class = .{
43 .integer, .integer, .integer, .integer,
44 .none, .none, .none, .none,
45 };
46 pub const len_integers: [8]Class = .{
47 .integer_per_element, .none, .none, .none,
48 .none, .none, .none, .none,
49 };
50
51 pub const @"f16" = @"f64";
52 pub const @"f32": [8]Class = .{
53 .float, .none, .none, .none,
54 .none, .none, .none, .none,
55 };
56 pub const @"f64": [8]Class = .{
57 .sse, .none, .none, .none,
58 .none, .none, .none, .none,
59 };
60 pub const @"f80": [8]Class = .{
61 .x87, .x87up, .none, .none,
62 .none, .none, .none, .none,
63 };
64 pub const @"f128": [8]Class = .{
65 .sse, .sseup, .none, .none,
66 .none, .none, .none, .none,
67 };
68
69 /// COMPLEX_X87: This class consists of types that will be returned via the x87
70 /// FPU.
71 pub const complex_x87: [8]Class = .{
72 .x87, .x87up, .x87, .x87up,
73 .none, .none, .none, .none,
74 };
75
76 pub const stack: [8]Class = .{
77 .memory, .none, .none, .none,
78 .none, .none, .none, .none,
79 };
80
81 pub fn isX87(class: Class) bool {
1682 return switch (class) {
17 .x87, .x87up, .complex_x87 => true,
83 .x87, .x87up => true,
1884 else => false,
1985 };
2086 }
......@@ -44,7 +110,7 @@ pub const Class = enum {
44110 }
45111};
46112
47pub fn classifyWindows(ty: Type, zcu: *Zcu) Class {
113pub fn classifyWindows(ty: Type, zcu: *Zcu, target: *const std.Target) Class {
48114 // https://docs.microsoft.com/en-gb/cpp/build/x64-calling-convention?view=vs-2017
49115 // "There's a strict one-to-one correspondence between a function call's arguments
50116 // and the registers used for those arguments. Any argument that doesn't fit in 8
......@@ -53,7 +119,7 @@ pub fn classifyWindows(ty: Type, zcu: *Zcu) Class {
53119 // "All floating point operations are done using the 16 XMM registers."
54120 // "Structs and unions of size 8, 16, 32, or 64 bits, and __m64 types, are passed
55121 // as if they were integers of the same size."
56 switch (ty.zigTypeTag(zcu)) {
122 return switch (ty.zigTypeTag(zcu)) {
57123 .pointer,
58124 .int,
59125 .bool,
......@@ -70,19 +136,23 @@ pub fn classifyWindows(ty: Type, zcu: *Zcu) Class {
70136 .frame,
71137 => switch (ty.abiSize(zcu)) {
72138 0 => unreachable,
73 1, 2, 4, 8 => return .integer,
139 1, 2, 4, 8 => .integer,
74140 else => switch (ty.zigTypeTag(zcu)) {
75 .int => return .win_i128,
76 .@"struct", .@"union" => if (ty.containerLayout(zcu) == .@"packed") {
77 return .win_i128;
78 } else {
79 return .memory;
80 },
81 else => return .memory,
141 .int => .win_i128,
142 .@"struct", .@"union" => if (ty.containerLayout(zcu) == .@"packed")
143 .win_i128
144 else
145 .memory,
146 else => .memory,
82147 },
83148 },
84149
85 .float, .vector => return .sse,
150 .float => switch (ty.floatBits(target)) {
151 16, 32, 64, 128 => .sse,
152 80 => .memory,
153 else => unreachable,
154 },
155 .vector => .sse,
86156
87157 .type,
88158 .comptime_float,
......@@ -93,171 +163,109 @@ pub fn classifyWindows(ty: Type, zcu: *Zcu) Class {
93163 .@"opaque",
94164 .enum_literal,
95165 => unreachable,
96 }
166 };
97167}
98168
99pub const Context = enum { ret, arg, field, other };
169pub const Context = enum { ret, arg, other };
100170
101171/// There are a maximum of 8 possible return slots. Returned values are in
102172/// the beginning of the array; unused slots are filled with .none.
103173pub fn classifySystemV(ty: Type, zcu: *Zcu, target: *const std.Target, ctx: Context) [8]Class {
104 const memory_class = [_]Class{
105 .memory, .none, .none, .none,
106 .none, .none, .none, .none,
107 };
108 var result = [1]Class{.none} ** 8;
109174 switch (ty.zigTypeTag(zcu)) {
110175 .pointer => switch (ty.ptrSize(zcu)) {
111 .slice => {
112 result[0] = .integer;
113 result[1] = .integer;
114 return result;
115 },
116 else => {
117 result[0] = .integer;
118 return result;
119 },
176 .slice => return Class.two_integers,
177 else => return Class.one_integer,
120178 },
121179 .int, .@"enum", .error_set => {
122180 const bits = ty.intInfo(zcu).bits;
123 if (bits <= 64) {
124 result[0] = .integer;
125 return result;
126 }
127 if (bits <= 128) {
128 result[0] = .integer;
129 result[1] = .integer;
130 return result;
131 }
132 if (bits <= 192) {
133 result[0] = .integer;
134 result[1] = .integer;
135 result[2] = .integer;
136 return result;
137 }
138 if (bits <= 256) {
139 result[0] = .integer;
140 result[1] = .integer;
141 result[2] = .integer;
142 result[3] = .integer;
143 return result;
144 }
145 return memory_class;
181 if (bits <= 64 * 1) return Class.one_integer;
182 if (bits <= 64 * 2) return Class.two_integers;
183 if (bits <= 64 * 3) return Class.three_integers;
184 if (bits <= 64 * 4) return Class.four_integers;
185 return Class.stack;
146186 },
147 .bool, .void, .noreturn => {
148 result[0] = .integer;
149 return result;
150 },
151 .float => switch (ty.floatBits(target.*)) {
187 .bool, .void, .noreturn => return Class.one_integer,
188 .float => switch (ty.floatBits(target)) {
152189 16 => {
153 if (ctx == .field) {
154 result[0] = .memory;
155 } else {
156 // TODO clang doesn't allow __fp16 as .ret or .arg
157 result[0] = .sse;
158 }
159 return result;
160 },
161 32 => {
162 result[0] = .float;
163 return result;
164 },
165 64 => {
166 result[0] = .sse;
167 return result;
168 },
169 128 => {
170 // "Arguments of types __float128, _Decimal128 and __m128 are
171 // split into two halves. The least significant ones belong
172 // to class SSE, the most significant one to class SSEUP."
173 result[0] = .sse;
174 result[1] = .sseup;
175 return result;
176 },
177 80 => {
178 // "The 64-bit mantissa of arguments of type long double
179 // belongs to classX87, the 16-bit exponent plus 6 bytes
180 // of padding belongs to class X87UP."
181 result[0] = .x87;
182 result[1] = .x87up;
183 return result;
190 if (ctx == .other) return Class.stack;
191 // TODO clang doesn't allow __fp16 as .ret or .arg
192 return Class.f16;
184193 },
194 32 => return Class.f32,
195 64 => return Class.f64,
196 // "Arguments of types __float128, _Decimal128 and __m128 are
197 // split into two halves. The least significant ones belong
198 // to class SSE, the most significant one to class SSEUP."
199 128 => return Class.f128,
200 // "The 64-bit mantissa of arguments of type long double
201 // belongs to class X87, the 16-bit exponent plus 6 bytes
202 // of padding belongs to class X87UP."
203 80 => return Class.f80,
185204 else => unreachable,
186205 },
187206 .vector => {
188207 const elem_ty = ty.childType(zcu);
189208 const bits = elem_ty.bitSize(zcu) * ty.arrayLen(zcu);
190209 if (elem_ty.toIntern() == .bool_type) {
191 if (bits <= 32) return .{
192 .integer, .none, .none, .none,
193 .none, .none, .none, .none,
194 };
195 if (bits <= 64) return .{
196 .sse, .none, .none, .none,
197 .none, .none, .none, .none,
198 };
199 if (ctx == .arg) {
200 if (bits <= 128) return .{
201 .integer_per_element, .none, .none, .none,
202 .none, .none, .none, .none,
203 };
204 if (bits <= 256 and target.cpu.has(.x86, .avx)) return .{
205 .integer_per_element, .none, .none, .none,
206 .none, .none, .none, .none,
207 };
208 if (bits <= 512 and target.cpu.has(.x86, .avx512f)) return .{
209 .integer_per_element, .none, .none, .none,
210 .none, .none, .none, .none,
211 };
212 }
213 return memory_class;
210 if (bits <= 32) return Class.one_integer;
211 if (bits <= 64) return Class.f64;
212 if (ctx == .other) return Class.stack;
213 if (bits <= 128) return Class.len_integers;
214 if (bits <= 256 and target.cpu.has(.x86, .avx)) return Class.len_integers;
215 if (bits <= 512 and target.cpu.has(.x86, .avx512f)) return Class.len_integers;
216 return Class.stack;
217 }
218 if (elem_ty.isRuntimeFloat() and elem_ty.floatBits(target) == 80) {
219 if (bits <= 80 * 1) return Class.f80;
220 if (bits <= 80 * 2) return Class.complex_x87;
221 return Class.stack;
214222 }
215 if (bits <= 64) return .{
223 if (bits <= 64 * 1) return .{
216224 .sse, .none, .none, .none,
217225 .none, .none, .none, .none,
218226 };
219 if (bits <= 128) return .{
227 if (bits <= 64 * 2) return .{
220228 .sse, .sseup, .none, .none,
221229 .none, .none, .none, .none,
222230 };
223 if (ctx == .arg and !target.cpu.has(.x86, .avx)) return memory_class;
224 if (bits <= 192) return .{
231 if (ctx == .arg and !target.cpu.has(.x86, .avx)) return Class.stack;
232 if (bits <= 64 * 3) return .{
225233 .sse, .sseup, .sseup, .none,
226234 .none, .none, .none, .none,
227235 };
228 if (bits <= 256) return .{
236 if (bits <= 64 * 4) return .{
229237 .sse, .sseup, .sseup, .sseup,
230238 .none, .none, .none, .none,
231239 };
232 if (ctx == .arg and !target.cpu.has(.x86, .avx512f)) return memory_class;
233 if (bits <= 320) return .{
240 if (ctx == .arg and !target.cpu.has(.x86, .avx512f)) return Class.stack;
241 if (bits <= 64 * 5) return .{
234242 .sse, .sseup, .sseup, .sseup,
235243 .sseup, .none, .none, .none,
236244 };
237 if (bits <= 384) return .{
245 if (bits <= 64 * 6) return .{
238246 .sse, .sseup, .sseup, .sseup,
239247 .sseup, .sseup, .none, .none,
240248 };
241 if (bits <= 448) return .{
249 if (bits <= 64 * 7) return .{
242250 .sse, .sseup, .sseup, .sseup,
243251 .sseup, .sseup, .sseup, .none,
244252 };
245 if (bits <= 512 or (ctx == .ret and bits <= @as(u64, if (target.cpu.has(.x86, .avx512f))
246 2048
253 if (bits <= 64 * 8 or (ctx == .ret and bits <= @as(u64, if (target.cpu.has(.x86, .avx512f))
254 64 * 32
247255 else if (target.cpu.has(.x86, .avx))
248 1024
256 64 * 16
249257 else
250 512))) return .{
258 64 * 8))) return .{
251259 .sse, .sseup, .sseup, .sseup,
252260 .sseup, .sseup, .sseup, .sseup,
253261 };
254 return memory_class;
262 return Class.stack;
255263 },
256264 .optional => {
257265 if (ty.optionalReprIsPayload(zcu)) {
258266 return classifySystemV(ty.optionalChild(zcu), zcu, target, ctx);
259267 }
260 return memory_class;
268 return Class.stack;
261269 },
262270 .@"struct", .@"union" => {
263271 // "If the size of an object is larger than eight eightbytes, or
......@@ -269,15 +277,14 @@ pub fn classifySystemV(ty: Type, zcu: *Zcu, target: *const std.Target, ctx: Cont
269277 .auto => unreachable,
270278 .@"extern" => {},
271279 .@"packed" => {
272 assert(ty_size <= 16);
273 result[0] = .integer;
274 if (ty_size > 8) result[1] = .integer;
275 return result;
280 if (ty_size <= 8) return Class.one_integer;
281 if (ty_size <= 16) return Class.two_integers;
282 unreachable; // frontend should not have allowed this type as extern
276283 },
277284 }
278 if (ty_size > 64)
279 return memory_class;
285 if (ty_size > 64) return Class.stack;
280286
287 var result: [8]Class = @splat(.none);
281288 _ = if (zcu.typeToStruct(ty)) |loaded_struct|
282289 classifySystemVStruct(&result, 0, loaded_struct, zcu, target)
283290 else if (zcu.typeToUnion(ty)) |loaded_union|
......@@ -290,15 +297,15 @@ pub fn classifySystemV(ty: Type, zcu: *Zcu, target: *const std.Target, ctx: Cont
290297 // "If one of the classes is MEMORY, the whole argument is passed in memory"
291298 // "If X87UP is not preceded by X87, the whole argument is passed in memory."
292299 for (result, 0..) |class, i| switch (class) {
293 .memory => return memory_class,
294 .x87up => if (i == 0 or result[i - 1] != .x87) return memory_class,
300 .memory => return Class.stack,
301 .x87up => if (i == 0 or result[i - 1] != .x87) return Class.stack,
295302 else => continue,
296303 };
297304 // "If the size of the aggregate exceeds two eightbytes and the first eight-
298305 // byte isn’t SSE or any other eightbyte isn’t SSEUP, the whole argument
299306 // is passed in memory."
300307 if (ty_size > 16 and (result[0] != .sse or
301 std.mem.indexOfNone(Class, result[1..], &.{ .sseup, .none }) != null)) return memory_class;
308 std.mem.indexOfNone(Class, result[1..], &.{ .sseup, .none }) != null)) return Class.stack;
302309
303310 // "If SSEUP is not preceded by SSE or SSEUP, it is converted to SSE."
304311 for (&result, 0..) |*item, i| {
......@@ -311,16 +318,9 @@ pub fn classifySystemV(ty: Type, zcu: *Zcu, target: *const std.Target, ctx: Cont
311318 },
312319 .array => {
313320 const ty_size = ty.abiSize(zcu);
314 if (ty_size <= 8) {
315 result[0] = .integer;
316 return result;
317 }
318 if (ty_size <= 16) {
319 result[0] = .integer;
320 result[1] = .integer;
321 return result;
322 }
323 return memory_class;
321 if (ty_size <= 8) return Class.one_integer;
322 if (ty_size <= 16) return Class.two_integers;
323 return Class.stack;
324324 },
325325 else => unreachable,
326326 }
......@@ -363,7 +363,7 @@ fn classifySystemVStruct(
363363 .@"packed" => {},
364364 }
365365 }
366 const field_classes = std.mem.sliceTo(&classifySystemV(field_ty, zcu, target, .field), .none);
366 const field_classes = std.mem.sliceTo(&classifySystemV(field_ty, zcu, target, .other), .none);
367367 for (result[@intCast(byte_offset / 8)..][0..field_classes.len], field_classes) |*result_class, field_class|
368368 result_class.* = result_class.combineSystemV(field_class);
369369 byte_offset += field_ty.abiSize(zcu);
......@@ -406,7 +406,7 @@ fn classifySystemVUnion(
406406 .@"packed" => {},
407407 }
408408 }
409 const field_classes = std.mem.sliceTo(&classifySystemV(field_ty, zcu, target, .field), .none);
409 const field_classes = std.mem.sliceTo(&classifySystemV(field_ty, zcu, target, .other), .none);
410410 for (result[@intCast(starting_byte_offset / 8)..][0..field_classes.len], field_classes) |*result_class, field_class|
411411 result_class.* = result_class.combineSystemV(field_class);
412412 }
src/arch/x86_64/bits.zig+16-16
......@@ -465,25 +465,25 @@ pub const Register = enum(u8) {
465465 return @intCast(@intFromEnum(reg) - base);
466466 }
467467
468 pub fn bitSize(reg: Register) u10 {
468 pub fn size(reg: Register) Memory.Size {
469469 return switch (@intFromEnum(reg)) {
470470 // zig fmt: off
471 @intFromEnum(Register.rax) ... @intFromEnum(Register.r15) => 64,
472 @intFromEnum(Register.eax) ... @intFromEnum(Register.r15d) => 32,
473 @intFromEnum(Register.ax) ... @intFromEnum(Register.r15w) => 16,
474 @intFromEnum(Register.al) ... @intFromEnum(Register.r15b) => 8,
475 @intFromEnum(Register.ah) ... @intFromEnum(Register.bh) => 8,
471 @intFromEnum(Register.rax) ... @intFromEnum(Register.r15) => .qword,
472 @intFromEnum(Register.eax) ... @intFromEnum(Register.r15d) => .dword,
473 @intFromEnum(Register.ax) ... @intFromEnum(Register.r15w) => .word,
474 @intFromEnum(Register.al) ... @intFromEnum(Register.r15b) => .byte,
475 @intFromEnum(Register.ah) ... @intFromEnum(Register.bh) => .byte,
476476
477 @intFromEnum(Register.zmm0) ... @intFromEnum(Register.zmm15) => 512,
478 @intFromEnum(Register.ymm0) ... @intFromEnum(Register.ymm15) => 256,
479 @intFromEnum(Register.xmm0) ... @intFromEnum(Register.xmm15) => 128,
480 @intFromEnum(Register.mm0) ... @intFromEnum(Register.mm7) => 64,
481 @intFromEnum(Register.st0) ... @intFromEnum(Register.st7) => 80,
477 @intFromEnum(Register.zmm0) ... @intFromEnum(Register.zmm15) => .zword,
478 @intFromEnum(Register.ymm0) ... @intFromEnum(Register.ymm15) => .yword,
479 @intFromEnum(Register.xmm0) ... @intFromEnum(Register.xmm15) => .xword,
480 @intFromEnum(Register.mm0) ... @intFromEnum(Register.mm7) => .qword,
481 @intFromEnum(Register.st0) ... @intFromEnum(Register.st7) => .tbyte,
482482
483 @intFromEnum(Register.es) ... @intFromEnum(Register.gs) => 16,
483 @intFromEnum(Register.es) ... @intFromEnum(Register.gs) => .word,
484484
485 @intFromEnum(Register.cr0) ... @intFromEnum(Register.cr15) => 64,
486 @intFromEnum(Register.dr0) ... @intFromEnum(Register.dr15) => 64,
485 @intFromEnum(Register.cr0) ... @intFromEnum(Register.cr15) => .gpr,
486 @intFromEnum(Register.dr0) ... @intFromEnum(Register.dr15) => .gpr,
487487
488488 else => unreachable,
489489 // zig fmt: on
......@@ -549,8 +549,8 @@ pub const Register = enum(u8) {
549549 };
550550 }
551551
552 pub fn toSize(reg: Register, size: Memory.Size, target: *const std.Target) Register {
553 return switch (size) {
552 pub fn toSize(reg: Register, new_size: Memory.Size, target: *const std.Target) Register {
553 return switch (new_size) {
554554 .none => unreachable,
555555 .ptr => reg.toBitSize(target.ptrBitWidth()),
556556 .gpr => switch (target.cpu.arch) {
src/codegen.zig+63-64
......@@ -65,7 +65,7 @@ fn importBackend(comptime backend: std.builtin.CompilerBackend) type {
6565pub fn legalizeFeatures(pt: Zcu.PerThread, nav_index: InternPool.Nav.Index) ?*const Air.Legalize.Features {
6666 const zcu = pt.zcu;
6767 const target = &zcu.navFileScope(nav_index).mod.?.resolved_target.result;
68 switch (target_util.zigBackend(target.*, zcu.comp.config.use_llvm)) {
68 switch (target_util.zigBackend(target, zcu.comp.config.use_llvm)) {
6969 else => unreachable,
7070 inline .stage2_llvm,
7171 .stage2_c,
......@@ -114,7 +114,7 @@ pub const AnyMir = union {
114114
115115 pub fn deinit(mir: *AnyMir, zcu: *const Zcu) void {
116116 const gpa = zcu.gpa;
117 const backend = target_util.zigBackend(zcu.root_mod.resolved_target.result, zcu.comp.config.use_llvm);
117 const backend = target_util.zigBackend(&zcu.root_mod.resolved_target.result, zcu.comp.config.use_llvm);
118118 switch (backend) {
119119 else => unreachable,
120120 inline .stage2_aarch64,
......@@ -145,7 +145,7 @@ pub fn generateFunction(
145145) CodeGenError!AnyMir {
146146 const zcu = pt.zcu;
147147 const func = zcu.funcInfo(func_index);
148 const target = zcu.navFileScope(func.owner_nav).mod.?.resolved_target.result;
148 const target = &zcu.navFileScope(func.owner_nav).mod.?.resolved_target.result;
149149 switch (target_util.zigBackend(target, false)) {
150150 else => unreachable,
151151 inline .stage2_aarch64,
......@@ -183,7 +183,7 @@ pub fn emitFunction(
183183) CodeGenError!void {
184184 const zcu = pt.zcu;
185185 const func = zcu.funcInfo(func_index);
186 const target = zcu.navFileScope(func.owner_nav).mod.?.resolved_target.result;
186 const target = &zcu.navFileScope(func.owner_nav).mod.?.resolved_target.result;
187187 switch (target_util.zigBackend(target, zcu.comp.config.use_llvm)) {
188188 else => unreachable,
189189 inline .stage2_aarch64,
......@@ -210,7 +210,7 @@ pub fn generateLazyFunction(
210210) CodeGenError!void {
211211 const zcu = pt.zcu;
212212 const target = if (Type.fromInterned(lazy_sym.ty).typeDeclInstAllowGeneratedTag(zcu)) |inst_index|
213 zcu.fileByIndex(inst_index.resolveFile(&zcu.intern_pool)).mod.?.resolved_target.result
213 &zcu.fileByIndex(inst_index.resolveFile(&zcu.intern_pool)).mod.?.resolved_target.result
214214 else
215215 zcu.getTarget();
216216 switch (target_util.zigBackend(target, zcu.comp.config.use_llvm)) {
......@@ -225,7 +225,7 @@ pub fn generateLazyFunction(
225225 }
226226}
227227
228fn writeFloat(comptime F: type, f: F, target: std.Target, endian: std.builtin.Endian, code: []u8) void {
228fn writeFloat(comptime F: type, f: F, target: *const std.Target, endian: std.builtin.Endian, code: []u8) void {
229229 _ = target;
230230 const bits = @typeInfo(F).float.bits;
231231 const Int = @Type(.{ .int = .{ .signedness = .unsigned, .bits = bits } });
......@@ -253,7 +253,7 @@ pub fn generateLazySymbol(
253253 const gpa = comp.gpa;
254254 const zcu = pt.zcu;
255255 const ip = &zcu.intern_pool;
256 const target = comp.root_mod.resolved_target.result;
256 const target = &comp.root_mod.resolved_target.result;
257257 const endian = target.cpu.arch.endian();
258258
259259 log.debug("generateLazySymbol: kind = {s}, ty = {}", .{
......@@ -810,7 +810,7 @@ fn lowerUavRef(
810810
811811 const uav_align = ip.indexToKey(uav.orig_ty).ptr_type.flags.alignment;
812812 switch (try lf.lowerUav(pt, uav_val, uav_align, src_loc)) {
813 .mcv => {},
813 .sym_index => {},
814814 .fail => |em| std.debug.panic("TODO rework lowerUav. internal error: {s}", .{em.msg}),
815815 }
816816
......@@ -839,7 +839,7 @@ fn lowerNavRef(
839839 const zcu = pt.zcu;
840840 const gpa = zcu.gpa;
841841 const ip = &zcu.intern_pool;
842 const target = zcu.navFileScope(nav_index).mod.?.resolved_target.result;
842 const target = &zcu.navFileScope(nav_index).mod.?.resolved_target.result;
843843 const ptr_width_bytes = @divExact(target.ptrBitWidth(), 8);
844844 const is_obj = lf.comp.config.output_mode == .Obj;
845845 const nav_ty = Type.fromInterned(ip.getNav(nav_index).typeOf(ip));
......@@ -920,44 +920,15 @@ pub const LinkerLoad = struct {
920920 sym_index: u32,
921921};
922922
923pub const GenResult = union(enum) {
924 mcv: MCValue,
925 fail: *ErrorMsg,
926
927 const MCValue = union(enum) {
928 none,
929 undef,
930 /// The bit-width of the immediate may be smaller than `u64`. For example, on 32-bit targets
931 /// such as ARM, the immediate will never exceed 32-bits.
932 immediate: u64,
933 /// Decl with address deferred until the linker allocates everything in virtual memory.
934 /// Payload is a symbol index.
935 load_direct: u32,
936 /// Decl with address deferred until the linker allocates everything in virtual memory.
937 /// Payload is a symbol index.
938 lea_direct: u32,
939 /// Decl referenced via GOT with address deferred until the linker allocates
940 /// everything in virtual memory.
941 /// Payload is a symbol index.
942 load_got: u32,
943 /// Direct by-address reference to memory location.
944 memory: u64,
945 /// Reference to memory location but deferred until linker allocated the Decl in memory.
946 /// Traditionally, this corresponds to emitting a relocation in a relocatable object file.
947 load_symbol: u32,
948 /// Reference to memory location but deferred until linker allocated the Decl in memory.
949 /// Traditionally, this corresponds to emitting a relocation in a relocatable object file.
950 lea_symbol: u32,
951 };
952};
923pub const SymbolResult = union(enum) { sym_index: u32, fail: *ErrorMsg };
953924
954925pub fn genNavRef(
955926 lf: *link.File,
956927 pt: Zcu.PerThread,
957928 src_loc: Zcu.LazySrcLoc,
958929 nav_index: InternPool.Nav.Index,
959 target: std.Target,
960) CodeGenError!GenResult {
930 target: *const std.Target,
931) CodeGenError!SymbolResult {
961932 const zcu = pt.zcu;
962933 const ip = &zcu.intern_pool;
963934 const nav = ip.getNav(nav_index);
......@@ -973,7 +944,7 @@ pub fn genNavRef(
973944 .internal => {
974945 const sym_index = try zo.getOrCreateMetadataForNav(zcu, nav_index);
975946 if (is_threadlocal) zo.symbol(sym_index).flags.is_tls = true;
976 return .{ .mcv = .{ .lea_symbol = sym_index } };
947 return .{ .sym_index = sym_index };
977948 },
978949 .strong, .weak => {
979950 const sym_index = try elf_file.getGlobalSymbol(nav.name.toSlice(ip), lib_name.toSlice(ip));
......@@ -984,7 +955,7 @@ pub fn genNavRef(
984955 .link_once => unreachable,
985956 }
986957 if (is_threadlocal) zo.symbol(sym_index).flags.is_tls = true;
987 return .{ .mcv = .{ .lea_symbol = sym_index } };
958 return .{ .sym_index = sym_index };
988959 },
989960 .link_once => unreachable,
990961 }
......@@ -994,7 +965,7 @@ pub fn genNavRef(
994965 .internal => {
995966 const sym_index = try zo.getOrCreateMetadataForNav(macho_file, nav_index);
996967 if (is_threadlocal) zo.symbols.items[sym_index].flags.tlv = true;
997 return .{ .mcv = .{ .lea_symbol = sym_index } };
968 return .{ .sym_index = sym_index };
998969 },
999970 .strong, .weak => {
1000971 const sym_index = try macho_file.getGlobalSymbol(nav.name.toSlice(ip), lib_name.toSlice(ip));
......@@ -1005,7 +976,7 @@ pub fn genNavRef(
1005976 .link_once => unreachable,
1006977 }
1007978 if (is_threadlocal) zo.symbols.items[sym_index].flags.tlv = true;
1008 return .{ .mcv = .{ .lea_symbol = sym_index } };
979 return .{ .sym_index = sym_index };
1009980 },
1010981 .link_once => unreachable,
1011982 }
......@@ -1015,57 +986,85 @@ pub fn genNavRef(
1015986 .internal => {
1016987 const atom_index = try coff_file.getOrCreateAtomForNav(nav_index);
1017988 const sym_index = coff_file.getAtom(atom_index).getSymbolIndex().?;
1018 return .{ .mcv = .{ .lea_symbol = sym_index } };
989 return .{ .sym_index = sym_index };
1019990 },
1020991 .strong, .weak => {
1021992 const global_index = try coff_file.getGlobalSymbol(nav.name.toSlice(ip), lib_name.toSlice(ip));
1022993 try coff_file.need_got_table.put(zcu.gpa, global_index, {}); // needs GOT
1023 return .{ .mcv = .{ .lea_symbol = global_index } };
994 return .{ .sym_index = global_index };
1024995 },
1025996 .link_once => unreachable,
1026997 }
1027998 } else if (lf.cast(.plan9)) |p9| {
1028 const atom_index = try p9.seeNav(pt, nav_index);
1029 const atom = p9.getAtom(atom_index);
1030 return .{ .mcv = .{ .memory = atom.getOffsetTableAddress(p9) } };
999 return .{ .sym_index = try p9.seeNav(pt, nav_index) };
10311000 } else {
10321001 const msg = try ErrorMsg.create(zcu.gpa, src_loc, "TODO genNavRef for target {}", .{target});
10331002 return .{ .fail = msg };
10341003 }
10351004}
10361005
1006/// deprecated legacy type
1007pub const GenResult = union(enum) {
1008 mcv: MCValue,
1009 fail: *ErrorMsg,
1010
1011 const MCValue = union(enum) {
1012 none,
1013 undef,
1014 /// The bit-width of the immediate may be smaller than `u64`. For example, on 32-bit targets
1015 /// such as ARM, the immediate will never exceed 32-bits.
1016 immediate: u64,
1017 /// Decl with address deferred until the linker allocates everything in virtual memory.
1018 /// Payload is a symbol index.
1019 load_direct: u32,
1020 /// Decl with address deferred until the linker allocates everything in virtual memory.
1021 /// Payload is a symbol index.
1022 lea_direct: u32,
1023 /// Decl referenced via GOT with address deferred until the linker allocates
1024 /// everything in virtual memory.
1025 /// Payload is a symbol index.
1026 load_got: u32,
1027 /// Direct by-address reference to memory location.
1028 memory: u64,
1029 /// Reference to memory location but deferred until linker allocated the Decl in memory.
1030 /// Traditionally, this corresponds to emitting a relocation in a relocatable object file.
1031 load_symbol: u32,
1032 /// Reference to memory location but deferred until linker allocated the Decl in memory.
1033 /// Traditionally, this corresponds to emitting a relocation in a relocatable object file.
1034 lea_symbol: u32,
1035 };
1036};
1037
10371038/// deprecated legacy code path
10381039pub fn genTypedValue(
10391040 lf: *link.File,
10401041 pt: Zcu.PerThread,
10411042 src_loc: Zcu.LazySrcLoc,
10421043 val: Value,
1043 target: std.Target,
1044 target: *const std.Target,
10441045) CodeGenError!GenResult {
1045 return switch (try lowerValue(pt, val, &target)) {
1046 const res = try lowerValue(pt, val, target);
1047 return switch (res) {
10461048 .none => .{ .mcv = .none },
10471049 .undef => .{ .mcv = .undef },
10481050 .immediate => |imm| .{ .mcv = .{ .immediate = imm } },
1049 .lea_nav => |nav| genNavRef(lf, pt, src_loc, nav, target),
1050 .lea_uav => |uav| switch (try lf.lowerUav(
1051 .lea_nav => |nav| switch (try genNavRef(lf, pt, src_loc, nav, target)) {
1052 .sym_index => |sym_index| .{ .mcv = .{ .lea_symbol = sym_index } },
1053 .fail => |em| .{ .fail = em },
1054 },
1055 .load_uav, .lea_uav => |uav| switch (try lf.lowerUav(
10511056 pt,
10521057 uav.val,
10531058 Type.fromInterned(uav.orig_ty).ptrAlignment(pt.zcu),
10541059 src_loc,
10551060 )) {
1056 .mcv => |mcv| .{ .mcv = switch (mcv) {
1061 .sym_index => |sym_index| .{ .mcv = switch (res) {
10571062 else => unreachable,
1058 .load_direct => |sym_index| .{ .lea_direct = sym_index },
1059 .load_symbol => |sym_index| .{ .lea_symbol = sym_index },
1063 .load_uav => .{ .load_symbol = sym_index },
1064 .lea_uav => .{ .lea_symbol = sym_index },
10601065 } },
10611066 .fail => |em| .{ .fail = em },
10621067 },
1063 .load_uav => |uav| lf.lowerUav(
1064 pt,
1065 uav.val,
1066 Type.fromInterned(uav.orig_ty).ptrAlignment(pt.zcu),
1067 src_loc,
1068 ),
10691068 };
10701069}
10711070
......@@ -1076,8 +1075,8 @@ const LowerResult = union(enum) {
10761075 /// such as ARM, the immediate will never exceed 32-bits.
10771076 immediate: u64,
10781077 lea_nav: InternPool.Nav.Index,
1079 lea_uav: InternPool.Key.Ptr.BaseAddr.Uav,
10801078 load_uav: InternPool.Key.Ptr.BaseAddr.Uav,
1079 lea_uav: InternPool.Key.Ptr.BaseAddr.Uav,
10811080};
10821081
10831082pub fn lowerValue(pt: Zcu.PerThread, val: Value, target: *const std.Target) Allocator.Error!LowerResult {
src/codegen/c.zig+6-6
......@@ -1080,7 +1080,7 @@ pub const DeclGen = struct {
10801080 },
10811081 .enum_tag => |enum_tag| try dg.renderValue(writer, Value.fromInterned(enum_tag.int), location),
10821082 .float => {
1083 const bits = ty.floatBits(target.*);
1083 const bits = ty.floatBits(target);
10841084 const f128_val = val.toFloat(f128, zcu);
10851085
10861086 // All unsigned ints matching float types are pre-allocated.
......@@ -1608,7 +1608,7 @@ pub const DeclGen = struct {
16081608 .f80_type,
16091609 .f128_type,
16101610 => {
1611 const bits = ty.floatBits(target.*);
1611 const bits = ty.floatBits(target);
16121612 // All unsigned ints matching float types are pre-allocated.
16131613 const repr_ty = dg.pt.intType(.unsigned, bits) catch unreachable;
16141614
......@@ -6543,7 +6543,7 @@ fn airFloatCast(f: *Function, inst: Air.Inst.Index) !CValue {
65436543 const scalar_ty = operand_ty.scalarType(zcu);
65446544 const target = &f.object.dg.mod.resolved_target.result;
65456545 const operation = if (inst_scalar_ty.isRuntimeFloat() and scalar_ty.isRuntimeFloat())
6546 if (inst_scalar_ty.floatBits(target.*) < scalar_ty.floatBits(target.*)) "trunc" else "extend"
6546 if (inst_scalar_ty.floatBits(target) < scalar_ty.floatBits(target)) "trunc" else "extend"
65476547 else if (inst_scalar_ty.isInt(zcu) and scalar_ty.isRuntimeFloat())
65486548 if (inst_scalar_ty.isSignedInt(zcu)) "fix" else "fixuns"
65496549 else if (inst_scalar_ty.isRuntimeFloat() and scalar_ty.isInt(zcu))
......@@ -6565,8 +6565,8 @@ fn airFloatCast(f: *Function, inst: Air.Inst.Index) !CValue {
65656565 }
65666566 try writer.writeAll("zig_");
65676567 try writer.writeAll(operation);
6568 try writer.writeAll(compilerRtAbbrev(scalar_ty, zcu, target.*));
6569 try writer.writeAll(compilerRtAbbrev(inst_scalar_ty, zcu, target.*));
6568 try writer.writeAll(compilerRtAbbrev(scalar_ty, zcu, target));
6569 try writer.writeAll(compilerRtAbbrev(inst_scalar_ty, zcu, target));
65706570 try writer.writeByte('(');
65716571 try f.writeCValue(writer, operand, .FunctionArgument);
65726572 try v.elem(f, writer);
......@@ -8073,7 +8073,7 @@ fn signAbbrev(signedness: std.builtin.Signedness) u8 {
80738073 };
80748074}
80758075
8076fn compilerRtAbbrev(ty: Type, zcu: *Zcu, target: std.Target) []const u8 {
8076fn compilerRtAbbrev(ty: Type, zcu: *Zcu, target: *const std.Target) []const u8 {
80778077 return if (ty.isInt(zcu)) switch (ty.intInfo(zcu).bits) {
80788078 1...32 => "si",
80798079 33...64 => "di",
src/codegen/c/Type.zig+7-7
......@@ -1319,9 +1319,9 @@ pub const Pool = struct {
13191319 },
13201320 else => {
13211321 const target = &mod.resolved_target.result;
1322 const abi_align_bytes = std.zig.target.intAlignment(target.*, int_info.bits);
1322 const abi_align_bytes = std.zig.target.intAlignment(target, int_info.bits);
13231323 const array_ctype = try pool.getArray(allocator, .{
1324 .len = @divExact(std.zig.target.intByteSize(target.*, int_info.bits), abi_align_bytes),
1324 .len = @divExact(std.zig.target.intByteSize(target, int_info.bits), abi_align_bytes),
13251325 .elem_ctype = try pool.fromIntInfo(allocator, .{
13261326 .signedness = .unsigned,
13271327 .bits = @intCast(abi_align_bytes * 8),
......@@ -1438,13 +1438,13 @@ pub const Pool = struct {
14381438 .elem_ctype = .u8,
14391439 .@"const" = true,
14401440 }),
1441 .alignas = AlignAs.fromAbiAlignment(Type.ptrAbiAlignment(target.*)),
1441 .alignas = AlignAs.fromAbiAlignment(Type.ptrAbiAlignment(target)),
14421442 },
14431443 .{
14441444 .name = .{ .index = .len },
14451445 .ctype = .usize,
14461446 .alignas = AlignAs.fromAbiAlignment(
1447 .fromByteUnits(std.zig.target.intAlignment(target.*, target.ptrBitWidth())),
1447 .fromByteUnits(std.zig.target.intAlignment(target, target.ptrBitWidth())),
14481448 ),
14491449 },
14501450 };
......@@ -2246,13 +2246,13 @@ pub const Pool = struct {
22462246 mod,
22472247 kind,
22482248 ),
2249 .alignas = AlignAs.fromAbiAlignment(Type.ptrAbiAlignment(target.*)),
2249 .alignas = AlignAs.fromAbiAlignment(Type.ptrAbiAlignment(target)),
22502250 },
22512251 .{
22522252 .name = .{ .index = .len },
22532253 .ctype = .usize,
22542254 .alignas = AlignAs.fromAbiAlignment(
2255 .fromByteUnits(std.zig.target.intAlignment(target.*, target.ptrBitWidth())),
2255 .fromByteUnits(std.zig.target.intAlignment(target, target.ptrBitWidth())),
22562256 ),
22572257 },
22582258 };
......@@ -2372,7 +2372,7 @@ pub const Pool = struct {
23722372 .name = .{ .index = .@"error" },
23732373 .ctype = error_set_ctype,
23742374 .alignas = AlignAs.fromAbiAlignment(
2375 .fromByteUnits(std.zig.target.intAlignment(target.*, error_set_bits)),
2375 .fromByteUnits(std.zig.target.intAlignment(target, error_set_bits)),
23762376 ),
23772377 },
23782378 .{
src/codegen/llvm.zig+43-55
......@@ -43,7 +43,7 @@ pub fn legalizeFeatures(_: *const std.Target) ?*const Air.Legalize.Features {
4343 });
4444}
4545
46fn subArchName(target: std.Target, comptime family: std.Target.Cpu.Arch.Family, mappings: anytype) ?[]const u8 {
46fn subArchName(target: *const std.Target, comptime family: std.Target.Cpu.Arch.Family, mappings: anytype) ?[]const u8 {
4747 inline for (mappings) |mapping| {
4848 if (target.cpu.has(family, mapping[0])) return mapping[1];
4949 }
......@@ -51,7 +51,7 @@ fn subArchName(target: std.Target, comptime family: std.Target.Cpu.Arch.Family,
5151 return null;
5252}
5353
54pub fn targetTriple(allocator: Allocator, target: std.Target) ![]const u8 {
54pub fn targetTriple(allocator: Allocator, target: *const std.Target) ![]const u8 {
5555 var llvm_triple = std.ArrayList(u8).init(allocator);
5656 defer llvm_triple.deinit();
5757
......@@ -309,7 +309,7 @@ pub fn targetTriple(allocator: Allocator, target: std.Target) ![]const u8 {
309309 return llvm_triple.toOwnedSlice();
310310}
311311
312pub fn supportsTailCall(target: std.Target) bool {
312pub fn supportsTailCall(target: *const std.Target) bool {
313313 return switch (target.cpu.arch) {
314314 .wasm32, .wasm64 => target.cpu.has(.wasm, .tail_call),
315315 // Although these ISAs support tail calls, LLVM does not support tail calls on them.
......@@ -319,7 +319,7 @@ pub fn supportsTailCall(target: std.Target) bool {
319319 };
320320}
321321
322pub fn dataLayout(target: std.Target) []const u8 {
322pub fn dataLayout(target: *const std.Target) []const u8 {
323323 // These data layouts should match Clang.
324324 return switch (target.cpu.arch) {
325325 .arc => "e-m:e-p:32:32-i1:8:32-i8:8:32-i16:16:32-i32:32:32-f32:32:32-i64:32-f64:32-a:0:32-n32",
......@@ -475,7 +475,7 @@ const CodeModel = enum {
475475 large,
476476};
477477
478fn codeModel(model: std.builtin.CodeModel, target: std.Target) CodeModel {
478fn codeModel(model: std.builtin.CodeModel, target: *const std.Target) CodeModel {
479479 // Roughly match Clang's mapping of GCC code models to LLVM code models.
480480 return switch (model) {
481481 .default => .default,
......@@ -508,7 +508,7 @@ pub const Object = struct {
508508
509509 debug_unresolved_namespace_scopes: std.AutoArrayHashMapUnmanaged(InternPool.NamespaceIndex, Builder.Metadata),
510510
511 target: std.Target,
511 target: *const std.Target,
512512 /// Ideally we would use `llvm_module.getNamedFunction` to go from *Decl to LLVM function,
513513 /// but that has some downsides:
514514 /// * we have to compute the fully qualified name every time we want to do the lookup
......@@ -562,7 +562,7 @@ pub const Object = struct {
562562 pub fn create(arena: Allocator, comp: *Compilation) !Ptr {
563563 dev.check(.llvm_backend);
564564 const gpa = comp.gpa;
565 const target = comp.root_mod.resolved_target.result;
565 const target = &comp.root_mod.resolved_target.result;
566566 const llvm_target_triple = try targetTriple(arena, target);
567567
568568 var builder = try Builder.init(.{
......@@ -827,7 +827,7 @@ pub const Object = struct {
827827 const behavior_max = try o.builder.metadataConstant(try o.builder.intConst(.i32, 7));
828828 const behavior_min = try o.builder.metadataConstant(try o.builder.intConst(.i32, 8));
829829
830 if (target_util.llvmMachineAbi(comp.root_mod.resolved_target.result)) |abi| {
830 if (target_util.llvmMachineAbi(&comp.root_mod.resolved_target.result)) |abi| {
831831 module_flags.appendAssumeCapacity(try o.builder.metadataModuleFlag(
832832 behavior_error,
833833 try o.builder.metadataString("target-abi"),
......@@ -837,7 +837,7 @@ pub const Object = struct {
837837 ));
838838 }
839839
840 const pic_level = target_util.picLevel(comp.root_mod.resolved_target.result);
840 const pic_level = target_util.picLevel(&comp.root_mod.resolved_target.result);
841841 if (comp.root_mod.pic) {
842842 module_flags.appendAssumeCapacity(try o.builder.metadataModuleFlag(
843843 behavior_min,
......@@ -860,7 +860,7 @@ pub const Object = struct {
860860 try o.builder.metadataString("Code Model"),
861861 try o.builder.metadataConstant(try o.builder.intConst(.i32, @as(
862862 i32,
863 switch (codeModel(comp.root_mod.code_model, comp.root_mod.resolved_target.result)) {
863 switch (codeModel(comp.root_mod.code_model, &comp.root_mod.resolved_target.result)) {
864864 .default => unreachable,
865865 .tiny => 0,
866866 .small => 1,
......@@ -906,7 +906,7 @@ pub const Object = struct {
906906 }
907907 }
908908
909 const target = comp.root_mod.resolved_target.result;
909 const target = &comp.root_mod.resolved_target.result;
910910 if (target.os.tag == .windows and (target.cpu.arch == .x86_64 or target.cpu.arch == .x86)) {
911911 // Add the "RegCallv4" flag so that any functions using `x86_regcallcc` use regcall
912912 // v4, which is essentially a requirement on Windows. See corresponding logic in
......@@ -1020,7 +1020,7 @@ pub const Object = struct {
10201020 else
10211021 .Static;
10221022
1023 const code_model: llvm.CodeModel = switch (codeModel(comp.root_mod.code_model, comp.root_mod.resolved_target.result)) {
1023 const code_model: llvm.CodeModel = switch (codeModel(comp.root_mod.code_model, &comp.root_mod.resolved_target.result)) {
10241024 .default => .Default,
10251025 .tiny => .Tiny,
10261026 .small => .Small,
......@@ -1045,7 +1045,7 @@ pub const Object = struct {
10451045 comp.function_sections,
10461046 comp.data_sections,
10471047 float_abi,
1048 if (target_util.llvmMachineAbi(comp.root_mod.resolved_target.result)) |s| s.ptr else null,
1048 if (target_util.llvmMachineAbi(&comp.root_mod.resolved_target.result)) |s| s.ptr else null,
10491049 );
10501050 errdefer target_machine.dispose();
10511051
......@@ -1137,7 +1137,7 @@ pub const Object = struct {
11371137 const owner_mod = zcu.fileByIndex(file_scope).mod.?;
11381138 const fn_ty = Type.fromInterned(func.ty);
11391139 const fn_info = zcu.typeToFunc(fn_ty).?;
1140 const target = owner_mod.resolved_target.result;
1140 const target = &owner_mod.resolved_target.result;
11411141
11421142 var ng: NavGen = .{
11431143 .object = o,
......@@ -2699,7 +2699,7 @@ pub const Object = struct {
26992699 if (gop.found_existing) return gop.value_ptr.ptr(&o.builder).kind.function;
27002700
27012701 const fn_info = zcu.typeToFunc(ty).?;
2702 const target = owner_mod.resolved_target.result;
2702 const target = &owner_mod.resolved_target.result;
27032703 const sret = firstParamSRet(fn_info, zcu, target);
27042704
27052705 const is_extern, const lib_name = if (nav.getExtern(ip)) |@"extern"|
......@@ -2913,7 +2913,7 @@ pub const Object = struct {
29132913 try attributes.addFnAttr(.minsize, &o.builder);
29142914 try attributes.addFnAttr(.optsize, &o.builder);
29152915 }
2916 const target = owner_mod.resolved_target.result;
2916 const target = &owner_mod.resolved_target.result;
29172917 if (target.cpu.model.llvm_name) |s| {
29182918 try attributes.addFnAttr(.{ .string = .{
29192919 .kind = try o.builder.string("target-cpu"),
......@@ -4445,7 +4445,7 @@ pub const Object = struct {
44454445 if (o.builder.getGlobal(name)) |llvm_fn| return llvm_fn.ptrConst(&o.builder).kind.function;
44464446
44474447 const zcu = o.pt.zcu;
4448 const target = zcu.root_mod.resolved_target.result;
4448 const target = &zcu.root_mod.resolved_target.result;
44494449 const function_index = try o.builder.addFunction(
44504450 try o.builder.fnType(.i1, &.{try o.errorIntType()}, .normal),
44514451 name,
......@@ -4474,7 +4474,7 @@ pub const Object = struct {
44744474
44754475 const usize_ty = try o.lowerType(Type.usize);
44764476 const ret_ty = try o.lowerType(Type.slice_const_u8_sentinel_0);
4477 const target = zcu.root_mod.resolved_target.result;
4477 const target = &zcu.root_mod.resolved_target.result;
44784478 const function_index = try o.builder.addFunction(
44794479 try o.builder.fnType(ret_ty, &.{try o.lowerType(Type.fromInterned(enum_type.tag_ty))}, .normal),
44804480 try o.builder.strtabStringFmt("__zig_tag_name_{}", .{enum_type.name.fmt(ip)}),
......@@ -10372,7 +10372,7 @@ pub const FuncGen = struct {
1037210372 if (gop.found_existing) return gop.value_ptr.*;
1037310373 errdefer assert(o.named_enum_map.remove(enum_ty.toIntern()));
1037410374
10375 const target = zcu.root_mod.resolved_target.result;
10375 const target = &zcu.root_mod.resolved_target.result;
1037610376 const function_index = try o.builder.addFunction(
1037710377 try o.builder.fnType(.i1, &.{try o.lowerType(Type.fromInterned(enum_type.tag_ty))}, .normal),
1037810378 try o.builder.strtabStringFmt("__zig_is_named_enum_value_{}", .{enum_type.name.fmt(ip)}),
......@@ -11834,7 +11834,7 @@ const CallingConventionInfo = struct {
1183411834 inreg_param_count: u2 = 0,
1183511835};
1183611836
11837pub fn toLlvmCallConv(cc: std.builtin.CallingConvention, target: std.Target) ?CallingConventionInfo {
11837pub fn toLlvmCallConv(cc: std.builtin.CallingConvention, target: *const std.Target) ?CallingConventionInfo {
1183811838 const llvm_cc = toLlvmCallConvTag(cc, target) orelse return null;
1183911839 const incoming_stack_alignment: ?u64, const register_params: u2 = switch (cc) {
1184011840 inline else => |pl| switch (@TypeOf(pl)) {
......@@ -11858,7 +11858,7 @@ pub fn toLlvmCallConv(cc: std.builtin.CallingConvention, target: std.Target) ?Ca
1185811858 .inreg_param_count = register_params,
1185911859 };
1186011860}
11861fn toLlvmCallConvTag(cc_tag: std.builtin.CallingConvention.Tag, target: std.Target) ?Builder.CallConv {
11861fn toLlvmCallConvTag(cc_tag: std.builtin.CallingConvention.Tag, target: *const std.Target) ?Builder.CallConv {
1186211862 if (target.cCallingConvention()) |default_c| {
1186311863 if (cc_tag == default_c) {
1186411864 return .ccc;
......@@ -11972,7 +11972,7 @@ fn toLlvmCallConvTag(cc_tag: std.builtin.CallingConvention.Tag, target: std.Targ
1197211972}
1197311973
1197411974/// Convert a zig-address space to an llvm address space.
11975fn toLlvmAddressSpace(address_space: std.builtin.AddressSpace, target: std.Target) Builder.AddrSpace {
11975fn toLlvmAddressSpace(address_space: std.builtin.AddressSpace, target: *const std.Target) Builder.AddrSpace {
1197611976 for (llvmAddrSpaceInfo(target)) |info| if (info.zig == address_space) return info.llvm;
1197711977 unreachable;
1197811978}
......@@ -11987,7 +11987,7 @@ const AddrSpaceInfo = struct {
1198711987 idx: ?u16 = null,
1198811988 force_in_data_layout: bool = false,
1198911989};
11990fn llvmAddrSpaceInfo(target: std.Target) []const AddrSpaceInfo {
11990fn llvmAddrSpaceInfo(target: *const std.Target) []const AddrSpaceInfo {
1199111991 return switch (target.cpu.arch) {
1199211992 .x86, .x86_64 => &.{
1199311993 .{ .zig = .generic, .llvm = .default },
......@@ -12063,7 +12063,7 @@ fn llvmAddrSpaceInfo(target: std.Target) []const AddrSpaceInfo {
1206312063/// different address, space and then cast back to the generic address space.
1206412064/// For example, on GPUs local variable declarations must be generated into the local address space.
1206512065/// This function returns the address space local values should be generated into.
12066fn llvmAllocaAddressSpace(target: std.Target) Builder.AddrSpace {
12066fn llvmAllocaAddressSpace(target: *const std.Target) Builder.AddrSpace {
1206712067 return switch (target.cpu.arch) {
1206812068 // On amdgcn, locals should be generated into the private address space.
1206912069 // To make Zig not impossible to use, these are then converted to addresses in the
......@@ -12075,7 +12075,7 @@ fn llvmAllocaAddressSpace(target: std.Target) Builder.AddrSpace {
1207512075
1207612076/// On some targets, global values that are in the generic address space must be generated into a
1207712077/// different address space, and then cast back to the generic address space.
12078fn llvmDefaultGlobalAddressSpace(target: std.Target) Builder.AddrSpace {
12078fn llvmDefaultGlobalAddressSpace(target: *const std.Target) Builder.AddrSpace {
1207912079 return switch (target.cpu.arch) {
1208012080 // On amdgcn, globals must be explicitly allocated and uploaded so that the program can access
1208112081 // them.
......@@ -12086,14 +12086,14 @@ fn llvmDefaultGlobalAddressSpace(target: std.Target) Builder.AddrSpace {
1208612086
1208712087/// Return the actual address space that a value should be stored in if its a global address space.
1208812088/// When a value is placed in the resulting address space, it needs to be cast back into wanted_address_space.
12089fn toLlvmGlobalAddressSpace(wanted_address_space: std.builtin.AddressSpace, target: std.Target) Builder.AddrSpace {
12089fn toLlvmGlobalAddressSpace(wanted_address_space: std.builtin.AddressSpace, target: *const std.Target) Builder.AddrSpace {
1209012090 return switch (wanted_address_space) {
1209112091 .generic => llvmDefaultGlobalAddressSpace(target),
1209212092 else => |as| toLlvmAddressSpace(as, target),
1209312093 };
1209412094}
1209512095
12096fn returnTypeByRef(zcu: *Zcu, target: std.Target, ty: Type) bool {
12096fn returnTypeByRef(zcu: *Zcu, target: *const std.Target, ty: Type) bool {
1209712097 if (isByRef(ty, zcu)) {
1209812098 return true;
1209912099 } else if (target.cpu.arch.isX86() and
......@@ -12108,14 +12108,14 @@ fn returnTypeByRef(zcu: *Zcu, target: std.Target, ty: Type) bool {
1210812108 }
1210912109}
1211012110
12111fn firstParamSRet(fn_info: InternPool.Key.FuncType, zcu: *Zcu, target: std.Target) bool {
12111fn firstParamSRet(fn_info: InternPool.Key.FuncType, zcu: *Zcu, target: *const std.Target) bool {
1211212112 const return_type = Type.fromInterned(fn_info.return_type);
1211312113 if (!return_type.hasRuntimeBitsIgnoreComptime(zcu)) return false;
1211412114
1211512115 return switch (fn_info.cc) {
1211612116 .auto => returnTypeByRef(zcu, target, return_type),
1211712117 .x86_64_sysv => firstParamSRetSystemV(return_type, zcu, target),
12118 .x86_64_win => x86_64_abi.classifyWindows(return_type, zcu) == .memory,
12118 .x86_64_win => x86_64_abi.classifyWindows(return_type, zcu, target) == .memory,
1211912119 .x86_sysv, .x86_win => isByRef(return_type, zcu),
1212012120 .x86_stdcall => !isScalar(zcu, return_type),
1212112121 .wasm_mvp => wasm_c_abi.classifyType(return_type, zcu) == .indirect,
......@@ -12137,8 +12137,8 @@ fn firstParamSRet(fn_info: InternPool.Key.FuncType, zcu: *Zcu, target: std.Targe
1213712137 };
1213812138}
1213912139
12140fn firstParamSRetSystemV(ty: Type, zcu: *Zcu, target: std.Target) bool {
12141 const class = x86_64_abi.classifySystemV(ty, zcu, &target, .ret);
12140fn firstParamSRetSystemV(ty: Type, zcu: *Zcu, target: *const std.Target) bool {
12141 const class = x86_64_abi.classifySystemV(ty, zcu, target, .ret);
1214212142 if (class[0] == .memory) return true;
1214312143 if (class[0] == .x87 and class[2] != .none) return true;
1214412144 return false;
......@@ -12215,7 +12215,7 @@ fn lowerFnRetTy(o: *Object, fn_info: InternPool.Key.FuncType) Allocator.Error!Bu
1221512215fn lowerWin64FnRetTy(o: *Object, fn_info: InternPool.Key.FuncType) Allocator.Error!Builder.Type {
1221612216 const zcu = o.pt.zcu;
1221712217 const return_type = Type.fromInterned(fn_info.return_type);
12218 switch (x86_64_abi.classifyWindows(return_type, zcu)) {
12218 switch (x86_64_abi.classifyWindows(return_type, zcu, zcu.getTarget())) {
1221912219 .integer => {
1222012220 if (isScalar(zcu, return_type)) {
1222112221 return o.lowerType(return_type);
......@@ -12238,9 +12238,7 @@ fn lowerSystemVFnRetTy(o: *Object, fn_info: InternPool.Key.FuncType) Allocator.E
1223812238 if (isScalar(zcu, return_type)) {
1223912239 return o.lowerType(return_type);
1224012240 }
12241 const target = zcu.getTarget();
12242 const classes = x86_64_abi.classifySystemV(return_type, zcu, &target, .ret);
12243 if (classes[0] == .memory) return .void;
12241 const classes = x86_64_abi.classifySystemV(return_type, zcu, zcu.getTarget(), .ret);
1224412242 var types_index: u32 = 0;
1224512243 var types_buffer: [8]Builder.Type = undefined;
1224612244 for (classes) |class| {
......@@ -12275,15 +12273,9 @@ fn lowerSystemVFnRetTy(o: *Object, fn_info: InternPool.Key.FuncType) Allocator.E
1227512273 types_index += 1;
1227612274 },
1227712275 .x87up => continue,
12278 .complex_x87 => {
12279 @panic("TODO");
12280 },
12281 .memory => unreachable, // handled above
12282 .win_i128 => unreachable, // windows only
1228312276 .none => break,
12284 .integer_per_element => {
12285 @panic("TODO");
12286 },
12277 .memory, .integer_per_element => return .void,
12278 .win_i128 => unreachable, // windows only
1228712279 }
1228812280 }
1228912281 const first_non_integer = std.mem.indexOfNone(x86_64_abi.Class, &classes, &.{.integer});
......@@ -12493,7 +12485,7 @@ const ParamTypeIterator = struct {
1249312485
1249412486 fn nextWin64(it: *ParamTypeIterator, ty: Type) ?Lowering {
1249512487 const zcu = it.object.pt.zcu;
12496 switch (x86_64_abi.classifyWindows(ty, zcu)) {
12488 switch (x86_64_abi.classifyWindows(ty, zcu, zcu.getTarget())) {
1249712489 .integer => {
1249812490 if (isScalar(zcu, ty)) {
1249912491 it.zig_index += 1;
......@@ -12527,8 +12519,7 @@ const ParamTypeIterator = struct {
1252712519 fn nextSystemV(it: *ParamTypeIterator, ty: Type) Allocator.Error!?Lowering {
1252812520 const zcu = it.object.pt.zcu;
1252912521 const ip = &zcu.intern_pool;
12530 const target = zcu.getTarget();
12531 const classes = x86_64_abi.classifySystemV(ty, zcu, &target, .arg);
12522 const classes = x86_64_abi.classifySystemV(ty, zcu, zcu.getTarget(), .arg);
1253212523 if (classes[0] == .memory) {
1253312524 it.zig_index += 1;
1253412525 it.llvm_index += 1;
......@@ -12575,12 +12566,9 @@ const ParamTypeIterator = struct {
1257512566 return .byref;
1257612567 },
1257712568 .x87up => unreachable,
12578 .complex_x87 => {
12579 @panic("TODO");
12580 },
12569 .none => break,
1258112570 .memory => unreachable, // handled above
1258212571 .win_i128 => unreachable, // windows only
12583 .none => break,
1258412572 .integer_per_element => {
1258512573 @panic("TODO");
1258612574 },
......@@ -12794,7 +12782,7 @@ fn isScalar(zcu: *Zcu, ty: Type) bool {
1279412782/// This function returns true if we expect LLVM to lower x86_fp80 correctly
1279512783/// and false if we expect LLVM to crash if it encounters an x86_fp80 type,
1279612784/// or if it produces miscompilations.
12797fn backendSupportsF80(target: std.Target) bool {
12785fn backendSupportsF80(target: *const std.Target) bool {
1279812786 return switch (target.cpu.arch) {
1279912787 .x86, .x86_64 => !target.cpu.has(.x86, .soft_float),
1280012788 else => false,
......@@ -12804,7 +12792,7 @@ fn backendSupportsF80(target: std.Target) bool {
1280412792/// This function returns true if we expect LLVM to lower f16 correctly
1280512793/// and false if we expect LLVM to crash if it encounters an f16 type,
1280612794/// or if it produces miscompilations.
12807fn backendSupportsF16(target: std.Target) bool {
12795fn backendSupportsF16(target: *const std.Target) bool {
1280812796 return switch (target.cpu.arch) {
1280912797 // https://github.com/llvm/llvm-project/issues/97981
1281012798 .csky,
......@@ -12840,7 +12828,7 @@ fn backendSupportsF16(target: std.Target) bool {
1284012828/// This function returns true if we expect LLVM to lower f128 correctly,
1284112829/// and false if we expect LLVM to crash if it encounters an f128 type,
1284212830/// or if it produces miscompilations.
12843fn backendSupportsF128(target: std.Target) bool {
12831fn backendSupportsF128(target: *const std.Target) bool {
1284412832 return switch (target.cpu.arch) {
1284512833 // https://github.com/llvm/llvm-project/issues/121122
1284612834 .amdgcn,
......@@ -12870,7 +12858,7 @@ fn backendSupportsF128(target: std.Target) bool {
1287012858
1287112859/// LLVM does not support all relevant intrinsics for all targets, so we
1287212860/// may need to manually generate a compiler-rt call.
12873fn intrinsicsAllowed(scalar_ty: Type, target: std.Target) bool {
12861fn intrinsicsAllowed(scalar_ty: Type, target: *const std.Target) bool {
1287412862 return switch (scalar_ty.toIntern()) {
1287512863 .f16_type => backendSupportsF16(target),
1287612864 .f80_type => (target.cTypeBitSize(.longdouble) == 80) and backendSupportsF80(target),
......@@ -12907,7 +12895,7 @@ fn buildAllocaInner(
1290712895 wip: *Builder.WipFunction,
1290812896 llvm_ty: Builder.Type,
1290912897 alignment: Builder.Alignment,
12910 target: std.Target,
12898 target: *const std.Target,
1291112899) Allocator.Error!Builder.Value {
1291212900 const address_space = llvmAllocaAddressSpace(target);
1291312901
src/codegen/spirv.zig+1-1
......@@ -185,7 +185,7 @@ pub const Object = struct {
185185 /// related to that.
186186 error_buffer: ?SpvModule.Decl.Index = null,
187187
188 pub fn init(gpa: Allocator, target: std.Target) Object {
188 pub fn init(gpa: Allocator, target: *const std.Target) Object {
189189 return .{
190190 .gpa = gpa,
191191 .spv = SpvModule.init(gpa, target),
src/codegen/spirv/Module.zig+2-2
......@@ -107,7 +107,7 @@ gpa: Allocator,
107107arena: std.heap.ArenaAllocator,
108108
109109/// Target info
110target: std.Target,
110target: *const std.Target,
111111
112112/// The target SPIR-V version
113113version: spec.Version,
......@@ -187,7 +187,7 @@ decl_deps: std.ArrayListUnmanaged(Decl.Index) = .empty,
187187/// The list of entry points that should be exported from this module.
188188entry_points: std.AutoArrayHashMapUnmanaged(IdRef, EntryPoint) = .empty,
189189
190pub fn init(gpa: Allocator, target: std.Target) Module {
190pub fn init(gpa: Allocator, target: *const std.Target) Module {
191191 const version_minor: u8 = blk: {
192192 // Prefer higher versions
193193 if (target.cpu.has(.spirv, .v1_6)) break :blk 6;
src/libs/freebsd.zig+2-2
......@@ -66,7 +66,7 @@ pub fn buildCrtFile(comp: *Compilation, crt_file: CrtFile, prog_node: std.Progre
6666 defer arena_allocator.deinit();
6767 const arena = arena_allocator.allocator();
6868
69 const target = comp.root_mod.resolved_target.result;
69 const target = &comp.root_mod.resolved_target.result;
7070
7171 // In all cases in this function, we add the C compiler flags to
7272 // cache_exempt_flags rather than extra_flags, because these arguments
......@@ -407,7 +407,7 @@ pub const BuiltSharedObjects = struct {
407407
408408const all_map_basename = "all.map";
409409
410fn wordDirective(target: std.Target) []const u8 {
410fn wordDirective(target: *const std.Target) []const u8 {
411411 // Based on its description in the GNU `as` manual, you might assume that `.word` is sized
412412 // according to the target word size. But no; that would just make too much sense.
413413 return if (target.ptrBitWidth() == 64) ".quad" else ".long";
src/libs/glibc.zig+3-3
......@@ -172,7 +172,7 @@ pub fn buildCrtFile(comp: *Compilation, crt_file: CrtFile, prog_node: std.Progre
172172 defer arena_allocator.deinit();
173173 const arena = arena_allocator.allocator();
174174
175 const target = comp.root_mod.resolved_target.result;
175 const target = &comp.root_mod.resolved_target.result;
176176 const target_ver = target.os.versionRange().gnuLibCVersion().?;
177177 const nonshared_stat = target_ver.order(.{ .major = 2, .minor = 32, .patch = 0 }) != .gt;
178178 const start_old_init_fini = target_ver.order(.{ .major = 2, .minor = 33, .patch = 0 }) != .gt;
......@@ -485,7 +485,7 @@ fn add_include_dirs(comp: *Compilation, arena: Allocator, args: *std.ArrayList([
485485fn add_include_dirs_arch(
486486 arena: Allocator,
487487 args: *std.ArrayList([]const u8),
488 target: std.Target,
488 target: *const std.Target,
489489 opt_nptl: ?[]const u8,
490490 dir: []const u8,
491491) error{OutOfMemory}!void {
......@@ -649,7 +649,7 @@ pub const BuiltSharedObjects = struct {
649649
650650const all_map_basename = "all.map";
651651
652fn wordDirective(target: std.Target) []const u8 {
652fn wordDirective(target: *const std.Target) []const u8 {
653653 // Based on its description in the GNU `as` manual, you might assume that `.word` is sized
654654 // according to the target word size. But no; that would just make too much sense.
655655 return if (target.ptrBitWidth() == 64) ".quad" else ".long";
src/libs/libcxx.zig+2-2
......@@ -121,7 +121,7 @@ pub fn buildLibCxx(comp: *Compilation, prog_node: std.Progress.Node) BuildError!
121121 const root_name = "c++";
122122 const output_mode = .Lib;
123123 const link_mode = .static;
124 const target = comp.root_mod.resolved_target.result;
124 const target = &comp.root_mod.resolved_target.result;
125125
126126 const cxxabi_include_path = try comp.dirs.zig_lib.join(arena, &.{ "libcxxabi", "include" });
127127 const cxx_include_path = try comp.dirs.zig_lib.join(arena, &.{ "libcxx", "include" });
......@@ -314,7 +314,7 @@ pub fn buildLibCxxAbi(comp: *Compilation, prog_node: std.Progress.Node) BuildErr
314314 const root_name = "c++abi";
315315 const output_mode = .Lib;
316316 const link_mode = .static;
317 const target = comp.root_mod.resolved_target.result;
317 const target = &comp.root_mod.resolved_target.result;
318318
319319 const cxxabi_include_path = try comp.dirs.zig_lib.join(arena, &.{ "libcxxabi", "include" });
320320 const cxx_include_path = try comp.dirs.zig_lib.join(arena, &.{ "libcxx", "include" });
src/libs/libtsan.zig+1-1
......@@ -324,7 +324,7 @@ pub fn buildTsan(comp: *Compilation, prog_node: std.Progress.Node) BuildError!vo
324324 comp.tsan_lib = crt_file;
325325}
326326
327fn addCcArgs(target: std.Target, args: *std.ArrayList([]const u8)) error{OutOfMemory}!void {
327fn addCcArgs(target: *const std.Target, args: *std.ArrayList([]const u8)) error{OutOfMemory}!void {
328328 try args.appendSlice(&[_][]const u8{
329329 "-nostdinc++",
330330 "-fvisibility=hidden",
src/libs/libunwind.zig+1-1
......@@ -27,7 +27,7 @@ pub fn buildStaticLib(comp: *Compilation, prog_node: std.Progress.Node) BuildErr
2727 const arena = arena_allocator.allocator();
2828
2929 const output_mode = .Lib;
30 const target = comp.root_mod.resolved_target.result;
30 const target = &comp.root_mod.resolved_target.result;
3131 const unwind_tables: std.builtin.UnwindTables =
3232 if (target.cpu.arch == .x86 and target.os.tag == .windows) .none else .@"async";
3333 const config = Compilation.Config.resolve(.{
src/libs/mingw.zig+3-3
......@@ -299,7 +299,7 @@ pub fn buildImportLib(comp: *Compilation, lib_name: []const u8) !void {
299299 var aro_comp = aro.Compilation.init(gpa, std.fs.cwd());
300300 defer aro_comp.deinit();
301301
302 aro_comp.target = target;
302 aro_comp.target = target.*;
303303
304304 const include_dir = try comp.dirs.zig_lib.join(arena, &.{ "libc", "mingw", "def-include" });
305305
......@@ -373,7 +373,7 @@ pub fn buildImportLib(comp: *Compilation, lib_name: []const u8) !void {
373373
374374pub fn libExists(
375375 allocator: Allocator,
376 target: std.Target,
376 target: *const std.Target,
377377 zig_lib_directory: Cache.Directory,
378378 lib_name: []const u8,
379379) !bool {
......@@ -389,7 +389,7 @@ pub fn libExists(
389389/// see if a .def file exists.
390390fn findDef(
391391 allocator: Allocator,
392 target: std.Target,
392 target: *const std.Target,
393393 zig_lib_directory: Cache.Directory,
394394 lib_name: []const u8,
395395) ![]u8 {
src/libs/musl.zig+1-1
......@@ -193,7 +193,7 @@ pub fn buildCrtFile(comp: *Compilation, in_crt_file: CrtFile, prog_node: std.Pro
193193 .link_libc = false,
194194 });
195195
196 const target = comp.root_mod.resolved_target.result;
196 const target = &comp.root_mod.resolved_target.result;
197197 const arch_name = std.zig.target.muslArchName(target.cpu.arch, target.abi);
198198 const time32 = for (time32_compat_arch_list) |time32_compat_arch| {
199199 if (mem.eql(u8, arch_name, time32_compat_arch)) break true;
src/libs/netbsd.zig+2-2
......@@ -58,7 +58,7 @@ pub fn buildCrtFile(comp: *Compilation, crt_file: CrtFile, prog_node: std.Progre
5858 defer arena_allocator.deinit();
5959 const arena = arena_allocator.allocator();
6060
61 const target = comp.root_mod.resolved_target.result;
61 const target = &comp.root_mod.resolved_target.result;
6262 const target_version = target.os.version_range.semver.min;
6363
6464 // In all cases in this function, we add the C compiler flags to
......@@ -353,7 +353,7 @@ pub const BuiltSharedObjects = struct {
353353 }
354354};
355355
356fn wordDirective(target: std.Target) []const u8 {
356fn wordDirective(target: *const std.Target) []const u8 {
357357 // Based on its description in the GNU `as` manual, you might assume that `.word` is sized
358358 // according to the target word size. But no; that would just make too much sense.
359359 return if (target.ptrBitWidth() == 64) ".quad" else ".long";
src/link.zig+6-6
......@@ -920,7 +920,7 @@ pub const File = struct {
920920 decl_val: InternPool.Index,
921921 decl_align: InternPool.Alignment,
922922 src_loc: Zcu.LazySrcLoc,
923 ) !codegen.GenResult {
923 ) !codegen.SymbolResult {
924924 assert(base.comp.zcu.?.llvm_object == null);
925925 switch (base.tag) {
926926 .lld => unreachable,
......@@ -1321,7 +1321,7 @@ pub fn doPrelinkTask(comp: *Compilation, task: PrelinkTask) void {
13211321 const prog_node = comp.link_prog_node.start("Parse Host libc", 0);
13221322 defer prog_node.end();
13231323
1324 const target = comp.root_mod.resolved_target.result;
1324 const target = &comp.root_mod.resolved_target.result;
13251325 const flags = target_util.libcFullLinkFlags(target);
13261326 const crt_dir = comp.libc_installation.?.crt_dir.?;
13271327 const sep = std.fs.path.sep_str;
......@@ -1670,7 +1670,7 @@ pub fn hashInputs(man: *Cache.Manifest, link_inputs: []const Input) !void {
16701670pub fn resolveInputs(
16711671 gpa: Allocator,
16721672 arena: Allocator,
1673 target: std.Target,
1673 target: *const std.Target,
16741674 /// This function mutates this array but does not take ownership.
16751675 /// Allocated with `gpa`.
16761676 unresolved_inputs: *std.ArrayListUnmanaged(UnresolvedInput),
......@@ -1914,7 +1914,7 @@ fn resolveLibInput(
19141914 ld_script_bytes: *std.ArrayListUnmanaged(u8),
19151915 lib_directory: Directory,
19161916 name_query: UnresolvedInput.NameQuery,
1917 target: std.Target,
1917 target: *const std.Target,
19181918 link_mode: std.builtin.LinkMode,
19191919 color: std.zig.Color,
19201920) Allocator.Error!ResolveLibInputResult {
......@@ -2028,7 +2028,7 @@ fn resolvePathInput(
20282028 resolved_inputs: *std.ArrayListUnmanaged(Input),
20292029 /// Allocated via `gpa`.
20302030 ld_script_bytes: *std.ArrayListUnmanaged(u8),
2031 target: std.Target,
2031 target: *const std.Target,
20322032 pq: UnresolvedInput.PathQuery,
20332033 color: std.zig.Color,
20342034) Allocator.Error!?ResolveLibInputResult {
......@@ -2070,7 +2070,7 @@ fn resolvePathInputLib(
20702070 resolved_inputs: *std.ArrayListUnmanaged(Input),
20712071 /// Allocated via `gpa`.
20722072 ld_script_bytes: *std.ArrayListUnmanaged(u8),
2073 target: std.Target,
2073 target: *const std.Target,
20742074 pq: UnresolvedInput.PathQuery,
20752075 link_mode: std.builtin.LinkMode,
20762076 color: std.zig.Color,
src/link/C.zig+2-2
......@@ -116,7 +116,7 @@ pub fn createEmpty(
116116 emit: Path,
117117 options: link.File.OpenOptions,
118118) !*C {
119 const target = comp.root_mod.resolved_target.result;
119 const target = &comp.root_mod.resolved_target.result;
120120 assert(target.ofmt == .c);
121121 const optimize_mode = comp.root_mod.optimize_mode;
122122 const use_lld = build_options.have_llvm and comp.config.use_lld;
......@@ -331,7 +331,7 @@ pub fn updateLineNumber(self: *C, pt: Zcu.PerThread, ti_id: InternPool.TrackedIn
331331 _ = ti_id;
332332}
333333
334fn abiDefines(self: *C, target: std.Target) !std.ArrayList(u8) {
334fn abiDefines(self: *C, target: *const std.Target) !std.ArrayList(u8) {
335335 const gpa = self.base.comp.gpa;
336336 var defines = std.ArrayList(u8).init(gpa);
337337 errdefer defines.deinit();
src/link/Coff.zig+48-33
......@@ -208,7 +208,7 @@ pub fn createEmpty(
208208 emit: Path,
209209 options: link.File.OpenOptions,
210210) !*Coff {
211 const target = comp.root_mod.resolved_target.result;
211 const target = &comp.root_mod.resolved_target.result;
212212 assert(target.ofmt == .coff);
213213 const optimize_mode = comp.root_mod.optimize_mode;
214214 const output_mode = comp.config.output_mode;
......@@ -752,7 +752,7 @@ fn shrinkAtom(coff: *Coff, atom_index: Atom.Index, new_block_size: u32) void {
752752 // capacity, insert a free list node for it.
753753}
754754
755fn writeAtom(coff: *Coff, atom_index: Atom.Index, code: []u8) !void {
755fn writeAtom(coff: *Coff, atom_index: Atom.Index, code: []u8, resolve_relocs: bool) !void {
756756 const atom = coff.getAtom(atom_index);
757757 const sym = atom.getSymbol(coff);
758758 const section = coff.sections.get(@intFromEnum(sym.section_number) - 1);
......@@ -774,11 +774,13 @@ fn writeAtom(coff: *Coff, atom_index: Atom.Index, code: []u8) !void {
774774 var relocs = std.ArrayList(*Relocation).init(gpa);
775775 defer relocs.deinit();
776776
777 if (coff.relocs.getPtr(atom_index)) |rels| {
778 try relocs.ensureTotalCapacityPrecise(rels.items.len);
779 for (rels.items) |*reloc| {
780 if (reloc.isResolvable(coff) and reloc.dirty) {
781 relocs.appendAssumeCapacity(reloc);
777 if (resolve_relocs) {
778 if (coff.relocs.getPtr(atom_index)) |rels| {
779 try relocs.ensureTotalCapacityPrecise(rels.items.len);
780 for (rels.items) |*reloc| {
781 if (reloc.isResolvable(coff) and reloc.dirty) {
782 relocs.appendAssumeCapacity(reloc);
783 }
782784 }
783785 }
784786 }
......@@ -812,12 +814,15 @@ fn writeAtom(coff: *Coff, atom_index: Atom.Index, code: []u8) !void {
812814 }
813815 }
814816
815 coff.resolveRelocs(atom_index, relocs.items, code, coff.image_base);
817 if (resolve_relocs) {
818 coff.resolveRelocs(atom_index, relocs.items, code, coff.image_base);
819 }
816820 try coff.pwriteAll(code, file_offset);
817
818 // Now we can mark the relocs as resolved.
819 while (relocs.pop()) |reloc| {
820 reloc.dirty = false;
821 if (resolve_relocs) {
822 // Now we can mark the relocs as resolved.
823 while (relocs.pop()) |reloc| {
824 reloc.dirty = false;
825 }
821826 }
822827}
823828
......@@ -914,6 +919,7 @@ fn writeOffsetTableEntry(coff: *Coff, index: usize) !void {
914919}
915920
916921fn markRelocsDirtyByTarget(coff: *Coff, target: SymbolWithLoc) void {
922 if (!coff.base.comp.incremental) return;
917923 // TODO: reverse-lookup might come in handy here
918924 for (coff.relocs.values()) |*relocs| {
919925 for (relocs.items) |*reloc| {
......@@ -924,6 +930,7 @@ fn markRelocsDirtyByTarget(coff: *Coff, target: SymbolWithLoc) void {
924930}
925931
926932fn markRelocsDirtyByAddress(coff: *Coff, addr: u32) void {
933 if (!coff.base.comp.incremental) return;
927934 const got_moved = blk: {
928935 const sect_id = coff.got_section_index orelse break :blk false;
929936 break :blk coff.sections.items(.header)[sect_id].virtual_address >= addr;
......@@ -1129,7 +1136,7 @@ fn lowerConst(
11291136 log.debug("allocated atom for {s} at 0x{x}", .{ name, atom.getSymbol(coff).value });
11301137 log.debug(" (required alignment 0x{x})", .{required_alignment});
11311138
1132 try coff.writeAtom(atom_index, code);
1139 try coff.writeAtom(atom_index, code, coff.base.comp.incremental);
11331140
11341141 return .{ .ok = atom_index };
11351142}
......@@ -1212,8 +1219,7 @@ fn updateLazySymbolAtom(
12121219 });
12131220 defer gpa.free(name);
12141221
1215 const atom = coff.getAtomPtr(atom_index);
1216 const local_sym_index = atom.getSymbolIndex().?;
1222 const local_sym_index = coff.getAtomPtr(atom_index).getSymbolIndex().?;
12171223
12181224 const src = Type.fromInterned(sym.ty).srcLocOrNull(zcu) orelse Zcu.LazySrcLoc.unneeded;
12191225 try codegen.generateLazySymbol(
......@@ -1228,12 +1234,13 @@ fn updateLazySymbolAtom(
12281234 );
12291235 const code = code_buffer.items;
12301236
1231 const code_len: u32 = @intCast(code.len);
1237 const atom = coff.getAtomPtr(atom_index);
12321238 const symbol = atom.getSymbolPtr(coff);
12331239 try coff.setSymbolName(symbol, name);
12341240 symbol.section_number = @enumFromInt(section_index + 1);
12351241 symbol.type = .{ .complex_type = .NULL, .base_type = .NULL };
12361242
1243 const code_len: u32 = @intCast(code.len);
12371244 const vaddr = try coff.allocateAtom(atom_index, code_len, @intCast(required_alignment.toByteUnits() orelse 0));
12381245 errdefer coff.freeAtom(atom_index);
12391246
......@@ -1244,7 +1251,7 @@ fn updateLazySymbolAtom(
12441251 symbol.value = vaddr;
12451252
12461253 try coff.addGotEntry(.{ .sym_index = local_sym_index });
1247 try coff.writeAtom(atom_index, code);
1254 try coff.writeAtom(atom_index, code, coff.base.comp.incremental);
12481255}
12491256
12501257pub fn getOrCreateAtomForLazySymbol(
......@@ -1328,7 +1335,7 @@ fn updateNavCode(
13281335
13291336 log.debug("updateNavCode {} 0x{x}", .{ nav.fqn.fmt(ip), nav_index });
13301337
1331 const target = zcu.navFileScope(nav_index).mod.?.resolved_target.result;
1338 const target = &zcu.navFileScope(nav_index).mod.?.resolved_target.result;
13321339 const required_alignment = switch (pt.navAlignment(nav_index)) {
13331340 .none => target_util.defaultFunctionAlignment(target),
13341341 else => |a| a.maxStrict(target_util.minFunctionAlignment(target)),
......@@ -1392,7 +1399,7 @@ fn updateNavCode(
13921399 };
13931400 }
13941401
1395 coff.writeAtom(atom_index, code) catch |err| switch (err) {
1402 coff.writeAtom(atom_index, code, coff.base.comp.incremental) catch |err| switch (err) {
13961403 error.OutOfMemory => return error.OutOfMemory,
13971404 else => |e| return coff.base.cgFail(nav_index, "failed to write atom: {s}", .{@errorName(e)}),
13981405 };
......@@ -1430,7 +1437,7 @@ pub fn updateExports(
14301437 const first_exp = export_indices[0].ptr(zcu);
14311438 const res = try coff.lowerUav(pt, uav, .none, first_exp.src);
14321439 switch (res) {
1433 .mcv => {},
1440 .sym_index => {},
14341441 .fail => |em| {
14351442 // TODO maybe it's enough to return an error here and let Module.processExportsInner
14361443 // handle the error?
......@@ -1677,7 +1684,7 @@ fn flushInner(coff: *Coff, arena: Allocator, tid: Zcu.PerThread.Id) !void {
16771684 const amt = try coff.base.file.?.preadAll(code.items, file_offset);
16781685 if (amt != code.items.len) return error.InputOutput;
16791686
1680 try coff.writeAtom(atom_index, code.items);
1687 try coff.writeAtom(atom_index, code.items, true);
16811688 }
16821689
16831690 // Update GOT if it got moved in memory.
......@@ -1715,6 +1722,21 @@ fn flushInner(coff: *Coff, arena: Allocator, tid: Zcu.PerThread.Id) !void {
17151722 }
17161723
17171724 assert(!coff.imports_count_dirty);
1725
1726 // hack for stage2_x86_64 + coff
1727 if (comp.compiler_rt_dyn_lib) |crt_file| {
1728 const compiler_rt_sub_path = try std.fs.path.join(gpa, &.{
1729 std.fs.path.dirname(coff.base.emit.sub_path) orelse "",
1730 std.fs.path.basename(crt_file.full_object_path.sub_path),
1731 });
1732 defer gpa.free(compiler_rt_sub_path);
1733 try crt_file.full_object_path.root_dir.handle.copyFile(
1734 crt_file.full_object_path.sub_path,
1735 coff.base.emit.root_dir.handle,
1736 compiler_rt_sub_path,
1737 .{},
1738 );
1739 }
17181740}
17191741
17201742pub fn getNavVAddr(
......@@ -1755,7 +1777,7 @@ pub fn lowerUav(
17551777 uav: InternPool.Index,
17561778 explicit_alignment: InternPool.Alignment,
17571779 src_loc: Zcu.LazySrcLoc,
1758) !codegen.GenResult {
1780) !codegen.SymbolResult {
17591781 const zcu = pt.zcu;
17601782 const gpa = zcu.gpa;
17611783 const val = Value.fromInterned(uav);
......@@ -1767,7 +1789,7 @@ pub fn lowerUav(
17671789 const atom = coff.getAtom(metadata.atom);
17681790 const existing_addr = atom.getSymbol(coff).value;
17691791 if (uav_alignment.check(existing_addr))
1770 return .{ .mcv = .{ .load_symbol = atom.getSymbolIndex().? } };
1792 return .{ .sym_index = atom.getSymbolIndex().? };
17711793 }
17721794
17731795 var name_buf: [32]u8 = undefined;
......@@ -1798,9 +1820,7 @@ pub fn lowerUav(
17981820 .atom = atom_index,
17991821 .section = coff.rdata_section_index.?,
18001822 });
1801 return .{ .mcv = .{
1802 .load_symbol = coff.getAtom(atom_index).getSymbolIndex().?,
1803 } };
1823 return .{ .sym_index = coff.getAtom(atom_index).getSymbolIndex().? };
18041824}
18051825
18061826pub fn getUavVAddr(
......@@ -2153,7 +2173,7 @@ fn writeDataDirectoriesHeaders(coff: *Coff) !void {
21532173}
21542174
21552175fn writeHeader(coff: *Coff) !void {
2156 const target = coff.base.comp.root_mod.resolved_target.result;
2176 const target = &coff.base.comp.root_mod.resolved_target.result;
21572177 const gpa = coff.base.comp.gpa;
21582178 var buffer = std.ArrayList(u8).init(gpa);
21592179 defer buffer.deinit();
......@@ -2464,11 +2484,6 @@ const GetOrPutGlobalPtrResult = struct {
24642484 value_ptr: *SymbolWithLoc,
24652485};
24662486
2467/// Used only for disambiguating local from global at relocation level.
2468/// TODO this must go away.
2469pub const global_symbol_bit: u32 = 0x80000000;
2470pub const global_symbol_mask: u32 = 0x7fffffff;
2471
24722487/// Return pointer to the global entry for `name` if one exists.
24732488/// Puts a new global entry for `name` if one doesn't exist, and
24742489/// returns a pointer to it.
......@@ -2800,7 +2815,7 @@ pub const Relocation = struct {
28002815 .ptr_width = coff.ptr_width,
28012816 };
28022817
2803 const target = coff.base.comp.root_mod.resolved_target.result;
2818 const target = &coff.base.comp.root_mod.resolved_target.result;
28042819 switch (target.cpu.arch) {
28052820 .aarch64 => reloc.resolveAarch64(ctx),
28062821 .x86, .x86_64 => reloc.resolveX86(ctx),
src/link/Dwarf.zig+4-4
......@@ -92,7 +92,7 @@ const DebugFrame = struct {
9292 };
9393
9494 fn headerBytes(dwarf: *Dwarf) u32 {
95 const target = dwarf.bin_file.comp.root_mod.resolved_target.result;
95 const target = &dwarf.bin_file.comp.root_mod.resolved_target.result;
9696 return @intCast(switch (dwarf.debug_frame.header.format) {
9797 .none => return 0,
9898 .debug_frame => dwarf.unitLengthBytes() + dwarf.sectionOffsetBytes() + 1 + "\x00".len + 1 + 1,
......@@ -2140,7 +2140,7 @@ fn padToIdeal(actual_size: anytype) @TypeOf(actual_size) {
21402140pub fn init(lf: *link.File, format: DW.Format) Dwarf {
21412141 const comp = lf.comp;
21422142 const gpa = comp.gpa;
2143 const target = comp.root_mod.resolved_target.result;
2143 const target = &comp.root_mod.resolved_target.result;
21442144 return .{
21452145 .gpa = gpa,
21462146 .bin_file = lf,
......@@ -2573,7 +2573,7 @@ fn initWipNavInner(
25732573 try wip_nav.infoAddrSym(sym_index, 0);
25742574 wip_nav.func_high_pc = @intCast(wip_nav.debug_info.items.len);
25752575 try diw.writeInt(u32, 0, dwarf.endian);
2576 const target = mod.resolved_target.result;
2576 const target = &mod.resolved_target.result;
25772577 try uleb128(diw, switch (nav.status.fully_resolved.alignment) {
25782578 .none => target_info.defaultFunctionAlignment(target),
25792579 else => |a| a.maxStrict(target_info.minFunctionAlignment(target)),
......@@ -4529,7 +4529,7 @@ pub fn flush(dwarf: *Dwarf, pt: Zcu.PerThread) FlushError!void {
45294529 dwarf.debug_aranges.section.dirty = false;
45304530 }
45314531 if (dwarf.debug_frame.section.dirty) {
4532 const target = dwarf.bin_file.comp.root_mod.resolved_target.result;
4532 const target = &dwarf.bin_file.comp.root_mod.resolved_target.result;
45334533 switch (dwarf.debug_frame.header.format) {
45344534 .none => {},
45354535 .debug_frame => unreachable,
src/link/Elf.zig+7-7
......@@ -196,7 +196,7 @@ pub fn createEmpty(
196196 emit: Path,
197197 options: link.File.OpenOptions,
198198) !*Elf {
199 const target = comp.root_mod.resolved_target.result;
199 const target = &comp.root_mod.resolved_target.result;
200200 assert(target.ofmt == .elf);
201201
202202 const use_llvm = comp.config.use_llvm;
......@@ -473,7 +473,7 @@ pub fn lowerUav(
473473 uav: InternPool.Index,
474474 explicit_alignment: InternPool.Alignment,
475475 src_loc: Zcu.LazySrcLoc,
476) !codegen.GenResult {
476) !codegen.SymbolResult {
477477 return self.zigObjectPtr().?.lowerUav(self, pt, uav, explicit_alignment, src_loc);
478478}
479479
......@@ -1073,7 +1073,7 @@ fn parseObject(self: *Elf, obj: link.Input.Object) !void {
10731073
10741074 const gpa = self.base.comp.gpa;
10751075 const diags = &self.base.comp.link_diags;
1076 const target = self.base.comp.root_mod.resolved_target.result;
1076 const target = &self.base.comp.root_mod.resolved_target.result;
10771077 const debug_fmt_strip = self.base.comp.config.debug_format == .strip;
10781078 const default_sym_version = self.default_sym_version;
10791079 const file_handles = &self.file_handles;
......@@ -1104,7 +1104,7 @@ fn parseArchive(
11041104 diags: *Diags,
11051105 file_handles: *std.ArrayListUnmanaged(File.Handle),
11061106 files: *std.MultiArrayList(File.Entry),
1107 target: std.Target,
1107 target: *const std.Target,
11081108 debug_fmt_strip: bool,
11091109 default_sym_version: elf.Versym,
11101110 objects: *std.ArrayListUnmanaged(File.Index),
......@@ -1139,7 +1139,7 @@ fn parseDso(
11391139 dso: link.Input.Dso,
11401140 shared_objects: *std.StringArrayHashMapUnmanaged(File.Index),
11411141 files: *std.MultiArrayList(File.Entry),
1142 target: std.Target,
1142 target: *const std.Target,
11431143) !void {
11441144 const tracy = trace(@src());
11451145 defer tracy.end();
......@@ -4121,8 +4121,8 @@ pub fn lsearch(comptime T: type, haystack: []const T, predicate: anytype) usize
41214121 return i;
41224122}
41234123
4124pub fn getTarget(self: Elf) std.Target {
4125 return self.base.comp.root_mod.resolved_target.result;
4124pub fn getTarget(self: *const Elf) *const std.Target {
4125 return &self.base.comp.root_mod.resolved_target.result;
41264126}
41274127
41284128fn requiresThunks(self: Elf) bool {
src/link/Elf/Object.zig+5-5
......@@ -69,7 +69,7 @@ pub fn parse(
6969 /// For error reporting purposes only.
7070 path: Path,
7171 handle: fs.File,
72 target: std.Target,
72 target: *const std.Target,
7373 debug_fmt_strip: bool,
7474 default_sym_version: elf.Versym,
7575) !void {
......@@ -98,7 +98,7 @@ pub fn parseCommon(
9898 diags: *Diags,
9999 path: Path,
100100 handle: fs.File,
101 target: std.Target,
101 target: *const std.Target,
102102) !void {
103103 const offset = if (self.archive) |ar| ar.offset else 0;
104104 const file_size = (try handle.stat()).size;
......@@ -182,7 +182,7 @@ pub fn parseCommon(
182182pub fn validateEFlags(
183183 diags: *Diags,
184184 path: Path,
185 target: std.Target,
185 target: *const std.Target,
186186 e_flags: elf.Word,
187187) !void {
188188 switch (target.cpu.arch) {
......@@ -263,7 +263,7 @@ fn initAtoms(
263263 path: Path,
264264 handle: fs.File,
265265 debug_fmt_strip: bool,
266 target: std.Target,
266 target: *const std.Target,
267267) !void {
268268 const shdrs = self.shdrs.items;
269269 try self.atoms.ensureTotalCapacityPrecise(gpa, shdrs.len);
......@@ -420,7 +420,7 @@ fn parseEhFrame(
420420 gpa: Allocator,
421421 handle: fs.File,
422422 shndx: u32,
423 target: std.Target,
423 target: *const std.Target,
424424) !void {
425425 const relocs_shndx = for (self.shdrs.items, 0..) |shdr, i| switch (shdr.sh_type) {
426426 elf.SHT_RELA => if (shdr.sh_info == shndx) break @as(u32, @intCast(i)),
src/link/Elf/SharedObject.zig+1-1
......@@ -96,7 +96,7 @@ pub fn parseHeader(
9696 file_path: Path,
9797 fs_file: std.fs.File,
9898 stat: Stat,
99 target: std.Target,
99 target: *const std.Target,
100100) !Header {
101101 var ehdr: elf.Elf64_Ehdr = undefined;
102102 {
src/link/Elf/ZigObject.zig+11-17
......@@ -997,7 +997,7 @@ pub fn lowerUav(
997997 uav: InternPool.Index,
998998 explicit_alignment: InternPool.Alignment,
999999 src_loc: Zcu.LazySrcLoc,
1000) !codegen.GenResult {
1000) !codegen.SymbolResult {
10011001 const zcu = pt.zcu;
10021002 const gpa = zcu.gpa;
10031003 const val = Value.fromInterned(uav);
......@@ -1010,7 +1010,7 @@ pub fn lowerUav(
10101010 const sym = self.symbol(metadata.symbol_index);
10111011 const existing_alignment = sym.atom(elf_file).?.alignment;
10121012 if (uav_alignment.order(existing_alignment).compare(.lte))
1013 return .{ .mcv = .{ .load_symbol = metadata.symbol_index } };
1013 return .{ .sym_index = metadata.symbol_index };
10141014 }
10151015
10161016 const osec = if (self.data_relro_index) |sym_index|
......@@ -1047,12 +1047,11 @@ pub fn lowerUav(
10471047 .{@errorName(e)},
10481048 ) },
10491049 };
1050 const sym_index = switch (res) {
1051 .ok => |sym_index| sym_index,
1052 .fail => |em| return .{ .fail = em },
1053 };
1054 try self.uavs.put(gpa, uav, .{ .symbol_index = sym_index, .allocated = true });
1055 return .{ .mcv = .{ .load_symbol = sym_index } };
1050 switch (res) {
1051 .sym_index => |sym_index| try self.uavs.put(gpa, uav, .{ .symbol_index = sym_index, .allocated = true }),
1052 .fail => {},
1053 }
1054 return res;
10561055}
10571056
10581057pub fn getOrCreateMetadataForLazySymbol(
......@@ -1271,7 +1270,7 @@ fn updateNavCode(
12711270
12721271 log.debug("updateNavCode {}({d})", .{ nav.fqn.fmt(ip), nav_index });
12731272
1274 const target = zcu.navFileScope(nav_index).mod.?.resolved_target.result;
1273 const target = &zcu.navFileScope(nav_index).mod.?.resolved_target.result;
12751274 const required_alignment = switch (pt.navAlignment(nav_index)) {
12761275 .none => target_util.defaultFunctionAlignment(target),
12771276 else => |a| a.maxStrict(target_util.minFunctionAlignment(target)),
......@@ -1692,11 +1691,6 @@ fn updateLazySymbol(
16921691 try elf_file.pwriteAll(code, atom_ptr.offset(elf_file));
16931692}
16941693
1695const LowerConstResult = union(enum) {
1696 ok: Symbol.Index,
1697 fail: *Zcu.ErrorMsg,
1698};
1699
17001694fn lowerConst(
17011695 self: *ZigObject,
17021696 elf_file: *Elf,
......@@ -1706,7 +1700,7 @@ fn lowerConst(
17061700 required_alignment: InternPool.Alignment,
17071701 output_section_index: u32,
17081702 src_loc: Zcu.LazySrcLoc,
1709) !LowerConstResult {
1703) !codegen.SymbolResult {
17101704 const gpa = pt.zcu.gpa;
17111705
17121706 var code_buffer: std.ArrayListUnmanaged(u8) = .empty;
......@@ -1740,7 +1734,7 @@ fn lowerConst(
17401734
17411735 try elf_file.pwriteAll(code, atom_ptr.offset(elf_file));
17421736
1743 return .{ .ok = sym_index };
1737 return .{ .sym_index = sym_index };
17441738}
17451739
17461740pub fn updateExports(
......@@ -1764,7 +1758,7 @@ pub fn updateExports(
17641758 const first_exp = export_indices[0].ptr(zcu);
17651759 const res = try self.lowerUav(elf_file, pt, uav, .none, first_exp.src);
17661760 switch (res) {
1767 .mcv => {},
1761 .sym_index => {},
17681762 .fail => |em| {
17691763 // TODO maybe it's enough to return an error here and let Zcu.processExportsInner
17701764 // handle the error?
src/link/Goff.zig+2-2
......@@ -26,7 +26,7 @@ pub fn createEmpty(
2626 emit: Path,
2727 options: link.File.OpenOptions,
2828) !*Goff {
29 const target = comp.root_mod.resolved_target.result;
29 const target = &comp.root_mod.resolved_target.result;
3030 const use_lld = build_options.have_llvm and comp.config.use_lld;
3131 const use_llvm = comp.config.use_llvm;
3232
......@@ -59,7 +59,7 @@ pub fn open(
5959 emit: Path,
6060 options: link.File.OpenOptions,
6161) !*Goff {
62 const target = comp.root_mod.resolved_target.result;
62 const target = &comp.root_mod.resolved_target.result;
6363 assert(target.ofmt == .goff);
6464 return createEmpty(arena, comp, emit, options);
6565}
src/link/Lld.zig+8-8
......@@ -30,7 +30,7 @@ const Coff = struct {
3030 dllmain_crt_startup: bool,
3131 },
3232 fn init(comp: *Compilation, options: link.File.OpenOptions) !Coff {
33 const target = comp.root_mod.resolved_target.result;
33 const target = &comp.root_mod.resolved_target.result;
3434 const output_mode = comp.config.output_mode;
3535 return .{
3636 .image_base = options.image_base orelse switch (output_mode) {
......@@ -103,7 +103,7 @@ pub const Elf = struct {
103103
104104 fn init(comp: *Compilation, options: link.File.OpenOptions) !Elf {
105105 const PtrWidth = enum { p32, p64 };
106 const target = comp.root_mod.resolved_target.result;
106 const target = &comp.root_mod.resolved_target.result;
107107 const output_mode = comp.config.output_mode;
108108 const is_dyn_lib = output_mode == .Lib and comp.config.link_mode == .dynamic;
109109 const ptr_width: PtrWidth = switch (target.ptrBitWidth()) {
......@@ -202,7 +202,7 @@ pub fn createEmpty(
202202 emit: Cache.Path,
203203 options: link.File.OpenOptions,
204204) !*Lld {
205 const target = comp.root_mod.resolved_target.result;
205 const target = &comp.root_mod.resolved_target.result;
206206 const output_mode = comp.config.output_mode;
207207 const optimize_mode = comp.root_mod.optimize_mode;
208208 const is_native_os = comp.root_mod.resolved_target.is_native_os;
......@@ -342,7 +342,7 @@ fn linkAsArchive(lld: *Lld, arena: Allocator) !void {
342342
343343 const llvm_bindings = @import("../codegen/llvm/bindings.zig");
344344 const llvm = @import("../codegen/llvm.zig");
345 const target = comp.root_mod.resolved_target.result;
345 const target = &comp.root_mod.resolved_target.result;
346346 llvm.initializeLLVMTarget(target.cpu.arch);
347347 const bad = llvm_bindings.WriteArchive(
348348 full_out_path_z,
......@@ -374,7 +374,7 @@ fn coffLink(lld: *Lld, arena: Allocator) !void {
374374 const is_dyn_lib = comp.config.link_mode == .dynamic and is_lib;
375375 const is_exe_or_dyn_lib = is_dyn_lib or comp.config.output_mode == .Exe;
376376 const link_in_crt = comp.config.link_libc and is_exe_or_dyn_lib;
377 const target = comp.root_mod.resolved_target.result;
377 const target = &comp.root_mod.resolved_target.result;
378378 const optimize_mode = comp.root_mod.optimize_mode;
379379 const entry_name: ?[]const u8 = switch (coff.entry) {
380380 // This logic isn't quite right for disabled or enabled. No point in fixing it
......@@ -811,7 +811,7 @@ fn elfLink(lld: *Lld, arena: Allocator) !void {
811811 const is_dyn_lib = link_mode == .dynamic and is_lib;
812812 const is_exe_or_dyn_lib = is_dyn_lib or output_mode == .Exe;
813813 const have_dynamic_linker = link_mode == .dynamic and is_exe_or_dyn_lib;
814 const target = comp.root_mod.resolved_target.result;
814 const target = &comp.root_mod.resolved_target.result;
815815 const compiler_rt_path: ?Cache.Path = blk: {
816816 if (comp.compiler_rt_lib) |x| break :blk x.full_object_path;
817817 if (comp.compiler_rt_obj) |x| break :blk x.full_object_path;
......@@ -1281,7 +1281,7 @@ fn elfLink(lld: *Lld, arena: Allocator) !void {
12811281 try spawnLld(comp, arena, argv.items);
12821282 }
12831283}
1284fn getLDMOption(target: std.Target) ?[]const u8 {
1284fn getLDMOption(target: *const std.Target) ?[]const u8 {
12851285 // This should only return emulations understood by LLD's parseEmulation().
12861286 return switch (target.cpu.arch) {
12871287 .aarch64 => switch (target.os.tag) {
......@@ -1364,7 +1364,7 @@ fn wasmLink(lld: *Lld, arena: Allocator) !void {
13641364 const shared_memory = comp.config.shared_memory;
13651365 const export_memory = comp.config.export_memory;
13661366 const import_memory = comp.config.import_memory;
1367 const target = comp.root_mod.resolved_target.result;
1367 const target = &comp.root_mod.resolved_target.result;
13681368 const base = &lld.base;
13691369 const wasm = &lld.ofmt.wasm;
13701370
src/link/MachO.zig+5-5
......@@ -163,7 +163,7 @@ pub fn createEmpty(
163163 emit: Path,
164164 options: link.File.OpenOptions,
165165) !*MachO {
166 const target = comp.root_mod.resolved_target.result;
166 const target = &comp.root_mod.resolved_target.result;
167167 assert(target.ofmt == .macho);
168168
169169 const gpa = comp.gpa;
......@@ -3092,7 +3092,7 @@ pub fn lowerUav(
30923092 uav: InternPool.Index,
30933093 explicit_alignment: InternPool.Alignment,
30943094 src_loc: Zcu.LazySrcLoc,
3095) !codegen.GenResult {
3095) !codegen.SymbolResult {
30963096 return self.getZigObject().?.lowerUav(self, pt, uav, explicit_alignment, src_loc);
30973097}
30983098
......@@ -3545,8 +3545,8 @@ pub fn markDirty(self: *MachO, sect_index: u8) void {
35453545 }
35463546}
35473547
3548pub fn getTarget(self: MachO) std.Target {
3549 return self.base.comp.root_mod.resolved_target.result;
3548pub fn getTarget(self: *const MachO) *const std.Target {
3549 return &self.base.comp.root_mod.resolved_target.result;
35503550}
35513551
35523552/// XNU starting with Big Sur running on arm64 is caching inodes of running binaries.
......@@ -4233,7 +4233,7 @@ pub const Platform = struct {
42334233 }
42344234 }
42354235
4236 pub fn fromTarget(target: std.Target) Platform {
4236 pub fn fromTarget(target: *const std.Target) Platform {
42374237 return .{
42384238 .os_tag = target.os.tag,
42394239 .abi = target.abi,
src/link/MachO/ZigObject.zig+11-19
......@@ -704,7 +704,7 @@ pub fn lowerUav(
704704 uav: InternPool.Index,
705705 explicit_alignment: Atom.Alignment,
706706 src_loc: Zcu.LazySrcLoc,
707) !codegen.GenResult {
707) !codegen.SymbolResult {
708708 const zcu = pt.zcu;
709709 const gpa = zcu.gpa;
710710 const val = Value.fromInterned(uav);
......@@ -716,7 +716,7 @@ pub fn lowerUav(
716716 const sym = self.symbols.items[metadata.symbol_index];
717717 const existing_alignment = sym.getAtom(macho_file).?.alignment;
718718 if (uav_alignment.order(existing_alignment).compare(.lte))
719 return .{ .mcv = .{ .load_symbol = sym.nlist_idx } };
719 return .{ .sym_index = metadata.symbol_index };
720720 }
721721
722722 var name_buf: [32]u8 = undefined;
......@@ -740,14 +740,11 @@ pub fn lowerUav(
740740 .{@errorName(e)},
741741 ) },
742742 };
743 const sym_index = switch (res) {
744 .ok => |sym_index| sym_index,
745 .fail => |em| return .{ .fail = em },
746 };
747 try self.uavs.put(gpa, uav, .{ .symbol_index = sym_index });
748 return .{ .mcv = .{
749 .load_symbol = self.symbols.items[sym_index].nlist_idx,
750 } };
743 switch (res) {
744 .sym_index => |sym_index| try self.uavs.put(gpa, uav, .{ .symbol_index = sym_index }),
745 .fail => {},
746 }
747 return res;
751748}
752749
753750fn freeNavMetadata(self: *ZigObject, macho_file: *MachO, sym_index: Symbol.Index) void {
......@@ -948,7 +945,7 @@ fn updateNavCode(
948945
949946 log.debug("updateNavCode {} 0x{x}", .{ nav.fqn.fmt(ip), nav_index });
950947
951 const target = zcu.navFileScope(nav_index).mod.?.resolved_target.result;
948 const target = &zcu.navFileScope(nav_index).mod.?.resolved_target.result;
952949 const required_alignment = switch (pt.navAlignment(nav_index)) {
953950 .none => target_util.defaultFunctionAlignment(target),
954951 else => |a| a.maxStrict(target_util.minFunctionAlignment(target)),
......@@ -1187,11 +1184,6 @@ fn getNavOutputSection(
11871184 return macho_file.zig_data_sect_index.?;
11881185}
11891186
1190const LowerConstResult = union(enum) {
1191 ok: Symbol.Index,
1192 fail: *Zcu.ErrorMsg,
1193};
1194
11951187fn lowerConst(
11961188 self: *ZigObject,
11971189 macho_file: *MachO,
......@@ -1201,7 +1193,7 @@ fn lowerConst(
12011193 required_alignment: Atom.Alignment,
12021194 output_section_index: u8,
12031195 src_loc: Zcu.LazySrcLoc,
1204) !LowerConstResult {
1196) !codegen.SymbolResult {
12051197 const gpa = macho_file.base.comp.gpa;
12061198
12071199 var code_buffer: std.ArrayListUnmanaged(u8) = .empty;
......@@ -1241,7 +1233,7 @@ fn lowerConst(
12411233 const file_offset = sect.offset + atom.value;
12421234 try macho_file.pwriteAll(code, file_offset);
12431235
1244 return .{ .ok = sym_index };
1236 return .{ .sym_index = sym_index };
12451237}
12461238
12471239pub fn updateExports(
......@@ -1265,7 +1257,7 @@ pub fn updateExports(
12651257 const first_exp = export_indices[0].ptr(zcu);
12661258 const res = try self.lowerUav(macho_file, pt, uav, .none, first_exp.src);
12671259 switch (res) {
1268 .mcv => {},
1260 .sym_index => {},
12691261 .fail => |em| {
12701262 // TODO maybe it's enough to return an error here and let Zcu.processExportsInner
12711263 // handle the error?
src/link/Plan9.zig+8-8
......@@ -184,7 +184,7 @@ pub const Atom = struct {
184184
185185 // asserts that self.got_index != null
186186 pub fn getOffsetTableAddress(self: Atom, plan9: *Plan9) u64 {
187 const target = plan9.base.comp.root_mod.resolved_target.result;
187 const target = &plan9.base.comp.root_mod.resolved_target.result;
188188 const ptr_bytes = @divExact(target.ptrBitWidth(), 8);
189189 const got_addr = plan9.bases.data;
190190 const got_index = self.got_index.?;
......@@ -278,7 +278,7 @@ pub fn createEmpty(
278278 emit: Path,
279279 options: link.File.OpenOptions,
280280) !*Plan9 {
281 const target = comp.root_mod.resolved_target.result;
281 const target = &comp.root_mod.resolved_target.result;
282282 const gpa = comp.gpa;
283283 const optimize_mode = comp.root_mod.optimize_mode;
284284 const output_mode = comp.config.output_mode;
......@@ -394,7 +394,7 @@ pub fn updateFunc(
394394
395395 const zcu = pt.zcu;
396396 const gpa = zcu.gpa;
397 const target = self.base.comp.root_mod.resolved_target.result;
397 const target = &self.base.comp.root_mod.resolved_target.result;
398398 const func = zcu.funcInfo(func_index);
399399
400400 const atom_idx = try self.seeNav(pt, func.owner_nav);
......@@ -583,7 +583,7 @@ pub fn flush(
583583 const comp = self.base.comp;
584584 const diags = &comp.link_diags;
585585 const gpa = comp.gpa;
586 const target = comp.root_mod.resolved_target.result;
586 const target = &comp.root_mod.resolved_target.result;
587587
588588 switch (comp.config.output_mode) {
589589 .Exe => {},
......@@ -1153,7 +1153,7 @@ pub fn open(
11531153 emit: Path,
11541154 options: link.File.OpenOptions,
11551155) !*Plan9 {
1156 const target = comp.root_mod.resolved_target.result;
1156 const target = &comp.root_mod.resolved_target.result;
11571157 const use_lld = build_options.have_llvm and comp.config.use_lld;
11581158 const use_llvm = comp.config.use_llvm;
11591159
......@@ -1358,7 +1358,7 @@ pub fn lowerUav(
13581358 uav: InternPool.Index,
13591359 explicit_alignment: InternPool.Alignment,
13601360 src_loc: Zcu.LazySrcLoc,
1361) !codegen.GenResult {
1361) !codegen.SymbolResult {
13621362 _ = explicit_alignment;
13631363 // example:
13641364 // const ty = mod.intern_pool.typeOf(decl_val).toType();
......@@ -1370,7 +1370,7 @@ pub fn lowerUav(
13701370 // ...
13711371 const gpa = self.base.comp.gpa;
13721372 const gop = try self.uavs.getOrPut(gpa, uav);
1373 if (gop.found_existing) return .{ .mcv = .{ .load_direct = gop.value_ptr.* } };
1373 if (gop.found_existing) return .{ .sym_index = gop.value_ptr.* };
13741374 const val = Value.fromInterned(uav);
13751375 const name = try std.fmt.allocPrint(gpa, "__anon_{d}", .{@intFromEnum(uav)});
13761376
......@@ -1395,7 +1395,7 @@ pub fn lowerUav(
13951395 .value = undefined,
13961396 .name = name,
13971397 };
1398 return .{ .mcv = .{ .load_direct = index } };
1398 return .{ .sym_index = index };
13991399}
14001400
14011401pub fn getUavVAddr(self: *Plan9, uav: InternPool.Index, reloc_info: link.File.RelocInfo) !u64 {
src/link/SpirV.zig+1-1
......@@ -58,7 +58,7 @@ pub fn createEmpty(
5858 options: link.File.OpenOptions,
5959) !*SpirV {
6060 const gpa = comp.gpa;
61 const target = comp.root_mod.resolved_target.result;
61 const target = &comp.root_mod.resolved_target.result;
6262
6363 assert(!comp.config.use_lld); // Caught by Compilation.Config.resolve
6464 assert(!comp.config.use_llvm); // Caught by Compilation.Config.resolve
src/link/Wasm.zig+1-1
......@@ -2943,7 +2943,7 @@ pub fn createEmpty(
29432943 emit: Path,
29442944 options: link.File.OpenOptions,
29452945) !*Wasm {
2946 const target = comp.root_mod.resolved_target.result;
2946 const target = &comp.root_mod.resolved_target.result;
29472947 assert(target.ofmt == .wasm);
29482948
29492949 const use_llvm = comp.config.use_llvm;
src/link/Xcoff.zig+2-2
......@@ -26,7 +26,7 @@ pub fn createEmpty(
2626 emit: Path,
2727 options: link.File.OpenOptions,
2828) !*Xcoff {
29 const target = comp.root_mod.resolved_target.result;
29 const target = &comp.root_mod.resolved_target.result;
3030 const use_lld = build_options.have_llvm and comp.config.use_lld;
3131 const use_llvm = comp.config.use_llvm;
3232
......@@ -59,7 +59,7 @@ pub fn open(
5959 emit: Path,
6060 options: link.File.OpenOptions,
6161) !*Xcoff {
62 const target = comp.root_mod.resolved_target.result;
62 const target = &comp.root_mod.resolved_target.result;
6363 assert(target.ofmt == .xcoff);
6464 return createEmpty(arena, comp, emit, options);
6565}
src/main.zig+7-7
......@@ -340,7 +340,7 @@ fn mainArgs(gpa: Allocator, arena: Allocator, args: []const []const u8) !void {
340340 dev.check(.targets_command);
341341 const host = std.zig.resolveTargetQueryOrFatal(.{});
342342 const stdout = io.getStdOut().writer();
343 return @import("print_targets.zig").cmdTargets(arena, cmd_args, stdout, host);
343 return @import("print_targets.zig").cmdTargets(arena, cmd_args, stdout, &host);
344344 } else if (mem.eql(u8, cmd, "version")) {
345345 dev.check(.version_command);
346346 try std.io.getStdOut().writeAll(build_options.version ++ "\n");
......@@ -3086,7 +3086,7 @@ fn buildOutputType(
30863086 else => main_mod,
30873087 };
30883088
3089 const target = main_mod.resolved_target.result;
3089 const target = &main_mod.resolved_target.result;
30903090
30913091 if (target.cpu.arch == .arc or target.cpu.arch.isNvptx()) {
30923092 if (emit_bin != .no and create_module.resolved_options.use_llvm) {
......@@ -3655,7 +3655,7 @@ fn buildOutputType(
36553655 test_exec_args.items,
36563656 self_exe_path,
36573657 arg_mode,
3658 &target,
3658 target,
36593659 &comp_destroyed,
36603660 all_args,
36613661 runtime_args_start,
......@@ -3800,12 +3800,12 @@ fn createModule(
38003800 // This block is for initializing the fields of
38013801 // `Compilation.Config.Options` that require knowledge of the
38023802 // target (which was just now resolved for the root module above).
3803 const resolved_target = cli_mod.inherited.resolved_target.?;
3804 create_module.opts.resolved_target = resolved_target;
3803 const resolved_target = &cli_mod.inherited.resolved_target.?;
3804 create_module.opts.resolved_target = resolved_target.*;
38053805 create_module.opts.root_optimize_mode = cli_mod.inherited.optimize_mode;
38063806 create_module.opts.root_strip = cli_mod.inherited.strip;
38073807 create_module.opts.root_error_tracing = cli_mod.inherited.error_tracing;
3808 const target = resolved_target.result;
3808 const target = &resolved_target.result;
38093809
38103810 // First, remove libc, libc++, and compiler_rt libraries from the system libraries list.
38113811 // We need to know whether the set of system libraries contains anything besides these
......@@ -6482,7 +6482,7 @@ fn warnAboutForeignBinaries(
64826482 const host_query: std.Target.Query = .{};
64836483 const host_target = std.zig.resolveTargetQueryOrFatal(host_query);
64846484
6485 switch (std.zig.system.getExternalExecutor(host_target, target, .{ .link_libc = link_libc })) {
6485 switch (std.zig.system.getExternalExecutor(&host_target, target, .{ .link_libc = link_libc })) {
64866486 .native => return,
64876487 .rosetta => {
64886488 const host_name = try host_target.zigTriple(arena);
src/print_targets.zig+1-1
......@@ -16,7 +16,7 @@ pub fn cmdTargets(
1616 args: []const []const u8,
1717 /// Output stream
1818 stdout: anytype,
19 native_target: Target,
19 native_target: *const Target,
2020) !void {
2121 _ = args;
2222 var zig_lib_directory = introspect.findZigLibDir(allocator) catch |err| {
src/target.zig+45-42
......@@ -9,7 +9,7 @@ const Feature = @import("Zcu.zig").Feature;
99
1010pub const default_stack_protector_buffer_size = 4;
1111
12pub fn cannotDynamicLink(target: std.Target) bool {
12pub fn cannotDynamicLink(target: *const std.Target) bool {
1313 return switch (target.os.tag) {
1414 .freestanding => true,
1515 else => target.cpu.arch.isSpirV(),
......@@ -19,15 +19,15 @@ pub fn cannotDynamicLink(target: std.Target) bool {
1919/// On Darwin, we always link libSystem which contains libc.
2020/// Similarly on FreeBSD and NetBSD we always link system libc
2121/// since this is the stable syscall interface.
22pub fn osRequiresLibC(target: std.Target) bool {
22pub fn osRequiresLibC(target: *const std.Target) bool {
2323 return target.os.requiresLibC();
2424}
2525
26pub fn libCNeedsLibUnwind(target: std.Target, link_mode: std.builtin.LinkMode) bool {
26pub fn libCNeedsLibUnwind(target: *const std.Target, link_mode: std.builtin.LinkMode) bool {
2727 return target.isGnuLibC() and link_mode == .static;
2828}
2929
30pub fn libCxxNeedsLibUnwind(target: std.Target) bool {
30pub fn libCxxNeedsLibUnwind(target: *const std.Target) bool {
3131 return switch (target.os.tag) {
3232 .macos,
3333 .ios,
......@@ -44,14 +44,14 @@ pub fn libCxxNeedsLibUnwind(target: std.Target) bool {
4444}
4545
4646/// This function returns whether non-pic code is completely invalid on the given target.
47pub fn requiresPIC(target: std.Target, linking_libc: bool) bool {
47pub fn requiresPIC(target: *const std.Target, linking_libc: bool) bool {
4848 return target.abi.isAndroid() or
4949 target.os.tag == .windows or target.os.tag == .uefi or
5050 osRequiresLibC(target) or
5151 (linking_libc and target.isGnuLibC());
5252}
5353
54pub fn picLevel(target: std.Target) u32 {
54pub fn picLevel(target: *const std.Target) u32 {
5555 // MIPS always uses PIC level 1; other platforms vary in their default PIC levels, but they
5656 // support both level 1 and 2, in which case we prefer 2.
5757 return if (target.cpu.arch.isMIPS()) 1 else 2;
......@@ -59,7 +59,7 @@ pub fn picLevel(target: std.Target) u32 {
5959
6060/// This is not whether the target supports Position Independent Code, but whether the -fPIC
6161/// C compiler argument is valid to Clang.
62pub fn supports_fpic(target: std.Target) bool {
62pub fn supports_fpic(target: *const std.Target) bool {
6363 return switch (target.os.tag) {
6464 .windows,
6565 .uefi,
......@@ -68,12 +68,12 @@ pub fn supports_fpic(target: std.Target) bool {
6868 };
6969}
7070
71pub fn alwaysSingleThreaded(target: std.Target) bool {
71pub fn alwaysSingleThreaded(target: *const std.Target) bool {
7272 _ = target;
7373 return false;
7474}
7575
76pub fn defaultSingleThreaded(target: std.Target) bool {
76pub fn defaultSingleThreaded(target: *const std.Target) bool {
7777 switch (target.cpu.arch) {
7878 .wasm32, .wasm64 => return true,
7979 else => {},
......@@ -85,7 +85,7 @@ pub fn defaultSingleThreaded(target: std.Target) bool {
8585 return false;
8686}
8787
88pub fn hasValgrindSupport(target: std.Target, backend: std.builtin.CompilerBackend) bool {
88pub fn hasValgrindSupport(target: *const std.Target, backend: std.builtin.CompilerBackend) bool {
8989 // We can't currently output the necessary Valgrind client request assembly when using the C
9090 // backend and compiling with an MSVC-like compiler.
9191 const ofmt_c_msvc = (target.abi == .msvc or target.abi == .itanium) and target.ofmt == .c;
......@@ -133,7 +133,7 @@ pub fn hasValgrindSupport(target: std.Target, backend: std.builtin.CompilerBacke
133133/// The set of targets that LLVM has non-experimental support for.
134134/// Used to select between LLVM backend and self-hosted backend when compiling in
135135/// release modes.
136pub fn hasLlvmSupport(target: std.Target, ofmt: std.Target.ObjectFormat) bool {
136pub fn hasLlvmSupport(target: *const std.Target, ofmt: std.Target.ObjectFormat) bool {
137137 switch (ofmt) {
138138 // LLVM does not support these object formats:
139139 .c,
......@@ -221,7 +221,7 @@ pub fn hasLldSupport(ofmt: std.Target.ObjectFormat) bool {
221221/// Used to select between LLVM backend and self-hosted backend when compiling in
222222/// debug mode. A given target should only return true here if it is passing greater
223223/// than or equal to the number of behavior tests as the respective LLVM backend.
224pub fn selfHostedBackendIsAsRobustAsLlvm(target: std.Target) bool {
224pub fn selfHostedBackendIsAsRobustAsLlvm(target: *const std.Target) bool {
225225 if (target.cpu.arch.isSpirV()) return true;
226226 if (target.cpu.arch == .x86_64 and target.ptrBitWidth() == 64) return switch (target.ofmt) {
227227 .elf, .macho => true,
......@@ -230,12 +230,12 @@ pub fn selfHostedBackendIsAsRobustAsLlvm(target: std.Target) bool {
230230 return false;
231231}
232232
233pub fn supportsStackProbing(target: std.Target) bool {
233pub fn supportsStackProbing(target: *const std.Target) bool {
234234 return target.os.tag != .windows and target.os.tag != .uefi and
235235 (target.cpu.arch == .x86 or target.cpu.arch == .x86_64);
236236}
237237
238pub fn supportsStackProtector(target: std.Target, backend: std.builtin.CompilerBackend) bool {
238pub fn supportsStackProtector(target: *const std.Target, backend: std.builtin.CompilerBackend) bool {
239239 switch (target.os.tag) {
240240 .plan9 => return false,
241241 else => {},
......@@ -250,20 +250,20 @@ pub fn supportsStackProtector(target: std.Target, backend: std.builtin.CompilerB
250250 };
251251}
252252
253pub fn clangSupportsStackProtector(target: std.Target) bool {
253pub fn clangSupportsStackProtector(target: *const std.Target) bool {
254254 return switch (target.cpu.arch) {
255255 .spirv, .spirv32, .spirv64 => return false,
256256 else => true,
257257 };
258258}
259259
260pub fn libcProvidesStackProtector(target: std.Target) bool {
260pub fn libcProvidesStackProtector(target: *const std.Target) bool {
261261 return !target.isMinGW() and target.os.tag != .wasi and !target.cpu.arch.isSpirV();
262262}
263263
264264/// Returns true if `@returnAddress()` is supported by the target and has a
265265/// reasonably performant implementation for the requested optimization mode.
266pub fn supportsReturnAddress(target: std.Target, optimize: std.builtin.OptimizeMode) bool {
266pub fn supportsReturnAddress(target: *const std.Target, optimize: std.builtin.OptimizeMode) bool {
267267 return switch (target.cpu.arch) {
268268 // Emscripten currently implements `emscripten_return_address()` by calling
269269 // out into JavaScript and parsing a stack trace, which introduces significant
......@@ -299,7 +299,7 @@ pub fn classifyCompilerRtLibName(name: []const u8) CompilerRtClassification {
299299 return .none;
300300}
301301
302pub fn hasDebugInfo(target: std.Target) bool {
302pub fn hasDebugInfo(target: *const std.Target) bool {
303303 return switch (target.cpu.arch) {
304304 // TODO: We should make newer PTX versions depend on older ones so we'd just check `ptx75`.
305305 .nvptx, .nvptx64 => target.cpu.hasAny(.nvptx, &.{
......@@ -321,7 +321,7 @@ pub fn hasDebugInfo(target: std.Target) bool {
321321 };
322322}
323323
324pub fn defaultCompilerRtOptimizeMode(target: std.Target) std.builtin.OptimizeMode {
324pub fn defaultCompilerRtOptimizeMode(target: *const std.Target) std.builtin.OptimizeMode {
325325 if (target.cpu.arch.isWasm() and target.os.tag == .freestanding) {
326326 return .ReleaseSmall;
327327 } else {
......@@ -329,7 +329,7 @@ pub fn defaultCompilerRtOptimizeMode(target: std.Target) std.builtin.OptimizeMod
329329 }
330330}
331331
332pub fn canBuildLibCompilerRt(target: std.Target, use_llvm: bool, have_llvm: bool) bool {
332pub fn canBuildLibCompilerRt(target: *const std.Target, use_llvm: bool, have_llvm: bool) bool {
333333 switch (target.os.tag) {
334334 .plan9 => return false,
335335 else => {},
......@@ -342,12 +342,15 @@ pub fn canBuildLibCompilerRt(target: std.Target, use_llvm: bool, have_llvm: bool
342342 }
343343 return switch (zigBackend(target, use_llvm)) {
344344 .stage2_llvm => true,
345 .stage2_x86_64 => if (target.ofmt == .elf or target.ofmt == .macho) true else have_llvm,
345 .stage2_x86_64 => switch (target.ofmt) {
346 .elf, .macho => true,
347 else => have_llvm,
348 },
346349 else => have_llvm,
347350 };
348351}
349352
350pub fn canBuildLibUbsanRt(target: std.Target) bool {
353pub fn canBuildLibUbsanRt(target: *const std.Target) bool {
351354 switch (target.cpu.arch) {
352355 .spirv, .spirv32, .spirv64 => return false,
353356 // Remove this once https://github.com/ziglang/zig/issues/23715 is fixed
......@@ -356,7 +359,7 @@ pub fn canBuildLibUbsanRt(target: std.Target) bool {
356359 }
357360}
358361
359pub fn hasRedZone(target: std.Target) bool {
362pub fn hasRedZone(target: *const std.Target) bool {
360363 return switch (target.cpu.arch) {
361364 .aarch64,
362365 .aarch64_be,
......@@ -372,7 +375,7 @@ pub fn hasRedZone(target: std.Target) bool {
372375 };
373376}
374377
375pub fn libcFullLinkFlags(target: std.Target) []const []const u8 {
378pub fn libcFullLinkFlags(target: *const std.Target) []const []const u8 {
376379 // The linking order of these is significant and should match the order other
377380 // c compilers such as gcc or clang use.
378381 const result: []const []const u8 = switch (target.os.tag) {
......@@ -389,14 +392,14 @@ pub fn libcFullLinkFlags(target: std.Target) []const []const u8 {
389392 return result;
390393}
391394
392pub fn clangMightShellOutForAssembly(target: std.Target) bool {
395pub fn clangMightShellOutForAssembly(target: *const std.Target) bool {
393396 // Clang defaults to using the system assembler in some cases.
394397 return target.cpu.arch.isNvptx() or target.cpu.arch == .xcore;
395398}
396399
397400/// Each backend architecture in Clang has a different codepath which may or may not
398401/// support an -mcpu flag.
399pub fn clangAssemblerSupportsMcpuArg(target: std.Target) bool {
402pub fn clangAssemblerSupportsMcpuArg(target: *const std.Target) bool {
400403 return switch (target.cpu.arch) {
401404 .arm, .armeb, .thumb, .thumbeb => true,
402405 else => false,
......@@ -405,7 +408,7 @@ pub fn clangAssemblerSupportsMcpuArg(target: std.Target) bool {
405408
406409/// Some experimental or poorly-maintained LLVM targets do not properly process CPU models in their
407410/// Clang driver code. For these, we should omit the `-Xclang -target-cpu -Xclang <model>` flags.
408pub fn clangSupportsTargetCpuArg(target: std.Target) bool {
411pub fn clangSupportsTargetCpuArg(target: *const std.Target) bool {
409412 return switch (target.cpu.arch) {
410413 .arc,
411414 .msp430,
......@@ -417,7 +420,7 @@ pub fn clangSupportsTargetCpuArg(target: std.Target) bool {
417420 };
418421}
419422
420pub fn clangSupportsFloatAbiArg(target: std.Target) bool {
423pub fn clangSupportsFloatAbiArg(target: *const std.Target) bool {
421424 return switch (target.cpu.arch) {
422425 .arm,
423426 .armeb,
......@@ -442,7 +445,7 @@ pub fn clangSupportsFloatAbiArg(target: std.Target) bool {
442445 };
443446}
444447
445pub fn clangSupportsNoImplicitFloatArg(target: std.Target) bool {
448pub fn clangSupportsNoImplicitFloatArg(target: *const std.Target) bool {
446449 return switch (target.cpu.arch) {
447450 .aarch64,
448451 .aarch64_be,
......@@ -459,7 +462,7 @@ pub fn clangSupportsNoImplicitFloatArg(target: std.Target) bool {
459462 };
460463}
461464
462pub fn defaultUnwindTables(target: std.Target, libunwind: bool, libtsan: bool) std.builtin.UnwindTables {
465pub fn defaultUnwindTables(target: *const std.Target, libunwind: bool, libtsan: bool) std.builtin.UnwindTables {
463466 if (target.os.tag == .windows) {
464467 // The old 32-bit x86 variant of SEH doesn't use tables.
465468 return if (target.cpu.arch != .x86) .@"async" else .none;
......@@ -472,7 +475,7 @@ pub fn defaultUnwindTables(target: std.Target, libunwind: bool, libtsan: bool) s
472475}
473476
474477pub fn defaultAddressSpace(
475 target: std.Target,
478 target: *const std.Target,
476479 context: enum {
477480 /// Query the default address space for global constant values.
478481 global_constant,
......@@ -492,7 +495,7 @@ pub fn defaultAddressSpace(
492495
493496/// Returns true if pointers in `from` can be converted to a pointer in `to`.
494497pub fn addrSpaceCastIsValid(
495 target: std.Target,
498 target: *const std.Target,
496499 from: AddressSpace,
497500 to: AddressSpace,
498501) bool {
......@@ -512,7 +515,7 @@ pub fn addrSpaceCastIsValid(
512515/// a number of restrictions on usage of such pointers. For example, a logical pointer may not be
513516/// part of a merge (result of a branch) and may not be stored in memory at all. This function returns
514517/// for a particular architecture and address space wether such pointers are logical.
515pub fn arePointersLogical(target: std.Target, as: AddressSpace) bool {
518pub fn arePointersLogical(target: *const std.Target, as: AddressSpace) bool {
516519 if (target.os.tag != .vulkan) return false;
517520
518521 return switch (as) {
......@@ -537,7 +540,7 @@ pub fn arePointersLogical(target: std.Target, as: AddressSpace) bool {
537540 };
538541}
539542
540pub fn isDynamicAMDGCNFeature(target: std.Target, feature: std.Target.Cpu.Feature) bool {
543pub fn isDynamicAMDGCNFeature(target: *const std.Target, feature: std.Target.Cpu.Feature) bool {
541544 if (target.cpu.arch != .amdgcn) return false;
542545
543546 const sramecc_only = &[_]*const std.Target.Cpu.Model{
......@@ -585,7 +588,7 @@ pub fn isDynamicAMDGCNFeature(target: std.Target, feature: std.Target.Cpu.Featur
585588 return false;
586589}
587590
588pub fn llvmMachineAbi(target: std.Target) ?[:0]const u8 {
591pub fn llvmMachineAbi(target: *const std.Target) ?[:0]const u8 {
589592 // LLD does not support ELFv1. Rather than having LLVM produce ELFv1 code and then linking it
590593 // into a broken ELFv2 binary, just force LLVM to use ELFv2 as well. This will break when glibc
591594 // is linked as glibc only supports ELFv2 for little endian, but there's nothing we can do about
......@@ -642,7 +645,7 @@ pub fn llvmMachineAbi(target: std.Target) ?[:0]const u8 {
642645
643646/// This function returns 1 if function alignment is not observable or settable. Note that this
644647/// value will not necessarily match the backend's default function alignment (e.g. for LLVM).
645pub fn defaultFunctionAlignment(target: std.Target) Alignment {
648pub fn defaultFunctionAlignment(target: *const std.Target) Alignment {
646649 // Overrides of the minimum for performance.
647650 return switch (target.cpu.arch) {
648651 .csky,
......@@ -669,7 +672,7 @@ pub fn defaultFunctionAlignment(target: std.Target) Alignment {
669672}
670673
671674/// This function returns 1 if function alignment is not observable or settable.
672pub fn minFunctionAlignment(target: std.Target) Alignment {
675pub fn minFunctionAlignment(target: *const std.Target) Alignment {
673676 return switch (target.cpu.arch) {
674677 .riscv32,
675678 .riscv64,
......@@ -712,7 +715,7 @@ pub fn minFunctionAlignment(target: std.Target) Alignment {
712715 };
713716}
714717
715pub fn supportsFunctionAlignment(target: std.Target) bool {
718pub fn supportsFunctionAlignment(target: *const std.Target) bool {
716719 return switch (target.cpu.arch) {
717720 .nvptx,
718721 .nvptx64,
......@@ -726,7 +729,7 @@ pub fn supportsFunctionAlignment(target: std.Target) bool {
726729 };
727730}
728731
729pub fn functionPointerMask(target: std.Target) ?u64 {
732pub fn functionPointerMask(target: *const std.Target) ?u64 {
730733 // 32-bit Arm uses the LSB to mean that the target function contains Thumb code.
731734 // MIPS uses the LSB to mean that the target function contains MIPS16/microMIPS code.
732735 return if (target.cpu.arch.isArm() or target.cpu.arch.isMIPS32())
......@@ -737,7 +740,7 @@ pub fn functionPointerMask(target: std.Target) ?u64 {
737740 null;
738741}
739742
740pub fn supportsTailCall(target: std.Target, backend: std.builtin.CompilerBackend) bool {
743pub fn supportsTailCall(target: *const std.Target, backend: std.builtin.CompilerBackend) bool {
741744 switch (backend) {
742745 .stage2_llvm => return @import("codegen/llvm.zig").supportsTailCall(target),
743746 .stage2_c => return true,
......@@ -745,7 +748,7 @@ pub fn supportsTailCall(target: std.Target, backend: std.builtin.CompilerBackend
745748 }
746749}
747750
748pub fn supportsThreads(target: std.Target, backend: std.builtin.CompilerBackend) bool {
751pub fn supportsThreads(target: *const std.Target, backend: std.builtin.CompilerBackend) bool {
749752 return switch (backend) {
750753 .stage2_powerpc => true,
751754 .stage2_x86_64 => target.ofmt == .macho or target.ofmt == .elf,
......@@ -804,7 +807,7 @@ pub fn fnCallConvAllowsZigTypes(cc: std.builtin.CallingConvention) bool {
804807 };
805808}
806809
807pub fn zigBackend(target: std.Target, use_llvm: bool) std.builtin.CompilerBackend {
810pub fn zigBackend(target: *const std.Target, use_llvm: bool) std.builtin.CompilerBackend {
808811 if (use_llvm) return .stage2_llvm;
809812 if (target.ofmt == .c) return .stage2_c;
810813 return switch (target.cpu.arch) {
test/behavior/abs.zig-2
......@@ -156,7 +156,6 @@ test "@abs floats" {
156156 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
157157 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
158158 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
159 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
160159
161160 try comptime testAbsFloats(f16);
162161 if (builtin.zig_backend != .stage2_riscv64) try testAbsFloats(f16);
......@@ -341,7 +340,6 @@ test "@abs float vectors" {
341340 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
342341 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
343342 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
344 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
345343
346344 @setEvalBranchQuota(2000);
347345 try comptime testAbsFloatVectors(f16, 1);
test/behavior/basic.zig+1-14
......@@ -302,19 +302,6 @@ test "array mult operator" {
302302 try expect(mem.eql(u8, "ab" ** 5, "ababababab"));
303303}
304304
305const OpaqueA = opaque {};
306const OpaqueB = opaque {};
307
308test "opaque types" {
309 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
310 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
311
312 try expect(*OpaqueA != *OpaqueB);
313
314 try expect(mem.eql(u8, @typeName(OpaqueA), "behavior.basic.OpaqueA"));
315 try expect(mem.eql(u8, @typeName(OpaqueB), "behavior.basic.OpaqueB"));
316}
317
318305const global_a: i32 = 1234;
319306const global_b: *const i32 = &global_a;
320307const global_c: *const f32 = @as(*const f32, @ptrCast(global_b));
......@@ -447,6 +434,7 @@ fn f2(x: bool) []const u8 {
447434 return (if (x) &fA else &fB)();
448435}
449436
437const OpaqueA = opaque {};
450438test "variable is allowed to be a pointer to an opaque type" {
451439 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
452440
......@@ -1199,7 +1187,6 @@ test "arrays and vectors with big integers" {
11991187 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
12001188 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest;
12011189 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
1202 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
12031190 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest;
12041191 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
12051192 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
test/behavior/bit_shifting.zig-1
......@@ -166,7 +166,6 @@ test "Saturating Shift Left" {
166166 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
167167 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
168168 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest;
169 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
170169
171170 const S = struct {
172171 fn shlSat(x: anytype, y: std.math.Log2Int(@TypeOf(x))) @TypeOf(x) {
test/behavior/bitcast.zig-3
......@@ -302,7 +302,6 @@ test "@bitCast packed struct of floats" {
302302 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
303303 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
304304 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
305 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
306305 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
307306
308307 const Foo = packed struct {
......@@ -342,7 +341,6 @@ test "comptime @bitCast packed struct to int and back" {
342341 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
343342 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
344343 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
345 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
346344
347345 const S = packed struct {
348346 void: void = {},
......@@ -426,7 +424,6 @@ test "bitcast nan float does not modify signaling bit" {
426424 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
427425 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
428426 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
429 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
430427 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
431428
432429 const snan_u16: u16 = 0x7D00;
test/behavior/cast.zig+1-10
......@@ -126,7 +126,6 @@ test "@floatFromInt(f80)" {
126126 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
127127 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
128128 if (builtin.zig_backend == .stage2_c and builtin.cpu.arch.isArm()) return error.SkipZigTest;
129 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
130129 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
131130
132131 const S = struct {
......@@ -1406,7 +1405,6 @@ test "cast f16 to wider types" {
14061405 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
14071406 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
14081407 if (builtin.zig_backend == .stage2_c and builtin.cpu.arch.isArm()) return error.SkipZigTest;
1409 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
14101408 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
14111409
14121410 const S = struct {
......@@ -1427,7 +1425,6 @@ test "cast f128 to narrower types" {
14271425 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
14281426 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
14291427 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
1430 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
14311428 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
14321429
14331430 const S = struct {
......@@ -1521,7 +1518,7 @@ test "coerce between pointers of compatible differently-named floats" {
15211518 if (builtin.zig_backend == .stage2_c and builtin.os.tag == .windows and !builtin.link_libc) return error.SkipZigTest;
15221519 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
15231520 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
1524 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
1521 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt == .coff) return error.SkipZigTest;
15251522 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
15261523
15271524 if (builtin.zig_backend == .stage2_llvm and builtin.os.tag == .windows) {
......@@ -1727,7 +1724,6 @@ test "peer type resolution: float and comptime-known fixed-width integer" {
17271724 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
17281725 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
17291726 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1730 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
17311727
17321728 const i: u8 = 100;
17331729 var f: f32 = 1.234;
......@@ -2477,7 +2473,6 @@ test "@floatCast on vector" {
24772473 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
24782474 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
24792475 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
2480 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
24812476 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
24822477
24832478 const S = struct {
......@@ -2569,7 +2564,6 @@ test "@floatFromInt on vector" {
25692564 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
25702565 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
25712566 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
2572 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
25732567 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
25742568
25752569 const S = struct {
......@@ -2626,8 +2620,6 @@ test "@intFromBool on vector" {
26262620}
26272621
26282622test "numeric coercions with undefined" {
2629 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
2630
26312623 const from: i32 = undefined;
26322624 var to: f32 = from;
26332625 to = @floatFromInt(from);
......@@ -2648,7 +2640,6 @@ test "@as does not corrupt values with incompatible representations" {
26482640 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
26492641 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
26502642 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
2651 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
26522643
26532644 const x: f32 = @as(f16, blk: {
26542645 if (false) {
test/behavior/eval.zig-1
......@@ -526,7 +526,6 @@ test "runtime 128 bit integer division" {
526526 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
527527 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
528528 if (builtin.zig_backend == .stage2_c and builtin.cpu.arch.isArm()) return error.SkipZigTest;
529 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
530529 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
531530
532531 var a: u128 = 152313999999999991610955792383;
test/behavior/export_keyword.zig+1-1
......@@ -40,7 +40,7 @@ export fn testPackedStuff(a: *const PackedStruct, b: *const PackedUnion) void {
4040}
4141
4242test "export function alias" {
43 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
43 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt == .coff) return error.SkipZigTest;
4444 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
4545
4646 _ = struct {
test/behavior/floatop.zig+15-88
......@@ -16,9 +16,6 @@ fn epsForType(comptime T: type) T {
1616test "add f16" {
1717 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
1818
19 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt == .coff and
20 !comptime builtin.cpu.has(.x86, .f16c)) return error.SkipZigTest;
21
2219 try testAdd(f16);
2320 try comptime testAdd(f16);
2421}
......@@ -31,7 +28,6 @@ test "add f32/f64" {
3128}
3229
3330test "add f80/f128/c_longdouble" {
34 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
3531 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
3632 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
3733
......@@ -52,7 +48,6 @@ fn testAdd(comptime T: type) !void {
5248}
5349
5450test "sub f16" {
55 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
5651 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
5752
5853 try testSub(f16);
......@@ -67,7 +62,6 @@ test "sub f32/f64" {
6762}
6863
6964test "sub f80/f128/c_longdouble" {
70 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
7165 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
7266 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
7367
......@@ -88,7 +82,6 @@ fn testSub(comptime T: type) !void {
8882}
8983
9084test "mul f16" {
91 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
9285 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
9386
9487 try testMul(f16);
......@@ -103,7 +96,6 @@ test "mul f32/f64" {
10396}
10497
10598test "mul f80/f128/c_longdouble" {
106 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
10799 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
108100 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
109101
......@@ -128,9 +120,6 @@ test "cmp f16" {
128120 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
129121 if (builtin.cpu.arch.isArm() and builtin.target.abi.float() == .soft) return error.SkipZigTest; // https://github.com/ziglang/zig/issues/21234
130122
131 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt == .coff and
132 !comptime builtin.cpu.has(.x86, .f16c)) return error.SkipZigTest;
133
134123 try testCmp(f16);
135124 try comptime testCmp(f16);
136125}
......@@ -158,7 +147,6 @@ test "cmp f128" {
158147 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
159148 if (builtin.zig_backend == .stage2_c and builtin.cpu.arch.isArm()) return error.SkipZigTest;
160149 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
161 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
162150 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
163151
164152 try testCmp(f128);
......@@ -171,8 +159,8 @@ test "cmp f80/c_longdouble" {
171159 if (builtin.zig_backend == .stage2_c and builtin.cpu.arch.isArm()) return error.SkipZigTest;
172160 if (builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
173161 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
174 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
175162 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
163 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt == .coff) return error.SkipZigTest;
176164
177165 try testCmp(f80);
178166 try comptime testCmp(f80);
......@@ -242,7 +230,6 @@ test "vector cmp f16" {
242230 if (builtin.cpu.arch.isArm()) return error.SkipZigTest;
243231 if (builtin.cpu.arch.isPowerPC64()) return error.SkipZigTest;
244232 if (builtin.zig_backend == .stage2_llvm and builtin.cpu.arch == .hexagon) return error.SkipZigTest;
245 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
246233
247234 try testCmpVector(f16);
248235 try comptime testCmpVector(f16);
......@@ -256,7 +243,6 @@ test "vector cmp f32" {
256243 if (builtin.cpu.arch.isArm()) return error.SkipZigTest;
257244 if (builtin.cpu.arch.isPowerPC64()) return error.SkipZigTest;
258245 if (builtin.zig_backend == .stage2_llvm and builtin.cpu.arch == .hexagon) return error.SkipZigTest;
259 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
260246
261247 try testCmpVector(f32);
262248 try comptime testCmpVector(f32);
......@@ -269,7 +255,6 @@ test "vector cmp f64" {
269255 if (builtin.cpu.arch.isArm()) return error.SkipZigTest;
270256 if (builtin.cpu.arch.isPowerPC64()) return error.SkipZigTest;
271257 if (builtin.zig_backend == .stage2_llvm and builtin.cpu.arch == .hexagon) return error.SkipZigTest;
272 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
273258
274259 try testCmpVector(f64);
275260 try comptime testCmpVector(f64);
......@@ -285,7 +270,6 @@ test "vector cmp f128" {
285270 if (builtin.cpu.arch.isArm()) return error.SkipZigTest;
286271 if (builtin.cpu.arch.isPowerPC64()) return error.SkipZigTest;
287272 if (builtin.zig_backend == .stage2_llvm and builtin.cpu.arch == .hexagon) return error.SkipZigTest;
288 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
289273
290274 try testCmpVector(f128);
291275 try comptime testCmpVector(f128);
......@@ -297,7 +281,7 @@ test "vector cmp f80/c_longdouble" {
297281 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
298282 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
299283 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest;
300 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
284 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt == .coff) return error.SkipZigTest;
301285
302286 try testCmpVector(f80);
303287 try comptime testCmpVector(f80);
......@@ -344,9 +328,6 @@ test "different sized float comparisons" {
344328 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
345329 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
346330
347 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt == .coff and
348 !comptime builtin.cpu.has(.x86, .f16c)) return error.SkipZigTest;
349
350331 try testDifferentSizedFloatComparisons();
351332 try comptime testDifferentSizedFloatComparisons();
352333}
......@@ -395,9 +376,6 @@ test "@sqrt f16" {
395376 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
396377 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
397378
398 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt == .coff and
399 !comptime builtin.cpu.has(.x86, .f16c)) return error.SkipZigTest;
400
401379 try testSqrt(f16);
402380 try comptime testSqrt(f16);
403381}
......@@ -418,9 +396,9 @@ test "@sqrt f80/f128/c_longdouble" {
418396 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
419397 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
420398 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
421 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
422399 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
423400 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
401 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt == .coff) return error.SkipZigTest;
424402
425403 if (builtin.os.tag == .freebsd) {
426404 // TODO https://github.com/ziglang/zig/issues/10875
......@@ -527,7 +505,6 @@ test "@sin f16" {
527505 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
528506 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
529507 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
530 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
531508 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
532509 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
533510
......@@ -539,7 +516,6 @@ test "@sin f32/f64" {
539516 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
540517 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
541518 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
542 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
543519 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
544520 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
545521
......@@ -553,9 +529,9 @@ test "@sin f80/f128/c_longdouble" {
553529 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
554530 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
555531 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
556 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
557532 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
558533 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
534 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt == .coff) return error.SkipZigTest;
559535
560536 try testSin(f80);
561537 comptime try testSin(f80);
......@@ -581,7 +557,6 @@ test "@sin with vectors" {
581557 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
582558 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
583559 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
584 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
585560 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
586561 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
587562
......@@ -603,7 +578,6 @@ test "@cos f16" {
603578 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
604579 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
605580 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
606 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
607581 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
608582 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
609583
......@@ -615,7 +589,6 @@ test "@cos f32/f64" {
615589 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
616590 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
617591 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
618 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
619592 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
620593 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
621594
......@@ -629,9 +602,9 @@ test "@cos f80/f128/c_longdouble" {
629602 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
630603 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
631604 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
632 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
633605 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
634606 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
607 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt == .coff) return error.SkipZigTest;
635608
636609 try testCos(f80);
637610 try comptime testCos(f80);
......@@ -657,7 +630,6 @@ test "@cos with vectors" {
657630 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
658631 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
659632 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
660 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
661633 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
662634 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
663635
......@@ -679,7 +651,6 @@ test "@tan f16" {
679651 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
680652 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
681653 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
682 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
683654 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
684655 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
685656
......@@ -691,7 +662,6 @@ test "@tan f32/f64" {
691662 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
692663 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
693664 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
694 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
695665 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
696666 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
697667
......@@ -705,9 +675,9 @@ test "@tan f80/f128/c_longdouble" {
705675 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
706676 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
707677 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
708 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
709678 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
710679 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
680 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt == .coff) return error.SkipZigTest;
711681
712682 try testTan(f80);
713683 try comptime testTan(f80);
......@@ -733,7 +703,6 @@ test "@tan with vectors" {
733703 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
734704 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
735705 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
736 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
737706 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
738707 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
739708
......@@ -755,7 +724,6 @@ test "@exp f16" {
755724 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
756725 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
757726 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
758 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
759727 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
760728 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
761729
......@@ -767,7 +735,6 @@ test "@exp f32/f64" {
767735 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
768736 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
769737 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
770 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
771738 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
772739 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
773740
......@@ -781,9 +748,9 @@ test "@exp f80/f128/c_longdouble" {
781748 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
782749 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
783750 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
784 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
785751 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
786752 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
753 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt == .coff) return error.SkipZigTest;
787754
788755 try testExp(f80);
789756 try comptime testExp(f80);
......@@ -813,7 +780,6 @@ test "@exp with vectors" {
813780 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
814781 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
815782 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
816 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
817783 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
818784 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
819785
......@@ -835,7 +801,6 @@ test "@exp2 f16" {
835801 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
836802 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
837803 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
838 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
839804 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
840805 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
841806
......@@ -847,7 +812,6 @@ test "@exp2 f32/f64" {
847812 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
848813 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
849814 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
850 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
851815 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
852816 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
853817
......@@ -861,9 +825,9 @@ test "@exp2 f80/f128/c_longdouble" {
861825 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
862826 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
863827 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
864 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
865828 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
866829 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
830 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt == .coff) return error.SkipZigTest;
867831
868832 try testExp2(f80);
869833 try comptime testExp2(f80);
......@@ -888,7 +852,6 @@ test "@exp2 with @vectors" {
888852 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
889853 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
890854 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
891 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
892855 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
893856 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
894857
......@@ -910,7 +873,6 @@ test "@log f16" {
910873 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
911874 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
912875 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
913 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
914876 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
915877 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
916878
......@@ -922,7 +884,6 @@ test "@log f32/f64" {
922884 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
923885 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
924886 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
925 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
926887 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
927888 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
928889
......@@ -936,9 +897,9 @@ test "@log f80/f128/c_longdouble" {
936897 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
937898 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
938899 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
939 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
940900 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
941901 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
902 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt == .coff) return error.SkipZigTest;
942903
943904 try testLog(f80);
944905 try comptime testLog(f80);
......@@ -964,7 +925,6 @@ test "@log with @vectors" {
964925 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
965926 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
966927 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
967 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
968928 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
969929 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
970930
......@@ -983,7 +943,6 @@ test "@log2 f16" {
983943 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
984944 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
985945 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
986 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
987946 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
988947 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
989948
......@@ -995,7 +954,6 @@ test "@log2 f32/f64" {
995954 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
996955 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
997956 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
998 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
999957 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
1000958 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
1001959
......@@ -1009,9 +967,9 @@ test "@log2 f80/f128/c_longdouble" {
1009967 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1010968 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1011969 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1012 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
1013970 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
1014971 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
972 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt == .coff) return error.SkipZigTest;
1015973
1016974 try testLog2(f80);
1017975 try comptime testLog2(f80);
......@@ -1042,7 +1000,6 @@ test "@log2 with vectors" {
10421000 if (builtin.zig_backend == .stage2_llvm and
10431001 builtin.cpu.arch == .aarch64 and
10441002 builtin.os.tag == .windows) return error.SkipZigTest;
1045 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
10461003
10471004 try testLog2WithVectors();
10481005 try comptime testLog2WithVectors();
......@@ -1062,7 +1019,6 @@ test "@log10 f16" {
10621019 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
10631020 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
10641021 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1065 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
10661022 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
10671023 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
10681024
......@@ -1074,7 +1030,6 @@ test "@log10 f32/f64" {
10741030 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
10751031 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
10761032 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1077 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
10781033 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
10791034 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
10801035
......@@ -1088,9 +1043,9 @@ test "@log10 f80/f128/c_longdouble" {
10881043 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
10891044 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
10901045 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1091 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
10921046 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
10931047 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
1048 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt == .coff) return error.SkipZigTest;
10941049
10951050 try testLog10(f80);
10961051 try comptime testLog10(f80);
......@@ -1115,7 +1070,6 @@ test "@log10 with vectors" {
11151070 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
11161071 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
11171072 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1118 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
11191073 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
11201074 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
11211075
......@@ -1139,9 +1093,6 @@ test "@abs f16" {
11391093 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
11401094 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
11411095
1142 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt == .coff and
1143 !comptime builtin.cpu.has(.x86, .f16c)) return error.SkipZigTest;
1144
11451096 try testFabs(f16);
11461097 try comptime testFabs(f16);
11471098}
......@@ -1162,9 +1113,9 @@ test "@abs f80/f128/c_longdouble" {
11621113 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
11631114 if (builtin.zig_backend == .stage2_c and builtin.cpu.arch.isArm()) return error.SkipZigTest;
11641115 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1165 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
11661116 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
11671117 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
1118 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt == .coff) return error.SkipZigTest;
11681119
11691120 try testFabs(f80);
11701121 try comptime testFabs(f80);
......@@ -1262,7 +1213,6 @@ test "@floor f16" {
12621213 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
12631214 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
12641215 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1265 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
12661216 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
12671217
12681218 try testFloor(f16);
......@@ -1275,9 +1225,6 @@ test "@floor f32/f64" {
12751225 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
12761226 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
12771227
1278 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt == .coff and
1279 !comptime builtin.cpu.has(.x86, .sse4_1)) return error.SkipZigTest;
1280
12811228 try testFloor(f32);
12821229 try comptime testFloor(f32);
12831230 try testFloor(f64);
......@@ -1342,9 +1289,6 @@ test "@floor with vectors" {
13421289 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
13431290 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
13441291
1345 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt == .coff and
1346 !comptime builtin.cpu.has(.x86, .sse4_1)) return error.SkipZigTest;
1347
13481292 try testFloorWithVectors();
13491293 try comptime testFloorWithVectors();
13501294}
......@@ -1363,7 +1307,6 @@ test "@ceil f16" {
13631307 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
13641308 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
13651309 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1366 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
13671310 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
13681311
13691312 try testCeil(f16);
......@@ -1376,9 +1319,6 @@ test "@ceil f32/f64" {
13761319 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
13771320 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
13781321
1379 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt == .coff and
1380 !comptime builtin.cpu.has(.x86, .sse4_1)) return error.SkipZigTest;
1381
13821322 try testCeil(f32);
13831323 try comptime testCeil(f32);
13841324 try testCeil(f64);
......@@ -1443,9 +1383,6 @@ test "@ceil with vectors" {
14431383 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
14441384 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
14451385
1446 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt == .coff and
1447 !comptime builtin.cpu.has(.x86, .sse4_1)) return error.SkipZigTest;
1448
14491386 try testCeilWithVectors();
14501387 try comptime testCeilWithVectors();
14511388}
......@@ -1464,7 +1401,6 @@ test "@trunc f16" {
14641401 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
14651402 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
14661403 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1467 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
14681404 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
14691405
14701406 try testTrunc(f16);
......@@ -1477,9 +1413,6 @@ test "@trunc f32/f64" {
14771413 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
14781414 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
14791415
1480 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt == .coff and
1481 !comptime builtin.cpu.has(.x86, .sse4_1)) return error.SkipZigTest;
1482
14831416 try testTrunc(f32);
14841417 try comptime testTrunc(f32);
14851418 try testTrunc(f64);
......@@ -1491,9 +1424,9 @@ test "@trunc f80/f128/c_longdouble" {
14911424 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
14921425 if (builtin.zig_backend == .stage2_c and builtin.cpu.arch.isArm()) return error.SkipZigTest;
14931426 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1494 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
14951427 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
14961428 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
1429 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt == .coff) return error.SkipZigTest;
14971430
14981431 if (builtin.zig_backend == .stage2_llvm and builtin.os.tag == .windows) {
14991432 // https://github.com/ziglang/zig/issues/12602
......@@ -1544,9 +1477,6 @@ test "@trunc with vectors" {
15441477 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
15451478 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
15461479
1547 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt == .coff and
1548 !comptime builtin.cpu.has(.x86, .sse4_1)) return error.SkipZigTest;
1549
15501480 try testTruncWithVectors();
15511481 try comptime testTruncWithVectors();
15521482}
......@@ -1566,9 +1496,7 @@ test "neg f16" {
15661496 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
15671497 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
15681498 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
1569
1570 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt == .coff and
1571 !comptime builtin.cpu.has(.x86, .f16c)) return error.SkipZigTest;
1499 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest;
15721500
15731501 if (builtin.os.tag == .freebsd) {
15741502 // TODO file issue to track this failure
......@@ -1597,8 +1525,8 @@ test "neg f80/f128/c_longdouble" {
15971525 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
15981526 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
15991527 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest;
1600 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
16011528 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
1529 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt == .coff) return error.SkipZigTest;
16021530
16031531 try testNeg(f80);
16041532 try comptime testNeg(f80);
......@@ -1704,7 +1632,6 @@ test "comptime fixed-width float zero divided by zero produces NaN" {
17041632 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
17051633 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
17061634 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
1707 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
17081635 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
17091636
17101637 inline for (.{ f16, f32, f64, f80, f128 }) |F| {
test/behavior/generics.zig-1
......@@ -587,7 +587,6 @@ fn StructCapture(comptime T: type) type {
587587}
588588
589589test "call generic function that uses capture from function declaration's scope" {
590 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
591590 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
592591 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
593592
test/behavior/math.zig+1-23
......@@ -65,7 +65,6 @@ test "@clz" {
6565 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
6666 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
6767 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
68 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
6968 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
7069
7170 try testClz();
......@@ -474,9 +473,6 @@ test "division" {
474473 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
475474 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
476475
477 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt == .coff and
478 !comptime builtin.cpu.has(.x86, .f16c)) return error.SkipZigTest;
479
480476 try testIntDivision();
481477 try comptime testIntDivision();
482478
......@@ -589,7 +585,6 @@ fn testFloatDivision() !void {
589585}
590586
591587test "large integer division" {
592 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
593588 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
594589 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
595590 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest;
......@@ -615,7 +610,6 @@ test "division half-precision floats" {
615610 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
616611 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
617612 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
618 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
619613 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
620614
621615 try testDivisionFP16();
......@@ -757,7 +751,6 @@ test "f128" {
757751 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
758752 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
759753 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
760 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
761754 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
762755
763756 try test_f128();
......@@ -843,7 +836,6 @@ test "128-bit multiplication" {
843836 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
844837 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
845838 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
846 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
847839 if (builtin.zig_backend == .stage2_c and builtin.cpu.arch.isArm()) return error.SkipZigTest;
848840 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
849841
......@@ -1052,7 +1044,6 @@ test "@mulWithOverflow bitsize 128 bits" {
10521044 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
10531045 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
10541046 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest; // TODO
1055 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
10561047
10571048 try testMulWithOverflow(u128, 3, 0x5555555555555555_5555555555555555, 0xffffffffffffffff_ffffffffffffffff, 0);
10581049 try testMulWithOverflow(u128, 3, 0x5555555555555555_5555555555555556, 2, 1);
......@@ -1078,7 +1069,6 @@ test "@mulWithOverflow bitsize 256 bits" {
10781069 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest;
10791070 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
10801071 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
1081 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
10821072
10831073 {
10841074 const const_lhs: u256 = 8035709466408580321693645878924206181189;
......@@ -1475,7 +1465,6 @@ test "float remainder division using @rem" {
14751465 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
14761466 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
14771467 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
1478 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
14791468 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
14801469
14811470 try comptime frem(f16);
......@@ -1560,7 +1549,6 @@ test "@round f16" {
15601549 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
15611550 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
15621551 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1563 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
15641552 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
15651553
15661554 try testRound(f16, 12.0);
......@@ -1571,7 +1559,6 @@ test "@round f32/f64" {
15711559 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
15721560 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
15731561 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1574 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
15751562 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
15761563
15771564 try testRound(f64, 12.0);
......@@ -1591,7 +1578,6 @@ test "@round f80" {
15911578 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
15921579 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
15931580 if (builtin.zig_backend == .stage2_c and builtin.cpu.arch.isArm()) return error.SkipZigTest;
1594 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
15951581 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
15961582
15971583 try testRound(f80, 12.0);
......@@ -1604,7 +1590,6 @@ test "@round f128" {
16041590 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
16051591 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
16061592 if (builtin.zig_backend == .stage2_c and builtin.cpu.arch.isArm()) return error.SkipZigTest;
1607 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
16081593 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
16091594
16101595 try testRound(f128, 12.0);
......@@ -1624,7 +1609,6 @@ test "vector integer addition" {
16241609 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
16251610 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
16261611 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
1627 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
16281612
16291613 const S = struct {
16301614 fn doTheTest() !void {
......@@ -1646,7 +1630,6 @@ test "NaN comparison" {
16461630 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
16471631 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
16481632 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
1649 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
16501633 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
16511634 if (builtin.cpu.arch.isArm() and builtin.target.abi.float() == .soft) return error.SkipZigTest; // https://github.com/ziglang/zig/issues/21234
16521635
......@@ -1665,7 +1648,6 @@ test "NaN comparison f80" {
16651648 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
16661649 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
16671650 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
1668 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
16691651 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
16701652
16711653 try testNanEqNan(f80);
......@@ -1722,7 +1704,7 @@ test "signed zeros are represented properly" {
17221704 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
17231705 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
17241706 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
1725 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
1707 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt == .coff) return error.SkipZigTest;
17261708
17271709 const S = struct {
17281710 fn doTheTest() !void {
......@@ -1900,7 +1882,6 @@ test "partially-runtime integer vector division would be illegal if vector eleme
19001882 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
19011883 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
19021884 if (builtin.zig_backend == .stage2_llvm and builtin.cpu.arch == .hexagon) return error.SkipZigTest;
1903 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
19041885
19051886 var lhs: @Vector(2, i8) = .{ -128, 5 };
19061887 const rhs: @Vector(2, i8) = .{ 1, -1 };
......@@ -1930,9 +1911,6 @@ test "float vector division of comptime zero by runtime nan is nan" {
19301911 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
19311912 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
19321913
1933 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt == .coff and
1934 !comptime builtin.cpu.has(.x86, .sse4_1)) return error.SkipZigTest;
1935
19361914 const ct_zero: @Vector(1, f32) = .{0};
19371915 var rt_nan: @Vector(1, f32) = .{math.nan(f32)};
19381916
test/behavior/maximum_minimum.zig-1
......@@ -122,7 +122,6 @@ test "@min/max for floats" {
122122 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
123123 if (builtin.zig_backend == .stage2_c and builtin.cpu.arch.isArm()) return error.SkipZigTest;
124124 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
125 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
126125
127126 const S = struct {
128127 fn doTheTest(comptime T: type) !void {
test/behavior/memmove.zig-4
......@@ -9,7 +9,6 @@ test "memmove and memset intrinsics" {
99 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
1010 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest;
1111 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
12 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
1312
1413 try testMemmoveMemset();
1514 try comptime testMemmoveMemset();
......@@ -39,7 +38,6 @@ test "@memmove with both operands single-ptr-to-array, one is null-terminated" {
3938 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
4039 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest;
4140 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
42 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
4341
4442 try testMemmoveBothSinglePtrArrayOneIsNullTerminated();
4543 try comptime testMemmoveBothSinglePtrArrayOneIsNullTerminated();
......@@ -85,7 +83,6 @@ test "@memmove dest many pointer" {
8583 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
8684 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest;
8785 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
88 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
8986
9087 try testMemmoveDestManyPtr();
9188 try comptime testMemmoveDestManyPtr();
......@@ -129,7 +126,6 @@ test "@memmove slice" {
129126 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
130127 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest;
131128 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
132 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
133129
134130 try testMemmoveSlice();
135131 try comptime testMemmoveSlice();
test/behavior/muladd.zig-15
......@@ -9,9 +9,6 @@ test "@mulAdd" {
99 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
1010 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
1111
12 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt == .coff and
13 !comptime builtin.cpu.has(.x86, .fma)) return error.SkipZigTest;
14
1512 try comptime testMulAdd();
1613 try testMulAdd();
1714}
......@@ -37,7 +34,6 @@ test "@mulAdd f16" {
3734 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
3835 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
3936 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
40 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
4137 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
4238 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
4339
......@@ -59,7 +55,6 @@ test "@mulAdd f80" {
5955 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
6056 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
6157 if (builtin.zig_backend == .stage2_c and builtin.cpu.arch.isArm()) return error.SkipZigTest;
62 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
6358 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
6459
6560 try comptime testMulAdd80();
......@@ -80,7 +75,6 @@ test "@mulAdd f128" {
8075 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
8176 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
8277 if (builtin.zig_backend == .stage2_c and builtin.cpu.arch.isArm()) return error.SkipZigTest;
83 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
8478 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
8579
8680 try comptime testMulAdd128();
......@@ -113,7 +107,6 @@ test "vector f16" {
113107 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
114108 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
115109 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
116 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
117110 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
118111 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
119112
......@@ -142,9 +135,6 @@ test "vector f32" {
142135 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
143136 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
144137
145 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt == .coff and
146 !comptime builtin.cpu.has(.x86, .fma)) return error.SkipZigTest;
147
148138 try comptime vector32();
149139 try vector32();
150140}
......@@ -170,9 +160,6 @@ test "vector f64" {
170160 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
171161 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
172162
173 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt == .coff and
174 !comptime builtin.cpu.has(.x86, .fma)) return error.SkipZigTest;
175
176163 try comptime vector64();
177164 try vector64();
178165}
......@@ -196,7 +183,6 @@ test "vector f80" {
196183 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
197184 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
198185 if (builtin.zig_backend == .stage2_c and builtin.cpu.arch.isArm()) return error.SkipZigTest;
199 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
200186 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
201187
202188 try comptime vector80();
......@@ -223,7 +209,6 @@ test "vector f128" {
223209 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
224210 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
225211 if (builtin.zig_backend == .stage2_c and builtin.cpu.arch.isArm()) return error.SkipZigTest;
226 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
227212 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
228213
229214 try comptime vector128();
test/behavior/multiple_externs_with_conflicting_types.zig+1-1
......@@ -15,7 +15,7 @@ test "call extern function defined with conflicting type" {
1515 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1616 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1717 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
18 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
18 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt == .coff) return error.SkipZigTest;
1919 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
2020
2121 @import("conflicting_externs/a.zig").issue529(null);
test/behavior/optional.zig-1
......@@ -59,7 +59,6 @@ fn testNullPtrsEql() !void {
5959}
6060
6161test "optional with zero-bit type" {
62 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
6362 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
6463
6564 const S = struct {
test/behavior/packed-struct.zig-1
......@@ -661,7 +661,6 @@ test "nested packed struct field access test" {
661661 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
662662 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
663663 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
664 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
665664 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
666665
667666 const Vec2 = packed struct {
test/behavior/saturating_arithmetic.zig-7
......@@ -58,7 +58,6 @@ test "saturating add 128bit" {
5858 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
5959 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
6060 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
61 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
6261
6362 const S = struct {
6463 fn doTheTest() !void {
......@@ -132,7 +131,6 @@ test "saturating subtraction 128bit" {
132131 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
133132 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
134133 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
135 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
136134
137135 const S = struct {
138136 fn doTheTest() !void {
......@@ -233,7 +231,6 @@ test "saturating multiplication <= 32 bits" {
233231test "saturating mul i64, i128" {
234232 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
235233 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
236 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
237234
238235 try testSatMul(i64, 0, maxInt(i64), 0);
239236 try testSatMul(i64, 0, minInt(i64), 0);
......@@ -266,7 +263,6 @@ test "saturating multiplication" {
266263 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
267264 if (builtin.zig_backend == .stage2_c and builtin.cpu.arch.isArm()) return error.SkipZigTest;
268265 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
269 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
270266
271267 if (builtin.zig_backend == .stage2_llvm and builtin.cpu.arch.isWasm()) {
272268 // https://github.com/ziglang/zig/issues/9660
......@@ -304,7 +300,6 @@ test "saturating shift-left" {
304300 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
305301 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
306302 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
307 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
308303
309304 const S = struct {
310305 fn doTheTest() !void {
......@@ -349,7 +344,6 @@ test "saturating shift-left large rhs" {
349344 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
350345 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
351346 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest;
352 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
353347
354348 {
355349 var lhs: u8 = undefined;
......@@ -368,7 +362,6 @@ test "saturating shl uses the LHS type" {
368362 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
369363 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
370364 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
371 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
372365
373366 const lhs_const: u8 = 1;
374367 var lhs_var: u8 = 1;
test/behavior/struct.zig-1
......@@ -561,7 +561,6 @@ test "packed struct with non-ABI-aligned field" {
561561 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
562562 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
563563 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
564 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
565564
566565 const S = packed struct {
567566 x: u9,
test/behavior/tuple.zig-1
......@@ -397,7 +397,6 @@ test "tuple of struct concatenation and coercion to array" {
397397 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
398398 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
399399 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
400 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
401400 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
402401 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
403402
test/behavior/union.zig-2
......@@ -282,7 +282,6 @@ test "cast union to tag type of union" {
282282 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
283283 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
284284 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
285 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
286285
287286 try testCastUnionToTag();
288287 try comptime testCastUnionToTag();
......@@ -2262,7 +2261,6 @@ test "signed enum tag with negative value" {
22622261 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
22632262 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
22642263 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
2265 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
22662264
22672265 const Enum = enum(i8) {
22682266 a = -1,
test/behavior/vector.zig-15
......@@ -80,7 +80,6 @@ test "vector int operators" {
8080 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
8181 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
8282 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
83 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
8483
8584 const S = struct {
8685 fn doTheTest() !void {
......@@ -104,7 +103,6 @@ test "vector float operators" {
104103 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
105104 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
106105 if (builtin.zig_backend == .stage2_c and builtin.cpu.arch.isArm()) return error.SkipZigTest;
107 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
108106
109107 if (builtin.zig_backend == .stage2_llvm and builtin.cpu.arch == .aarch64) {
110108 // Triggers an assertion with LLVM 18:
......@@ -260,9 +258,6 @@ test "array to vector with element type coercion" {
260258 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
261259 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
262260
263 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt == .coff and
264 !comptime builtin.cpu.has(.x86, .f16c)) return error.SkipZigTest;
265
266261 const S = struct {
267262 fn doTheTest() !void {
268263 var foo: f16 = 3.14;
......@@ -301,7 +296,6 @@ test "tuple to vector" {
301296 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
302297 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
303298 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
304 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
305299
306300 const S = struct {
307301 fn doTheTest() !void {
......@@ -365,7 +359,6 @@ test "vector @splat" {
365359 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
366360 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
367361 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
368 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
369362
370363 const S = struct {
371364 fn testForT(comptime N: comptime_int, v: anytype) !void {
......@@ -567,7 +560,6 @@ test "vector division operators" {
567560 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
568561 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
569562 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
570 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
571563
572564 const S = struct {
573565 fn doTheTestDiv(comptime T: type, x: @Vector(4, T), y: @Vector(4, T)) !void {
......@@ -718,7 +710,6 @@ test "vector shift operators" {
718710 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
719711 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
720712 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
721 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
722713
723714 const S = struct {
724715 fn doTheTestShift(x: anytype, y: anytype) !void {
......@@ -793,7 +784,6 @@ test "vector reduce operation" {
793784 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
794785 if (builtin.zig_backend == .stage2_llvm and builtin.cpu.arch.isMIPS64()) return error.SkipZigTest; // https://github.com/ziglang/zig/issues/21091
795786 if (builtin.zig_backend == .stage2_llvm and builtin.cpu.arch.isSPARC()) return error.SkipZigTest; // https://github.com/ziglang/zig/issues/23719
796 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
797787
798788 const S = struct {
799789 fn testReduce(comptime op: std.builtin.ReduceOp, x: anytype, expected: anytype) !void {
......@@ -1047,7 +1037,6 @@ test "saturating shift-left" {
10471037 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
10481038 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
10491039 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
1050 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
10511040
10521041 const S = struct {
10531042 fn doTheTest() !void {
......@@ -1072,7 +1061,6 @@ test "multiplication-assignment operator with an array operand" {
10721061 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
10731062 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
10741063 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
1075 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
10761064
10771065 const S = struct {
10781066 fn doTheTest() !void {
......@@ -1332,7 +1320,6 @@ test "zero multiplicand" {
13321320 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
13331321 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
13341322 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; // TODO
1335 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
13361323
13371324 const zeros = @Vector(2, u32){ 0.0, 0.0 };
13381325 var ones = @Vector(2, u32){ 1.0, 1.0 };
......@@ -1395,7 +1382,6 @@ test "load packed vector element" {
13951382 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
13961383 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
13971384 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
1398 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
13991385 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
14001386
14011387 var x: @Vector(2, u15) = .{ 1, 4 };
......@@ -1426,7 +1412,6 @@ test "store to vector in slice" {
14261412 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
14271413 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
14281414 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
1429 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
14301415
14311416 var v = [_]@Vector(3, f32){
14321417 .{ 1, 1, 1 },
test/behavior/widening.zig-2
......@@ -44,7 +44,6 @@ test "float widening" {
4444 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
4545 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
4646 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
47 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
4847 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
4948
5049 var a: f16 = 12.34;
......@@ -65,7 +64,6 @@ test "float widening f16 to f128" {
6564 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
6665 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
6766 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
68 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
6967 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
7068
7169 var x: f16 = 12.34;
test/behavior/x86_64.zig-2
......@@ -5,8 +5,6 @@ test {
55 if (builtin.zig_backend != .stage2_x86_64) return error.SkipZigTest;
66 // MachO linker does not support executables this big.
77 if (builtin.object_format == .macho) return error.SkipZigTest;
8 // COFF linker does not support the new backend.
9 if (builtin.object_format == .coff) return error.SkipZigTest;
108 _ = @import("x86_64/access.zig");
119 _ = @import("x86_64/binary.zig");
1210 _ = @import("x86_64/cast.zig");
test/behavior/x86_64/binary.zig+104-52
......@@ -14,6 +14,7 @@ const Log2Int = math.Log2Int;
1414const math = @import("math.zig");
1515const nan = math.nan;
1616const Scalar = math.Scalar;
17const select = math.select;
1718const sign = math.sign;
1819const splat = math.splat;
1920const Sse = math.Sse;
......@@ -84,6 +85,12 @@ fn binary(comptime op: anytype, comptime opts: struct { compare: Compare = .rela
8485 imm_rhs,
8586 );
8687 }
88 fn testBools() !void {
89 try testArgs(bool, false, false);
90 try testArgs(bool, false, true);
91 try testArgs(bool, true, false);
92 try testArgs(bool, true, true);
93 }
8794 fn testInts() !void {
8895 try testArgs(i1, 0x0, -0x1);
8996 try testArgs(u1, 0x1, 0x1);
......@@ -1881,6 +1888,23 @@ fn binary(comptime op: anytype, comptime opts: struct { compare: Compare = .rela
18811888 try testArgs(f128, nan(f128), inf(f128));
18821889 try testArgs(f128, nan(f128), nan(f128));
18831890 }
1891 fn testBoolVectors() !void {
1892 try testArgs(@Vector(1, bool), .{
1893 false,
1894 }, .{
1895 true,
1896 });
1897 try testArgs(@Vector(2, bool), .{
1898 false, true,
1899 }, .{
1900 true, false,
1901 });
1902 try testArgs(@Vector(4, bool), .{
1903 false, false, true, true,
1904 }, .{
1905 false, true, false, true,
1906 });
1907 }
18841908 fn testIntVectors() !void {
18851909 try testArgs(@Vector(1, i1), .{
18861910 0x0,
......@@ -5033,8 +5057,7 @@ inline fn addSafe(comptime Type: type, lhs: Type, rhs: Type) AddOneBit(Type) {
50335057test addSafe {
50345058 const test_add_safe = binary(addSafe, .{});
50355059 try test_add_safe.testInts();
5036 try test_add_safe.testFloats();
5037 try test_add_safe.testFloatVectors();
5060 try test_add_safe.testIntVectors();
50385061}
50395062
50405063inline fn addWrap(comptime Type: type, lhs: Type, rhs: Type) Type {
......@@ -5046,13 +5069,13 @@ test addWrap {
50465069 try test_add_wrap.testIntVectors();
50475070}
50485071
5049inline fn addSat(comptime Type: type, lhs: Type, rhs: Type) Type {
5072inline fn addSaturate(comptime Type: type, lhs: Type, rhs: Type) Type {
50505073 return lhs +| rhs;
50515074}
5052test addSat {
5053 const test_add_sat = binary(addSat, .{});
5054 try test_add_sat.testInts();
5055 try test_add_sat.testIntVectors();
5075test addSaturate {
5076 const test_add_saturate = binary(addSaturate, .{});
5077 try test_add_saturate.testInts();
5078 try test_add_saturate.testIntVectors();
50565079}
50575080
50585081inline fn subUnsafe(comptime Type: type, lhs: Type, rhs: Type) AddOneBit(Type) {
......@@ -5088,8 +5111,7 @@ inline fn subSafe(comptime Type: type, lhs: Type, rhs: Type) AddOneBit(Type) {
50885111test subSafe {
50895112 const test_sub_safe = binary(subSafe, .{});
50905113 try test_sub_safe.testInts();
5091 try test_sub_safe.testFloats();
5092 try test_sub_safe.testFloatVectors();
5114 try test_sub_safe.testIntVectors();
50935115}
50945116
50955117inline fn subWrap(comptime Type: type, lhs: Type, rhs: Type) Type {
......@@ -5101,13 +5123,13 @@ test subWrap {
51015123 try test_sub_wrap.testIntVectors();
51025124}
51035125
5104inline fn subSat(comptime Type: type, lhs: Type, rhs: Type) Type {
5126inline fn subSaturate(comptime Type: type, lhs: Type, rhs: Type) Type {
51055127 return lhs -| rhs;
51065128}
5107test subSat {
5108 const test_sub_sat = binary(subSat, .{});
5109 try test_sub_sat.testInts();
5110 try test_sub_sat.testIntVectors();
5129test subSaturate {
5130 const test_sub_saturate = binary(subSaturate, .{});
5131 try test_sub_saturate.testInts();
5132 try test_sub_saturate.testIntVectors();
51115133}
51125134
51135135inline fn mulUnsafe(comptime Type: type, lhs: Type, rhs: Type) DoubleBits(Type) {
......@@ -5118,6 +5140,8 @@ test mulUnsafe {
51185140 const test_mul_unsafe = binary(mulUnsafe, .{});
51195141 try test_mul_unsafe.testInts();
51205142 try test_mul_unsafe.testIntVectors();
5143 try test_mul_unsafe.testFloats();
5144 try test_mul_unsafe.testFloatVectors();
51215145}
51225146
51235147inline fn mulSafe(comptime Type: type, lhs: Type, rhs: Type) DoubleBits(Type) {
......@@ -5127,6 +5151,7 @@ inline fn mulSafe(comptime Type: type, lhs: Type, rhs: Type) DoubleBits(Type) {
51275151test mulSafe {
51285152 const test_mul_safe = binary(mulSafe, .{});
51295153 try test_mul_safe.testInts();
5154 try test_mul_safe.testIntVectors();
51305155}
51315156
51325157inline fn mulWrap(comptime Type: type, lhs: Type, rhs: Type) Type {
......@@ -5138,16 +5163,16 @@ test mulWrap {
51385163 try test_mul_wrap.testIntVectors();
51395164}
51405165
5141inline fn mulSat(comptime Type: type, lhs: Type, rhs: Type) Type {
5166inline fn mulSaturate(comptime Type: type, lhs: Type, rhs: Type) Type {
51425167 return lhs *| rhs;
51435168}
5144test mulSat {
5145 const test_mul_sat = binary(mulSat, .{});
5146 try test_mul_sat.testInts();
5147 try test_mul_sat.testIntVectors();
5169test mulSaturate {
5170 const test_mul_saturate = binary(mulSaturate, .{});
5171 try test_mul_saturate.testInts();
5172 try test_mul_saturate.testIntVectors();
51485173}
51495174
5150inline fn multiply(comptime Type: type, lhs: Type, rhs: Type) @TypeOf(lhs * rhs) {
5175inline fn multiply(comptime Type: type, lhs: Type, rhs: Type) Type {
51515176 return lhs * rhs;
51525177}
51535178test multiply {
......@@ -5156,7 +5181,7 @@ test multiply {
51565181 try test_multiply.testFloatVectors();
51575182}
51585183
5159inline fn divide(comptime Type: type, lhs: Type, rhs: Type) @TypeOf(lhs / rhs) {
5184inline fn divide(comptime Type: type, lhs: Type, rhs: Type) Type {
51605185 return lhs / rhs;
51615186}
51625187test divide {
......@@ -5165,29 +5190,49 @@ test divide {
51655190 try test_divide.testFloatVectors();
51665191}
51675192
5168inline fn divTrunc(comptime Type: type, lhs: Type, rhs: Type) @TypeOf(@divTrunc(lhs, rhs)) {
5193inline fn divTruncUnoptimized(comptime Type: type, lhs: Type, rhs: Type) Type {
51695194 return @divTrunc(lhs, rhs);
51705195}
5171test divTrunc {
5172 const test_div_trunc = binary(divTrunc, .{ .compare = .approx_int });
5173 try test_div_trunc.testInts();
5174 try test_div_trunc.testIntVectors();
5175 try test_div_trunc.testFloats();
5176 try test_div_trunc.testFloatVectors();
5196test divTruncUnoptimized {
5197 const test_div_trunc_unoptimized = binary(divTruncUnoptimized, .{ .compare = .approx_int });
5198 try test_div_trunc_unoptimized.testInts();
5199 try test_div_trunc_unoptimized.testIntVectors();
5200 try test_div_trunc_unoptimized.testFloats();
5201 try test_div_trunc_unoptimized.testFloatVectors();
5202}
5203
5204inline fn divTruncOptimized(comptime Type: type, lhs: Type, rhs: Type) Type {
5205 @setFloatMode(.optimized);
5206 return @divTrunc(lhs, select(@abs(rhs) > splat(Type, 0.0), rhs, splat(Type, 1.0)));
5207}
5208test divTruncOptimized {
5209 const test_div_trunc_optimized = binary(divTruncOptimized, .{ .compare = .approx_int });
5210 try test_div_trunc_optimized.testFloats();
5211 try test_div_trunc_optimized.testFloatVectors();
51775212}
51785213
5179inline fn divFloor(comptime Type: type, lhs: Type, rhs: Type) @TypeOf(@divFloor(lhs, rhs)) {
5214inline fn divFloorUnoptimized(comptime Type: type, lhs: Type, rhs: Type) Type {
51805215 return @divFloor(lhs, rhs);
51815216}
5182test divFloor {
5183 const test_div_floor = binary(divFloor, .{ .compare = .approx_int });
5184 try test_div_floor.testInts();
5185 try test_div_floor.testIntVectors();
5186 try test_div_floor.testFloats();
5187 try test_div_floor.testFloatVectors();
5217test divFloorUnoptimized {
5218 const test_div_floor_unoptimized = binary(divFloorUnoptimized, .{ .compare = .approx_int });
5219 try test_div_floor_unoptimized.testInts();
5220 try test_div_floor_unoptimized.testIntVectors();
5221 try test_div_floor_unoptimized.testFloats();
5222 try test_div_floor_unoptimized.testFloatVectors();
5223}
5224
5225inline fn divFloorOptimized(comptime Type: type, lhs: Type, rhs: Type) Type {
5226 @setFloatMode(.optimized);
5227 return @divFloor(lhs, select(@abs(rhs) > splat(Type, 0.0), rhs, splat(Type, 1.0)));
5228}
5229test divFloorOptimized {
5230 const test_div_floor_optimized = binary(divFloorOptimized, .{ .compare = .approx_int });
5231 try test_div_floor_optimized.testFloats();
5232 try test_div_floor_optimized.testFloatVectors();
51885233}
51895234
5190inline fn rem(comptime Type: type, lhs: Type, rhs: Type) @TypeOf(@rem(lhs, rhs)) {
5235inline fn rem(comptime Type: type, lhs: Type, rhs: Type) Type {
51915236 return @rem(lhs, rhs);
51925237}
51935238test rem {
......@@ -5198,7 +5243,7 @@ test rem {
51985243 try test_rem.testFloatVectors();
51995244}
52005245
5201inline fn mod(comptime Type: type, lhs: Type, rhs: Type) @TypeOf(@mod(lhs, rhs)) {
5246inline fn mod(comptime Type: type, lhs: Type, rhs: Type) Type {
52025247 // workaround llvm backend bugs
52035248 if (@inComptime() and @typeInfo(Scalar(Type)) == .float) {
52045249 const scalarMod = struct {
......@@ -5219,6 +5264,7 @@ inline fn mod(comptime Type: type, lhs: Type, rhs: Type) @TypeOf(@mod(lhs, rhs))
52195264 return @mod(lhs, rhs);
52205265}
52215266test mod {
5267 if (@import("builtin").object_format == .coff) return error.SkipZigTest;
52225268 const test_mod = binary(mod, .{});
52235269 try test_mod.testInts();
52245270 try test_mod.testIntVectors();
......@@ -5286,7 +5332,7 @@ test shlWithOverflow {
52865332 try test_shl_with_overflow.testIntVectors();
52875333}
52885334
5289inline fn equal(comptime Type: type, lhs: Type, rhs: Type) @TypeOf(lhs == rhs) {
5335inline fn equal(comptime Type: type, lhs: Type, rhs: Type) ChangeScalar(Type, bool) {
52905336 return lhs == rhs;
52915337}
52925338test equal {
......@@ -5297,7 +5343,7 @@ test equal {
52975343 try test_equal.testFloatVectors();
52985344}
52995345
5300inline fn notEqual(comptime Type: type, lhs: Type, rhs: Type) @TypeOf(lhs != rhs) {
5346inline fn notEqual(comptime Type: type, lhs: Type, rhs: Type) ChangeScalar(Type, bool) {
53015347 return lhs != rhs;
53025348}
53035349test notEqual {
......@@ -5308,7 +5354,7 @@ test notEqual {
53085354 try test_not_equal.testFloatVectors();
53095355}
53105356
5311inline fn lessThan(comptime Type: type, lhs: Type, rhs: Type) @TypeOf(lhs < rhs) {
5357inline fn lessThan(comptime Type: type, lhs: Type, rhs: Type) ChangeScalar(Type, bool) {
53125358 return lhs < rhs;
53135359}
53145360test lessThan {
......@@ -5319,7 +5365,7 @@ test lessThan {
53195365 try test_less_than.testFloatVectors();
53205366}
53215367
5322inline fn lessThanOrEqual(comptime Type: type, lhs: Type, rhs: Type) @TypeOf(lhs <= rhs) {
5368inline fn lessThanOrEqual(comptime Type: type, lhs: Type, rhs: Type) ChangeScalar(Type, bool) {
53235369 return lhs <= rhs;
53245370}
53255371test lessThanOrEqual {
......@@ -5330,7 +5376,7 @@ test lessThanOrEqual {
53305376 try test_less_than_or_equal.testFloatVectors();
53315377}
53325378
5333inline fn greaterThan(comptime Type: type, lhs: Type, rhs: Type) @TypeOf(lhs > rhs) {
5379inline fn greaterThan(comptime Type: type, lhs: Type, rhs: Type) ChangeScalar(Type, bool) {
53345380 return lhs > rhs;
53355381}
53365382test greaterThan {
......@@ -5341,7 +5387,7 @@ test greaterThan {
53415387 try test_greater_than.testFloatVectors();
53425388}
53435389
5344inline fn greaterThanOrEqual(comptime Type: type, lhs: Type, rhs: Type) @TypeOf(lhs >= rhs) {
5390inline fn greaterThanOrEqual(comptime Type: type, lhs: Type, rhs: Type) ChangeScalar(Type, bool) {
53455391 return lhs >= rhs;
53465392}
53475393test greaterThanOrEqual {
......@@ -5352,20 +5398,24 @@ test greaterThanOrEqual {
53525398 try test_greater_than_or_equal.testFloatVectors();
53535399}
53545400
5355inline fn bitAnd(comptime Type: type, lhs: Type, rhs: Type) @TypeOf(lhs & rhs) {
5401inline fn bitAnd(comptime Type: type, lhs: Type, rhs: Type) Type {
53565402 return lhs & rhs;
53575403}
53585404test bitAnd {
53595405 const test_bit_and = binary(bitAnd, .{});
5406 try test_bit_and.testBools();
5407 try test_bit_and.testBoolVectors();
53605408 try test_bit_and.testInts();
53615409 try test_bit_and.testIntVectors();
53625410}
53635411
5364inline fn bitOr(comptime Type: type, lhs: Type, rhs: Type) @TypeOf(lhs | rhs) {
5412inline fn bitOr(comptime Type: type, lhs: Type, rhs: Type) Type {
53655413 return lhs | rhs;
53665414}
53675415test bitOr {
53685416 const test_bit_or = binary(bitOr, .{});
5417 try test_bit_or.testBools();
5418 try test_bit_or.testBoolVectors();
53695419 try test_bit_or.testInts();
53705420 try test_bit_or.testIntVectors();
53715421}
......@@ -5417,7 +5467,7 @@ test shlExactUnsafe {
54175467 try test_shl_exact_unsafe.testIntVectors();
54185468}
54195469
5420inline fn shlSat(comptime Type: type, lhs: Type, rhs: Type) Type {
5470inline fn shlSaturate(comptime Type: type, lhs: Type, rhs: Type) Type {
54215471 // workaround https://github.com/ziglang/zig/issues/23034
54225472 if (@inComptime()) {
54235473 // workaround https://github.com/ziglang/zig/issues/23139
......@@ -5427,17 +5477,19 @@ inline fn shlSat(comptime Type: type, lhs: Type, rhs: Type) Type {
54275477 @setRuntimeSafety(false);
54285478 return lhs <<| @abs(rhs);
54295479}
5430test shlSat {
5431 const test_shl_sat = binary(shlSat, .{});
5432 try test_shl_sat.testInts();
5433 try test_shl_sat.testIntVectors();
5480test shlSaturate {
5481 const test_shl_saturate = binary(shlSaturate, .{});
5482 try test_shl_saturate.testInts();
5483 try test_shl_saturate.testIntVectors();
54345484}
54355485
5436inline fn bitXor(comptime Type: type, lhs: Type, rhs: Type) @TypeOf(lhs ^ rhs) {
5486inline fn bitXor(comptime Type: type, lhs: Type, rhs: Type) Type {
54375487 return lhs ^ rhs;
54385488}
54395489test bitXor {
54405490 const test_bit_xor = binary(bitXor, .{});
5491 try test_bit_xor.testBools();
5492 try test_bit_xor.testBoolVectors();
54415493 try test_bit_xor.testInts();
54425494 try test_bit_xor.testIntVectors();
54435495}
......@@ -5516,7 +5568,7 @@ test reduceXorNotEqual {
55165568 try test_reduce_xor_not_equal.testFloatVectors();
55175569}
55185570
5519inline fn mulAdd(comptime Type: type, lhs: Type, rhs: Type) @TypeOf(@mulAdd(Type, lhs, rhs, rhs)) {
5571inline fn mulAdd(comptime Type: type, lhs: Type, rhs: Type) Type {
55205572 return @mulAdd(Type, lhs, rhs, rhs);
55215573}
55225574test mulAdd {
test/behavior/x86_64/build.zig+48-4
......@@ -113,8 +113,54 @@ pub fn build(b: *std.Build) void {
113113 .cpu_arch = .x86_64,
114114 .cpu_model = .{ .explicit = &std.Target.x86.cpu.x86_64_v4 },
115115 },
116
117 .{
118 .cpu_arch = .x86_64,
119 .cpu_model = .{ .explicit = &std.Target.x86.cpu.x86_64 },
120 .os_tag = .windows,
121 .abi = .none,
122 },
123 .{
124 .cpu_arch = .x86_64,
125 .cpu_model = .{ .explicit = &std.Target.x86.cpu.x86_64 },
126 .cpu_features_add = std.Target.x86.featureSet(&.{.ssse3}),
127 .os_tag = .windows,
128 .abi = .none,
129 },
130 .{
131 .cpu_arch = .x86_64,
132 .cpu_model = .{ .explicit = &std.Target.x86.cpu.x86_64_v2 },
133 .os_tag = .windows,
134 .abi = .none,
135 },
136 .{
137 .cpu_arch = .x86_64,
138 .cpu_model = .{ .explicit = &std.Target.x86.cpu.x86_64_v3 },
139 .os_tag = .windows,
140 .abi = .none,
141 },
142
143 .{
144 .cpu_arch = .x86_64,
145 .cpu_model = .{ .explicit = &std.Target.x86.cpu.x86_64 },
146 .os_tag = .windows,
147 .abi = .gnu,
148 },
149 .{
150 .cpu_arch = .x86_64,
151 .cpu_model = .{ .explicit = &std.Target.x86.cpu.x86_64_v2 },
152 .os_tag = .windows,
153 .abi = .gnu,
154 },
155 .{
156 .cpu_arch = .x86_64,
157 .cpu_model = .{ .explicit = &std.Target.x86.cpu.x86_64_v3 },
158 .os_tag = .windows,
159 .abi = .gnu,
160 },
116161 }) |query| {
117162 const target = b.resolveTargetQuery(query);
163 const triple = query.zigTriple(b.allocator) catch @panic("OOM");
118164 const cpu = query.serializeCpuAlloc(b.allocator) catch @panic("OOM");
119165 for ([_][]const u8{
120166 "access.zig",
......@@ -133,16 +179,14 @@ pub fn build(b: *std.Build) void {
133179 .use_lld = false,
134180 .root_module = test_mod,
135181 });
182 test_exe.step.name = b.fmt("{s} {s}", .{ test_exe.step.name, cpu });
136183 if (!target.result.cpu.has(.x86, .sse2)) {
137184 test_exe.bundle_compiler_rt = false;
138185 test_mod.linkLibrary(compiler_rt_lib);
139186 }
140187 const test_run = b.addRunArtifact(test_exe);
188 test_run.step.name = b.fmt("{s} {s} {s}", .{ test_run.step.name, triple, cpu });
141189 b.default_step.dependOn(&test_run.step);
142 for ([_]*std.Build.Step{
143 &test_exe.step,
144 &test_run.step,
145 }) |step| step.name = b.fmt("{s} {s}", .{ step.name, cpu });
146190 }
147191 }
148192}
test/behavior/x86_64/cast.zig+16-5
......@@ -14546,13 +14546,24 @@ test floatCast {
1454614546 try test_float_cast.testFloatVectors();
1454714547}
1454814548
14549inline fn intFromFloat(comptime Result: type, comptime Type: type, rhs: Type, comptime _: Type) Result {
14549inline fn intFromFloatUnsafe(comptime Result: type, comptime Type: type, rhs: Type, comptime _: Type) Result {
14550 @setRuntimeSafety(false);
1455014551 return @intFromFloat(rhs);
1455114552}
14552test intFromFloat {
14553 const test_int_from_float = cast(intFromFloat, .{ .compare = .strict });
14554 try test_int_from_float.testIntsFromFloats();
14555 try test_int_from_float.testIntVectorsFromFloatVectors();
14553test intFromFloatUnsafe {
14554 const test_int_from_float_unsafe = cast(intFromFloatUnsafe, .{ .compare = .strict });
14555 try test_int_from_float_unsafe.testIntsFromFloats();
14556 try test_int_from_float_unsafe.testIntVectorsFromFloatVectors();
14557}
14558
14559inline fn intFromFloatSafe(comptime Result: type, comptime Type: type, rhs: Type, comptime _: Type) Result {
14560 @setRuntimeSafety(true);
14561 return @intFromFloat(rhs);
14562}
14563test intFromFloatSafe {
14564 const test_int_from_float_safe = cast(intFromFloatSafe, .{ .compare = .strict });
14565 try test_int_from_float_safe.testIntsFromFloats();
14566 try test_int_from_float_safe.testIntVectorsFromFloatVectors();
1455614567}
1455714568
1455814569inline fn floatFromInt(comptime Result: type, comptime Type: type, rhs: Type, comptime _: Type) Result {
test/behavior/x86_64/math.zig+31-55
......@@ -35,10 +35,14 @@ pub fn ChangeScalar(comptime Type: type, comptime NewScalar: type) type {
3535 };
3636}
3737pub fn AsSignedness(comptime Type: type, comptime signedness: std.builtin.Signedness) type {
38 return ChangeScalar(Type, @Type(.{ .int = .{
39 .signedness = signedness,
40 .bits = @typeInfo(Scalar(Type)).int.bits,
41 } }));
38 return switch (@typeInfo(Scalar(Type))) {
39 .int => |int| ChangeScalar(Type, @Type(.{ .int = .{
40 .signedness = signedness,
41 .bits = int.bits,
42 } })),
43 .float => Type,
44 else => @compileError(@typeName(Type)),
45 };
4246}
4347pub fn AddOneBit(comptime Type: type) type {
4448 return ChangeScalar(Type, switch (@typeInfo(Scalar(Type))) {
......@@ -56,7 +60,10 @@ pub fn DoubleBits(comptime Type: type) type {
5660}
5761pub fn RoundBitsUp(comptime Type: type, comptime multiple: u16) type {
5862 return ChangeScalar(Type, switch (@typeInfo(Scalar(Type))) {
59 .int => |int| @Type(.{ .int = .{ .signedness = int.signedness, .bits = std.mem.alignForward(u16, int.bits, multiple) } }),
63 .int => |int| @Type(.{ .int = .{
64 .signedness = int.signedness,
65 .bits = std.mem.alignForward(u16, int.bits, multiple),
66 } }),
6067 .float => Scalar(Type),
6168 else => @compileError(@typeName(Type)),
6269 });
......@@ -67,61 +74,30 @@ pub fn Log2Int(comptime Type: type) type {
6774pub fn Log2IntCeil(comptime Type: type) type {
6875 return ChangeScalar(Type, math.Log2IntCeil(Scalar(Type)));
6976}
70// inline to avoid a runtime `@splat`
71pub inline fn splat(comptime Type: type, scalar: Scalar(Type)) Type {
77pub fn splat(comptime Type: type, scalar: Scalar(Type)) Type {
7278 return switch (@typeInfo(Type)) {
7379 else => scalar,
7480 .vector => @splat(scalar),
7581 };
7682}
77// inline to avoid a runtime `@select`
78inline fn select(cond: anytype, lhs: anytype, rhs: @TypeOf(lhs)) @TypeOf(lhs) {
83pub fn sign(rhs: anytype) ChangeScalar(@TypeOf(rhs), bool) {
84 const Int = ChangeScalar(@TypeOf(rhs), switch (@typeInfo(Scalar(@TypeOf(rhs)))) {
85 .int, .comptime_int => Scalar(@TypeOf(rhs)),
86 .float => |float| @Type(.{ .int = .{
87 .signedness = .signed,
88 .bits = float.bits,
89 } }),
90 else => @compileError(@typeName(@TypeOf(rhs))),
91 });
92 return @as(Int, @bitCast(rhs)) < splat(Int, 0);
93}
94pub fn select(cond: anytype, lhs: anytype, rhs: @TypeOf(lhs)) @TypeOf(lhs) {
7995 return switch (@typeInfo(@TypeOf(cond))) {
8096 .bool => if (cond) lhs else rhs,
8197 .vector => @select(Scalar(@TypeOf(lhs)), cond, lhs, rhs),
8298 else => @compileError(@typeName(@TypeOf(cond))),
8399 };
84100}
85pub fn sign(rhs: anytype) ChangeScalar(@TypeOf(rhs), bool) {
86 const ScalarInt = @Type(.{ .int = .{
87 .signedness = .unsigned,
88 .bits = @bitSizeOf(Scalar(@TypeOf(rhs))),
89 } });
90 const VectorInt = ChangeScalar(@TypeOf(rhs), ScalarInt);
91 return @as(VectorInt, @bitCast(rhs)) & splat(VectorInt, @as(ScalarInt, 1) << @bitSizeOf(ScalarInt) - 1) != splat(VectorInt, 0);
92}
93fn boolAnd(lhs: anytype, rhs: @TypeOf(lhs)) @TypeOf(lhs) {
94 switch (@typeInfo(@TypeOf(lhs))) {
95 .bool => return lhs and rhs,
96 .vector => |vector| switch (vector.child) {
97 bool => {
98 const Bits = @Type(.{ .int = .{ .signedness = .unsigned, .bits = vector.len } });
99 const lhs_bits: Bits = @bitCast(lhs);
100 const rhs_bits: Bits = @bitCast(rhs);
101 return @bitCast(lhs_bits & rhs_bits);
102 },
103 else => {},
104 },
105 else => {},
106 }
107 @compileError("unsupported boolAnd type: " ++ @typeName(@TypeOf(lhs)));
108}
109fn boolOr(lhs: anytype, rhs: @TypeOf(lhs)) @TypeOf(lhs) {
110 switch (@typeInfo(@TypeOf(lhs))) {
111 .bool => return lhs or rhs,
112 .vector => |vector| switch (vector.child) {
113 bool => {
114 const Bits = @Type(.{ .int = .{ .signedness = .unsigned, .bits = vector.len } });
115 const lhs_bits: Bits = @bitCast(lhs);
116 const rhs_bits: Bits = @bitCast(rhs);
117 return @bitCast(lhs_bits | rhs_bits);
118 },
119 else => {},
120 },
121 else => {},
122 }
123 @compileError("unsupported boolOr type: " ++ @typeName(@TypeOf(lhs)));
124}
125101
126102pub const Compare = enum { strict, relaxed, approx, approx_int, approx_or_overflow };
127103// noinline for a more helpful stack trace
......@@ -131,9 +107,9 @@ pub noinline fn checkExpected(expected: anytype, actual: @TypeOf(expected), comp
131107 else => expected != actual,
132108 .float => switch (compare) {
133109 .strict, .relaxed => {
134 const unequal = boolAnd(expected != actual, boolOr(expected == expected, actual == actual));
110 const unequal = (expected != actual) & ((expected == expected) | (actual == actual));
135111 break :unexpected switch (compare) {
136 .strict => boolOr(unequal, sign(expected) != sign(actual)),
112 .strict => unequal | (sign(expected) != sign(actual)),
137113 .relaxed => unequal,
138114 .approx, .approx_int, .approx_or_overflow => comptime unreachable,
139115 };
......@@ -156,10 +132,10 @@ pub noinline fn checkExpected(expected: anytype, actual: @TypeOf(expected), comp
156132 break :unexpected switch (compare) {
157133 .strict, .relaxed => comptime unreachable,
158134 .approx, .approx_int => approx_unequal,
159 .approx_or_overflow => boolAnd(approx_unequal, boolOr(boolAnd(
160 @abs(expected) != splat(Expected, inf(Expected)),
161 @abs(actual) != splat(Expected, inf(Expected)),
162 ), sign(expected) != sign(actual))),
135 .approx_or_overflow => approx_unequal &
136 (((@abs(expected) != splat(Expected, inf(Expected))) &
137 (@abs(actual) != splat(Expected, inf(Expected)))) |
138 (sign(expected) != sign(actual))),
163139 };
164140 },
165141 },
test/behavior/x86_64/unary.zig+61-40
......@@ -1,9 +1,11 @@
1const AsSignedness = math.AsSignedness;
12const checkExpected = math.checkExpected;
23const Compare = math.Compare;
34const fmax = math.fmax;
45const fmin = math.fmin;
56const Gpr = math.Gpr;
67const inf = math.inf;
8const Log2IntCeil = math.Log2IntCeil;
79const math = @import("math.zig");
810const nan = math.nan;
911const RoundBitsUp = math.RoundBitsUp;
......@@ -56,6 +58,10 @@ fn unary(comptime op: anytype, comptime opts: struct {
5658 f128 => libc_name ++ "q",
5759 else => break :libc,
5860 },
61 .library_name = switch (@import("builtin").object_format) {
62 else => null,
63 .coff => "compiler_rt",
64 },
5965 });
6066 switch (@typeInfo(Type)) {
6167 else => break :expected libc_func(imm_arg),
......@@ -98,6 +104,10 @@ fn unary(comptime op: anytype, comptime opts: struct {
98104 imm_arg,
99105 );
100106 }
107 fn testBools() !void {
108 try testArgs(bool, false);
109 try testArgs(bool, true);
110 }
101111 fn testIntTypes() !void {
102112 try testArgs(i1, undefined);
103113 try testArgs(u1, undefined);
......@@ -4804,16 +4814,27 @@ fn unary(comptime op: anytype, comptime opts: struct {
48044814 };
48054815}
48064816
4807inline fn bitNot(comptime Type: type, rhs: Type) @TypeOf(~rhs) {
4817inline fn boolNot(comptime Type: type, rhs: Type) Type {
4818 return !rhs;
4819}
4820test boolNot {
4821 const test_bool_not = unary(boolNot, .{});
4822 try test_bool_not.testBools();
4823 try test_bool_not.testBoolVectors();
4824}
4825
4826inline fn bitNot(comptime Type: type, rhs: Type) Type {
48084827 return ~rhs;
48094828}
48104829test bitNot {
48114830 const test_bit_not = unary(bitNot, .{});
4831 try test_bit_not.testBools();
4832 try test_bit_not.testBoolVectors();
48124833 try test_bit_not.testInts();
48134834 try test_bit_not.testIntVectors();
48144835}
48154836
4816inline fn clz(comptime Type: type, rhs: Type) @TypeOf(@clz(rhs)) {
4837inline fn clz(comptime Type: type, rhs: Type) Log2IntCeil(Type) {
48174838 return @clz(rhs);
48184839}
48194840test clz {
......@@ -4822,7 +4843,7 @@ test clz {
48224843 try test_clz.testIntVectors();
48234844}
48244845
4825inline fn ctz(comptime Type: type, rhs: Type) @TypeOf(@ctz(rhs)) {
4846inline fn ctz(comptime Type: type, rhs: Type) Log2IntCeil(Type) {
48264847 return @ctz(rhs);
48274848}
48284849test ctz {
......@@ -4831,7 +4852,7 @@ test ctz {
48314852 try test_ctz.testIntVectors();
48324853}
48334854
4834inline fn popCount(comptime Type: type, rhs: Type) @TypeOf(@popCount(rhs)) {
4855inline fn popCount(comptime Type: type, rhs: Type) Log2IntCeil(Type) {
48354856 return @popCount(rhs);
48364857}
48374858test popCount {
......@@ -4849,7 +4870,7 @@ test byteSwap {
48494870 try test_byte_swap.testIntVectors();
48504871}
48514872
4852inline fn bitReverse(comptime Type: type, rhs: Type) @TypeOf(@bitReverse(rhs)) {
4873inline fn bitReverse(comptime Type: type, rhs: Type) Type {
48534874 return @bitReverse(rhs);
48544875}
48554876test bitReverse {
......@@ -4858,7 +4879,7 @@ test bitReverse {
48584879 try test_bit_reverse.testIntVectors();
48594880}
48604881
4861inline fn sqrt(comptime Type: type, rhs: Type) @TypeOf(@sqrt(rhs)) {
4882inline fn sqrt(comptime Type: type, rhs: Type) Type {
48624883 return @sqrt(rhs);
48634884}
48644885test sqrt {
......@@ -4867,7 +4888,7 @@ test sqrt {
48674888 try test_sqrt.testFloatVectors();
48684889}
48694890
4870inline fn sin(comptime Type: type, rhs: Type) @TypeOf(@sin(rhs)) {
4891inline fn sin(comptime Type: type, rhs: Type) Type {
48714892 return @sin(rhs);
48724893}
48734894test sin {
......@@ -4876,7 +4897,7 @@ test sin {
48764897 try test_sin.testFloatVectors();
48774898}
48784899
4879inline fn cos(comptime Type: type, rhs: Type) @TypeOf(@cos(rhs)) {
4900inline fn cos(comptime Type: type, rhs: Type) Type {
48804901 return @cos(rhs);
48814902}
48824903test cos {
......@@ -4885,7 +4906,7 @@ test cos {
48854906 try test_cos.testFloatVectors();
48864907}
48874908
4888inline fn tan(comptime Type: type, rhs: Type) @TypeOf(@tan(rhs)) {
4909inline fn tan(comptime Type: type, rhs: Type) Type {
48894910 return @tan(rhs);
48904911}
48914912test tan {
......@@ -4894,7 +4915,7 @@ test tan {
48944915 try test_tan.testFloatVectors();
48954916}
48964917
4897inline fn exp(comptime Type: type, rhs: Type) @TypeOf(@exp(rhs)) {
4918inline fn exp(comptime Type: type, rhs: Type) Type {
48984919 return @exp(rhs);
48994920}
49004921test exp {
......@@ -4903,7 +4924,7 @@ test exp {
49034924 try test_exp.testFloatVectors();
49044925}
49054926
4906inline fn exp2(comptime Type: type, rhs: Type) @TypeOf(@exp2(rhs)) {
4927inline fn exp2(comptime Type: type, rhs: Type) Type {
49074928 return @exp2(rhs);
49084929}
49094930test exp2 {
......@@ -4912,7 +4933,7 @@ test exp2 {
49124933 try test_exp2.testFloatVectors();
49134934}
49144935
4915inline fn log(comptime Type: type, rhs: Type) @TypeOf(@log(rhs)) {
4936inline fn log(comptime Type: type, rhs: Type) Type {
49164937 return @log(rhs);
49174938}
49184939test log {
......@@ -4921,7 +4942,7 @@ test log {
49214942 try test_log.testFloatVectors();
49224943}
49234944
4924inline fn log2(comptime Type: type, rhs: Type) @TypeOf(@log2(rhs)) {
4945inline fn log2(comptime Type: type, rhs: Type) Type {
49254946 return @log2(rhs);
49264947}
49274948test log2 {
......@@ -4930,7 +4951,7 @@ test log2 {
49304951 try test_log2.testFloatVectors();
49314952}
49324953
4933inline fn log10(comptime Type: type, rhs: Type) @TypeOf(@log10(rhs)) {
4954inline fn log10(comptime Type: type, rhs: Type) Type {
49344955 return @log10(rhs);
49354956}
49364957test log10 {
......@@ -4939,7 +4960,7 @@ test log10 {
49394960 try test_log10.testFloatVectors();
49404961}
49414962
4942inline fn abs(comptime Type: type, rhs: Type) @TypeOf(@abs(rhs)) {
4963inline fn abs(comptime Type: type, rhs: Type) AsSignedness(Type, .unsigned) {
49434964 return @abs(rhs);
49444965}
49454966test abs {
......@@ -4950,7 +4971,7 @@ test abs {
49504971 try test_abs.testFloatVectors();
49514972}
49524973
4953inline fn floor(comptime Type: type, rhs: Type) @TypeOf(@floor(rhs)) {
4974inline fn floor(comptime Type: type, rhs: Type) Type {
49544975 return @floor(rhs);
49554976}
49564977test floor {
......@@ -4959,7 +4980,7 @@ test floor {
49594980 try test_floor.testFloatVectors();
49604981}
49614982
4962inline fn ceil(comptime Type: type, rhs: Type) @TypeOf(@ceil(rhs)) {
4983inline fn ceil(comptime Type: type, rhs: Type) Type {
49634984 return @ceil(rhs);
49644985}
49654986test ceil {
......@@ -4968,7 +4989,7 @@ test ceil {
49684989 try test_ceil.testFloatVectors();
49694990}
49704991
4971inline fn round(comptime Type: type, rhs: Type) @TypeOf(@round(rhs)) {
4992inline fn round(comptime Type: type, rhs: Type) Type {
49724993 return @round(rhs);
49734994}
49744995test round {
......@@ -4977,7 +4998,7 @@ test round {
49774998 try test_round.testFloatVectors();
49784999}
49795000
4980inline fn trunc(comptime Type: type, rhs: Type) @TypeOf(@trunc(rhs)) {
5001inline fn trunc(comptime Type: type, rhs: Type) Type {
49815002 return @trunc(rhs);
49825003}
49835004test trunc {
......@@ -4986,7 +5007,7 @@ test trunc {
49865007 try test_trunc.testFloatVectors();
49875008}
49885009
4989inline fn negate(comptime Type: type, rhs: Type) @TypeOf(-rhs) {
5010inline fn negate(comptime Type: type, rhs: Type) Type {
49905011 return -rhs;
49915012}
49925013test negate {
......@@ -5098,40 +5119,40 @@ test reduceXor {
50985119 try test_reduce_xor.testIntVectors();
50995120}
51005121
5101inline fn reduceMin(comptime Type: type, rhs: Type) @typeInfo(Type).vector.child {
5122inline fn reduceMinUnoptimized(comptime Type: type, rhs: Type) @typeInfo(Type).vector.child {
51025123 return @reduce(.Min, rhs);
51035124}
5104test reduceMin {
5105 const test_reduce_min = unary(reduceMin, .{});
5106 try test_reduce_min.testIntVectors();
5107 try test_reduce_min.testFloatVectors();
5125test reduceMinUnoptimized {
5126 const test_reduce_min_unoptimized = unary(reduceMinUnoptimized, .{});
5127 try test_reduce_min_unoptimized.testIntVectors();
5128 try test_reduce_min_unoptimized.testFloatVectors();
51085129}
51095130
5110inline fn reduceMax(comptime Type: type, rhs: Type) @typeInfo(Type).vector.child {
5131inline fn reduceMaxUnoptimized(comptime Type: type, rhs: Type) @typeInfo(Type).vector.child {
51115132 return @reduce(.Max, rhs);
51125133}
5113test reduceMax {
5114 const test_reduce_max = unary(reduceMax, .{});
5115 try test_reduce_max.testIntVectors();
5116 try test_reduce_max.testFloatVectors();
5134test reduceMaxUnoptimized {
5135 const test_reduce_max_unoptimized = unary(reduceMaxUnoptimized, .{});
5136 try test_reduce_max_unoptimized.testIntVectors();
5137 try test_reduce_max_unoptimized.testFloatVectors();
51175138}
51185139
5119inline fn reduceAdd(comptime Type: type, rhs: Type) @typeInfo(Type).vector.child {
5140inline fn reduceAddUnoptimized(comptime Type: type, rhs: Type) @typeInfo(Type).vector.child {
51205141 return @reduce(.Add, rhs);
51215142}
5122test reduceAdd {
5123 const test_reduce_add = unary(reduceAdd, .{});
5124 try test_reduce_add.testIntVectors();
5125 try test_reduce_add.testFloatVectors();
5143test reduceAddUnoptimized {
5144 const test_reduce_add_unoptimized = unary(reduceAddUnoptimized, .{});
5145 try test_reduce_add_unoptimized.testIntVectors();
5146 try test_reduce_add_unoptimized.testFloatVectors();
51265147}
51275148
5128inline fn reduceMul(comptime Type: type, rhs: Type) @typeInfo(Type).vector.child {
5149inline fn reduceMulUnoptimized(comptime Type: type, rhs: Type) @typeInfo(Type).vector.child {
51295150 return @reduce(.Mul, rhs);
51305151}
5131test reduceMul {
5132 const test_reduce_mul = unary(reduceMul, .{});
5133 try test_reduce_mul.testIntVectors();
5134 try test_reduce_mul.testFloatVectors();
5152test reduceMulUnoptimized {
5153 const test_reduce_mul_unoptimized = unary(reduceMulUnoptimized, .{});
5154 try test_reduce_mul_unoptimized.testIntVectors();
5155 try test_reduce_mul_unoptimized.testFloatVectors();
51355156}
51365157
51375158inline fn reduceMinOptimized(comptime Type: type, rhs: Type) @typeInfo(Type).vector.child {
test/link/link.zig+1-1
......@@ -13,7 +13,7 @@ pub const Options = struct {
1313};
1414
1515pub fn addTestStep(b: *Build, prefix: []const u8, opts: Options) *Step {
16 const target = opts.target.result.zigTriple(b.allocator) catch @panic("OOM");
16 const target = opts.target.query.zigTriple(b.allocator) catch @panic("OOM");
1717 const optimize = @tagName(opts.optimize);
1818 const use_llvm = if (opts.use_llvm) "llvm" else "no-llvm";
1919 const use_lld = if (opts.use_lld) "lld" else "no-lld";
test/link/macho.zig+1-1
......@@ -864,7 +864,7 @@ fn testLayout(b: *Build, opts: Options) *Step {
864864fn testLinkDirectlyCppTbd(b: *Build, opts: Options) *Step {
865865 const test_step = addTestStep(b, "link-directly-cpp-tbd", opts);
866866
867 const sdk = std.zig.system.darwin.getSdk(b.allocator, opts.target.result) orelse
867 const sdk = std.zig.system.darwin.getSdk(b.allocator, &opts.target.result) orelse
868868 @panic("macOS SDK is required to run the test");
869869
870870 const exe = addExecutable(b, opts, .{
test/src/Cases.zig+3-3
......@@ -433,7 +433,7 @@ fn addFromDirInner(
433433 // Cross-product to get all possible test combinations
434434 for (targets) |target_query| {
435435 const resolved_target = b.resolveTargetQuery(target_query);
436 const target = resolved_target.result;
436 const target = &resolved_target.result;
437437 for (backends) |backend| {
438438 if (backend == .stage2 and
439439 target.cpu.arch != .wasm32 and target.cpu.arch != .x86_64 and target.cpu.arch != .spirv64)
......@@ -610,7 +610,7 @@ pub fn lowerToBuildSteps(
610610 if (std.mem.indexOf(u8, case.name, test_filter)) |_| break;
611611 } else if (test_filters.len > 0) continue;
612612
613 const triple_txt = case.target.result.zigTriple(b.allocator) catch @panic("OOM");
613 const triple_txt = case.target.query.zigTriple(b.allocator) catch @panic("OOM");
614614
615615 if (test_target_filters.len > 0) {
616616 for (test_target_filters) |filter| {
......@@ -708,7 +708,7 @@ pub fn lowerToBuildSteps(
708708 },
709709 .Execution => |expected_stdout| no_exec: {
710710 const run = if (case.target.result.ofmt == .c) run_step: {
711 if (getExternalExecutor(host, &case.target.result, .{ .link_libc = true }) != .native) {
711 if (getExternalExecutor(&host, &case.target.result, .{ .link_libc = true }) != .native) {
712712 // We wouldn't be able to run the compiled C code.
713713 break :no_exec;
714714 }
test/src/Debugger.zig+5-5
......@@ -21,7 +21,7 @@ pub const Target = struct {
2121 test_name_suffix: []const u8,
2222};
2323
24pub fn addTestsForTarget(db: *Debugger, target: Target) void {
24pub fn addTestsForTarget(db: *Debugger, target: *const Target) void {
2525 db.addLldbTest(
2626 "basic",
2727 target,
......@@ -2376,7 +2376,7 @@ const File = struct { import: ?[]const u8 = null, path: []const u8, source: []co
23762376fn addGdbTest(
23772377 db: *Debugger,
23782378 name: []const u8,
2379 target: Target,
2379 target: *const Target,
23802380 files: []const File,
23812381 commands: []const u8,
23822382 expected_output: []const []const u8,
......@@ -2402,7 +2402,7 @@ fn addGdbTest(
24022402fn addLldbTest(
24032403 db: *Debugger,
24042404 name: []const u8,
2405 target: Target,
2405 target: *const Target,
24062406 files: []const File,
24072407 commands: []const u8,
24082408 expected_output: []const []const u8,
......@@ -2433,7 +2433,7 @@ const success = 99;
24332433fn addTest(
24342434 db: *Debugger,
24352435 name: []const u8,
2436 target: Target,
2436 target: *const Target,
24372437 files: []const File,
24382438 db_argv1: []const []const u8,
24392439 db_commands: []const u8,
......@@ -2447,7 +2447,7 @@ fn addTest(
24472447 } else return;
24482448 }
24492449 if (db.options.test_target_filters.len > 0) {
2450 const triple_txt = target.resolved.result.zigTriple(db.b.allocator) catch @panic("OOM");
2450 const triple_txt = target.resolved.query.zigTriple(db.b.allocator) catch @panic("OOM");
24512451 for (db.options.test_target_filters) |filter| {
24522452 if (std.mem.indexOf(u8, triple_txt, filter) != null) break;
24532453 } else return;
test/src/LlvmIr.zig+1-1
......@@ -75,7 +75,7 @@ pub fn addExact(
7575pub fn addCase(self: *LlvmIr, case: TestCase) void {
7676 const target = self.b.resolveTargetQuery(case.params.target);
7777 if (self.options.test_target_filters.len > 0) {
78 const triple_txt = target.result.zigTriple(self.b.allocator) catch @panic("OOM");
78 const triple_txt = target.query.zigTriple(self.b.allocator) catch @panic("OOM");
7979 for (self.options.test_target_filters) |filter| {
8080 if (std.mem.indexOf(u8, triple_txt, filter) != null) break;
8181 } else return;
test/src/StackTrace.zig+2-2
......@@ -22,7 +22,7 @@ const Config = struct {
2222
2323pub fn addCase(self: *StackTrace, config: Config) void {
2424 self.addCaseInner(config, true);
25 if (shouldTestNonLlvm(self.b.graph.host.result)) {
25 if (shouldTestNonLlvm(&self.b.graph.host.result)) {
2626 self.addCaseInner(config, false);
2727 }
2828}
......@@ -41,7 +41,7 @@ fn addCaseInner(self: *StackTrace, config: Config, use_llvm: bool) void {
4141 self.addExpect(config.name, config.source, .ReleaseSafe, use_llvm, per_mode);
4242}
4343
44fn shouldTestNonLlvm(target: std.Target) bool {
44fn shouldTestNonLlvm(target: *const std.Target) bool {
4545 return switch (target.cpu.arch) {
4646 .x86_64 => switch (target.ofmt) {
4747 .elf => true,
test/src/TranslateC.zig+1-1
......@@ -96,7 +96,7 @@ pub fn addCase(self: *TranslateCContext, case: *const TestCase) void {
9696 const target = b.resolveTargetQuery(case.target);
9797
9898 if (self.test_target_filters.len > 0) {
99 const triple_txt = target.result.zigTriple(b.allocator) catch @panic("OOM");
99 const triple_txt = target.query.zigTriple(b.allocator) catch @panic("OOM");
100100
101101 for (self.test_target_filters) |filter| {
102102 if (std.mem.indexOf(u8, triple_txt, filter) != null) break;
test/standalone/ios/build.zig+1-1
......@@ -12,7 +12,7 @@ pub fn build(b: *std.Build) void {
1212 .cpu_arch = .aarch64,
1313 .os_tag = .ios,
1414 });
15 const sdk = std.zig.system.darwin.getSdk(b.allocator, target.result) orelse
15 const sdk = std.zig.system.darwin.getSdk(b.allocator, &target.result) orelse
1616 @panic("no iOS SDK found");
1717 b.sysroot = sdk;
1818
test/tests.zig+15-6
......@@ -1558,6 +1558,15 @@ const test_targets = blk: {
15581558 .use_llvm = false,
15591559 .use_lld = false,
15601560 },
1561 .{
1562 .target = .{
1563 .cpu_arch = .x86_64,
1564 .os_tag = .windows,
1565 .abi = .gnu,
1566 },
1567 .use_llvm = false,
1568 .use_lld = false,
1569 },
15611570 .{
15621571 .target = .{
15631572 .cpu_arch = .x86_64,
......@@ -2310,8 +2319,8 @@ pub fn addModuleTests(b: *std.Build, options: ModuleTestOptions) *Step {
23102319 if (options.skip_llvm and would_use_llvm) continue;
23112320
23122321 const resolved_target = b.resolveTargetQuery(test_target.target);
2313 const target = resolved_target.result;
2314 const triple_txt = target.zigTriple(b.allocator) catch @panic("OOM");
2322 const triple_txt = resolved_target.query.zigTriple(b.allocator) catch @panic("OOM");
2323 const target = &resolved_target.result;
23152324
23162325 if (options.test_target_filters.len > 0) {
23172326 for (options.test_target_filters) |filter| {
......@@ -2556,8 +2565,8 @@ pub fn addCAbiTests(b: *std.Build, options: CAbiTestOptions) *Step {
25562565 if (options.skip_llvm and would_use_llvm) continue;
25572566
25582567 const resolved_target = b.resolveTargetQuery(c_abi_target.target);
2559 const target = resolved_target.result;
2560 const triple_txt = target.zigTriple(b.allocator) catch @panic("OOM");
2568 const triple_txt = resolved_target.query.zigTriple(b.allocator) catch @panic("OOM");
2569 const target = &resolved_target.result;
25612570
25622571 if (options.test_target_filters.len > 0) {
25632572 for (options.test_target_filters) |filter| {
......@@ -2659,7 +2668,7 @@ pub fn addDebuggerTests(b: *std.Build, options: DebuggerContext.Options) ?*Step
26592668 .options = options,
26602669 .root_step = step,
26612670 };
2662 context.addTestsForTarget(.{
2671 context.addTestsForTarget(&.{
26632672 .resolved = b.resolveTargetQuery(.{
26642673 .cpu_arch = .x86_64,
26652674 .os_tag = .linux,
......@@ -2668,7 +2677,7 @@ pub fn addDebuggerTests(b: *std.Build, options: DebuggerContext.Options) ?*Step
26682677 .pic = false,
26692678 .test_name_suffix = "x86_64-linux",
26702679 });
2671 context.addTestsForTarget(.{
2680 context.addTestsForTarget(&.{
26722681 .resolved = b.resolveTargetQuery(.{
26732682 .cpu_arch = .x86_64,
26742683 .os_tag = .linux,
tools/doctest.zig+2-2
......@@ -317,7 +317,7 @@ fn printOutput(
317317 const target = try std.zig.system.resolveTargetQuery(
318318 target_query,
319319 );
320 switch (getExternalExecutor(host, &target, .{
320 switch (getExternalExecutor(&host, &target, .{
321321 .link_libc = code.link_libc,
322322 })) {
323323 .native => {},
......@@ -538,7 +538,7 @@ fn printOutput(
538538 .lib => {
539539 const bin_basename = try std.zig.binNameAlloc(arena, .{
540540 .root_name = code_name,
541 .target = builtin.target,
541 .target = &builtin.target,
542542 .output_mode = .Lib,
543543 });
544544
tools/incr-check.zig+2-2
......@@ -316,7 +316,7 @@ const Eval = struct {
316316
317317 const bin_name = try std.zig.EmitArtifact.bin.cacheName(arena, .{
318318 .root_name = "root", // corresponds to the module name "root"
319 .target = eval.target.resolved,
319 .target = &eval.target.resolved,
320320 .output_mode = .Exe,
321321 });
322322 const bin_path = try std.fs.path.join(arena, &.{ result_dir, bin_name });
......@@ -444,7 +444,7 @@ const Eval = struct {
444444
445445 var argv_buf: [2][]const u8 = undefined;
446446 const argv: []const []const u8, const is_foreign: bool = switch (std.zig.system.getExternalExecutor(
447 eval.host,
447 &eval.host,
448448 &eval.target.resolved,
449449 .{ .link_libc = eval.target.backend == .cbe },
450450 )) {